Удаленная отладка Chrome не работает с IP

Я пытаюсь удаленно отладить экземпляр Chrome с помощью параметра удаленной отладки в Chrome:

chrome.exe --remote-debugging-port=1337

как описано на странице Google: http://code.google.com/chrome/devtools/docs/remote-debugging.html

проблема в том, что когда я пытаюсь получить к нему доступ по IP, он не работает, а при тестировании с localhost: 1337 действительно работает.

любая идея?


person Amir    schedule 26.07.2011    source источник
comment
порт открыт на windows? в противном случае вам нужно добавить правила брандмауэра Windows для этого порта!   -  person Azd325    schedule 26.07.2011
comment
webkit.org/blog/1620/webkit-remote-debugging   -  person Azd325    schedule 24.08.2011


Ответы (7)


Вы можете настроить SSH-туннель для удаленной отладки. На исходной машине выполните:

ssh -L 0.0.0.0:9223:localhost:9222 localhost -N 

Затем на другом компьютере укажите в браузере Chrome http://source-machine-ip. : 9223

person Adam V.    schedule 13.02.2012
comment
Спасибо! Это сработало для меня просто отлично. Мне никогда не удавалось использовать для этого netcat. - person Konrad Dzwinel; 05.09.2012
comment
Спасибо, именно то, что мне нужно, во второй раз (упоминалось в 15 августа), чтобы заставить два бокса GNU / Linux болтать для удаленной отладки. - person GJSmith3rd; 17.02.2016
comment
Вы также можете использовать флаг -R для перенаправления удаленного порта - person Dmitry Sharshakov; 12.04.2020
comment
Он не работает в последней версии. Chrome возвращает пустой ответ. - person Shashwat Kumar; 25.05.2021

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

person beefeather    schedule 26.07.2011
comment
потому что они созданы для мобильных устройств, которые можно отлаживать со своего рабочего стола, а не со смартфона. - person Azd325; 25.08.2011
comment
Какой ресурс порекомендовали бы для создания прокси? Я полагаю, что в большинстве случаев это больше проблем, чем пользы, но я думал об этом несколько раз за последние пару месяцев. - person Chris May; 19.01.2012
comment
Извини, Крис, у меня здесь нет рекомендаций. Я написал для себя Java с нуля, и вы, вероятно, тоже смогли бы. Я знаю, что некоторые разновидности утилиты 'nc' (netcat) уже поддерживают проксирование (не openbsd). - person beefeather; 22.01.2012
comment
Я мог бы порекомендовать Charles Web Debugging Proxy. - person izogfif; 21.03.2013
comment
Решено: см. Мой ответ для получения полного решения в Windows без установки стороннего программного обеспечения. - person Philip Bulley; 12.11.2014

Следующее сработало для меня при запуске узла удаленной отладки Chrome в Windows 8.

  1. Add an Inbound Rule to Windows Firewall
    • Search for "Windows Firewall" and select the "Windows Firewall" result
    • В левой части окна панели управления «Брандмауэр Windows» нажмите «Дополнительные настройки». Откроется «Брандмауэр Windows в режиме повышенной безопасности».
    • В дереве слева нажмите «Правила для входящих подключений».
    • Справа нажмите «Новое правило ...»
    • Выберите «Порт» (нажмите «Далее»).
    • Выберите TCP и установите для параметра «Определенные локальные порты» значение 9222 (нажмите «Далее»).
    • Выберите «Разрешить подключение» (нажмите «Далее»).
    • Выберите доступ к профилю (Домен, Частный, Общедоступный) в соответствии с вашими потребностями (нажмите Далее)
    • Дайте ему имя, например Chrome Remote Debugging (9222) (нажмите "Готово")
  2. Следуйте инструкциям user3445047 по перенаправлению портов:

Запустите Chrome на хосте Windows:

chrome.exe --remote-debugging-port=9222

Настройте переадресацию портов на хосте Windows:

Откройте cmd окно. Вы должны «Запускать от имени администратора».

Введите в окно cmd следующее:

netsh
interface
portproxy
add v4tov4 listenport=9222 connectaddress=127.0.0.1

На клиенте перейдите к http://THE_HOST_IP_ADDRESS:9222, и вам должен быть представлен список «Инспектируемых страниц».

