Используйте cUrl с удаленной отладкой Chrome - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь подключиться к удаленной отладке Chrome с помощью cUrl, однако ответы от Chrome возвращают «200 OK», но без данных.

Я установил Chrome с помощью:

chrome.exe --headless --remote-debugging-port=12345

Я могу успешно получить список страниц с:

>curl -i "http://localhost:12345/json"

HTTP/1.1 200 OK
Content-Length:612
Content-Type:application/json; charset=UTF-8
[ {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:12345/devtools/page/19d24d3a-25b7-4ee8-a5cf-4f3d17778575",
  ...
   "webSocketDebuggerUrl": "ws://localhost:12345/devtools/page/19d24d3a-25b7-4ee8-a5cf-4f3d17778575"
} ]

Однако я могу получить только пустой успешный ответ от URL отладчика:

>echo {"id":0,"method":"Page.navigate","params":{"url":"https://stackoverflow.com/"}}|curl -i "http://localhost:12345/devtools/page/19d24d3a-25b7-4ee8-a5cf-4f3d17778575" -H "Content-Type: application/json" -d -

HTTP/1.1 200 OK
Content-Length:0
Content-Type:text/plain

Команды, такие как Page.navigate, а также неправильно сформированныезапросы возвращают 200 OK но ничего не выполняется.

Чего мне не хватает ???

1 Ответ

0 голосов
/ 18 октября 2018

Вам нужно использовать веб-сокеты для управления Chrome.Цитирование chromedevtools.github.io :

Ваше приложение может обнаружить доступные страницы, запросив: http://localhost:9222/json и получив объект JSON с информацией о проверяемых страницах вместе сАдреса WebSocket, которые вы могли бы использовать, чтобы начать их инструктаж

Вот как это будет работать (по крайней мере, на моем Mac):

Запустите Chrome

docker pull deepsweet/chromium-headless-remote:69
docker run -it --rm -p 9222:9222 deepsweet/chromium-headless-remote:69

Выборка адресов WebSocket

curl -i "http://localhost:9222/json"
HTTP/1.1 200 OK
Content-Length:361
Content-Type:application/json; charset=UTF-8

[ {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/DC33B65CA373BE2770F2A1031C3B4CBF",
   "id": "DC33B65CA373BE2770F2A1031C3B4CBF",
   "title": "about:blank",
   "type": "page",
   "url": "about:blank",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/DC33B65CA373BE2770F2A1031C3B4CBF"
} ]

Отправка вашей команды

echo '{ "id":2, "method":"Page.navigate", "params":{"url": "http://www.stackoverflow.com"} }' | websocat -t - ws://localhost:9222/devtools/page/DC33B65CA373BE2770F2A1031C3B4CBF

websocat .Вы также можете написать простой скрипт для этого, например здесь

Убедитесь, что страница открыта

curl -i "http://localhost:9222/json"
HTTP/1.1 200 OK
Content-Length:432
Content-Type:application/json; charset=UTF-8

[ {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/DC33B65CA373BE2770F2A1031C3B4CBF",
   "id": "DC33B65CA373BE2770F2A1031C3B4CBF",
   "title": "Stack Overflow - Where Developers Learn, Share, & Build Careers",
   "type": "page",
   "url": "https://stackoverflow.com/",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/DC33B65CA373BE2770F2A1031C3B4CBF"
} ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...