2015-02-10 2 views
9

Мне нужно получить сетевые события из Chrome. Я нашел это: https://developer.chrome.com/devtools/docs/debugger-protocol https://developer.chrome.com/devtools/docs/protocol/1.1/network#command-enableИспользование протокола удаленной отладки Google Chrome

кажется, что Chrome использует порт, чтобы получить сообщения, отвечать и отправлять события, для удаленной отладки. В нем говорится, что он использует JSON, поэтому я решил попробовать.

Итак, я написал простой Java-код, который открывает порт, который прослушивает хром (конечно, я начал его с помощью google-chrome --remote-debugging-port=9222 на моей машине ubuntu). У меня есть поток, который записывает в стандартный вывод все, исходящее из этого порта, а затем код записывает это в OutputStream сокета с помощью этой линии (образец метода из протокола):

out.println("{\"id\": 1,\"method\": \"Network.enable\"}"); 

Я бы ожидать какой-то ответ (согласно протоколу) во входном потоке, но ничего не происходит.

Кто-нибудь когда-нибудь делал что-то подобное? Я ничего не могу найти в сети.

ответ

9

Наконец-то я получил его. Кредит составляет https://www.igvita.com/2012/04/09/driving-google-chrome-via-websocket-api/.

Сначала отправлю HTTP-запрос на адрес http://localhost:9222/json. Это возвращает список JSON открытых вкладок в Chrome для каждого я также получить WebSocket URI (webSocketDebuggerUrl):

[ 
{ 
"description": "", 
"devtoolsFrontendUrl": "/devtools/devtools.html?ws=localhost:9222/devtools/page/C014A09F-BD0A-40BA-B23C-7B18B84942CD", 
"faviconUrl": "http://cdn.sstatic.net/stackoverflow/img/favicon.ico?v=00a326f96f68", 
"id": "C014A09F-BD0A-40BA-B23C-7B18B84942CD", 
"title": "Using Google Chrome remote debugging protocol - Stack Overflow", 
"type": "page", 
"url": "https://stackoverflow.com/questions/28430479/using-google-chrome-remote-debugging-protocol", 
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/C014A09F-BD0A-40BA-B23C-7B18B84942CD" 
} 
] 

Тогда я могу использовать WebSocket для отправки сообщений для отладки вкладки конкретной, используя этот URI. Я также нашел это для использования Jetty-реализации WebSocket: javax.websocket client simple example.

+2

Спасибо, человек! Вы настоящий MVP – reformy

Смежные вопросы