person Philip Bulley    schedule 12.11.2014

Самый простой способ поделиться сеансом отладки с другим компьютером - использовать socat. Например, если вы включили протокол удаленной отладки на порту 1337, используя

chromium --remote-debugging-port=1337

Затем вы можете создать туннель с помощью socat,

socat tcp-listen:5656,fork tcp:localhost:1337

После этого любой может просто посетить http://<YOUR_IP_OR_HOSTNAME>:5656/ и сразу же использовать отладчик.

Когда вы закончите, нажмите Ctrl + C, чтобы завершить работу socat и, таким образом, остановить туннелирование.
Если предыдущий код не работает, проверьте, работает ли межсетевой экран (например, iptables) блокирует доступ. Если брандмауэр в порядке, проверьте правильность IP-адреса или имени хоста. Чтобы узнать, правильно ли перенаправляется / туннелируется трафик, посетите http://localhost:5656/ и убедитесь, что там запущен экземпляр отладчика Webkit.

person Rob W    schedule 08.01.2014
comment
Я получаю Host header is specified and is not an IP address or localhost при попытке получить к нему доступ с другим именем хоста, отличным от localhost - person Mathieu; 02.04.2021

  1. Запустите безголовый сервер

    chrome.exe --remote-debugging-port=9222
    
  2. Настроить переадресацию портов в windows

    netsh interface portproxy add v4tov4^
        listenport=9222 listenaddress=0.0.0.0^
        connectaddress=127.0.0.1 connectport=9222 
    
person vlpro    schedule 21.03.2014
comment
В Windows это в сочетании с добавлением правила для входящего трафика в брандмауэр Windows хорошо работает без необходимости установки каких-либо дополнительных утилит переадресации портов. См. Мой ответ для полных инструкций ... - person Philip Bulley; 12.11.2014
comment
Обратите внимание, что символ продолжения строки равен (^) для cmd.exe (как я добавил выше), но с обратной кавычкой (` ) для PowerShell. - person jpaugh; 19.12.2017
comment
Chome выдает ошибку, если вы попробуете это: Host header is specified and is not an IP address or localhost. - person Samuel Thompson; 09.11.2018

Последние версии Chrome поддерживают переключатель командной строки «--remote-debugging-address», поэтому в описанных выше обходных приемах больше нет необходимости.

Здесь описание: «Используйте данный адрес вместо петли по умолчанию для приема подключений удаленной отладки. Следует использовать вместе с --remote-debugging-port. Обратите внимание, что протокол удаленной отладки не выполняет никакой аутентификации. ции, поэтому ее слишком широкое распространение может представлять угрозу безопасности. "

person Michael Dreher    schedule 11.10.2016
comment
Вы знаете, как этим пользоваться? Я пробовал все, что угодно, и не могу получить удаленный доступ к инструментам отладки. Он запрашивает IP-адрес удаленного клиента? Или он запрашивает DNS-имя, которое будет разрешено для моей машины? - person Sean256; 10.11.2016
comment
@ Sean256 ты понял это? Независимо от того, какое заклинание я использую, у меня ничего не получится ... - person Marcus Stade; 24.11.2016
comment
@MarcusStade У меня нет. С тех пор я прибег к созданию туннеля ssh. Он должен быть сломан. - person Sean256; 24.11.2016
comment
Я запускаю Chrome в контейнере Docker и добавляю --remote-debugging-address = 0.0.0.0 в командную строку, что позволяет мне подключаться извне. Простой способ проверить - проверить страницу версии: localhost: 9222 / json / version - person Juha Palomäki; 21.07.2017
comment
stackoverflow.com/questions/40538197/ Утверждает, что это работает только в безголовом режиме. - person Tamir Daniely; 23.04.2019
comment
Да --headless привязывает порт к указанному IP, но он по-прежнему выглядит сломанным, devtools загружается только частично, а затем останавливается. - person OrdinaryOrange; 05.09.2019

Вы можете создать простой TCP-прокси с помощью netcat:

EXTERNAL_PORT=1338
CHROME_DEBUG_PORT=1337 # This is the port specified with --remote-debugging-port

nc -l -p ${EXTERNAL_PORT} -c "nc 127.0.0.1 ${CHROME_DEBUG_PORT}"
person Mikalai Parafeniuk    schedule 29.12.2017