Я успешно запускаю браузер Chrome с терминала с помощью следующей команды:
google-chrome --remote-debugging-port=9222 --user-data-dir="C:\selenum\ChromeProfile"
Затем я могу подключиться к этому экземпляру браузера с помощью следующей строки кода при инициализации драйвера:
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
Теперь я хотел бы установить адрес прокси-сервера в формате «http://имя пользователя:пароль@проксихост:порт».
Обычно я могу прекрасно использовать прокси с Selenium, используя блок манифеста_json и добавляя параметры, т.е.:
pluginfile = 'proxy_auth_plugin.zip'
with zipfile.ZipFile(pluginfile, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
options.add_extension(pluginfile)
Однако когда в код добавляется указанная выше экспериментальная опция отладчика (см. выше), прокси-серверы перестают работать и используется системный IP-адрес.
Я также пробовал установить прокси-сервер из командной строки с помощью --proxy-server="http://username:password@proxyhost:port", но, насколько я понимаю, Chrome не акцентирует имя пользователя и пароли через командная строка.
Итак, мне интересно, есть ли какой-нибудь способ настроить прокси-серверы с помощью Selenium после подключения к экземпляру Chrome, созданному из командной строки?
Заранее спасибо за вашу помощь.
Когда вы запускаете Chrome из командной строки, вам нужно будет указать расширение, которое устанавливает настройки прокси-сервера с проверкой подлинности. Чтобы создать это расширение, используйте информацию, представленную в https://stackoverflow.com/a/35293284/7058266.
Чтобы указать расширение при запуске Chrome, используйте --load-extension=path/to/extension
(https://stackoverflow.com/a/22198816/7058266). В вашем случае это может выглядеть так:
google-chrome --remote-debugging-port=9222 --load-extension=path/to/extension
Существует фреймворк Python под названием SeleniumBase , который уже делает эти вещи. Вот код Python, который создает расширение прокси-сервера с аутентификацией . Код SeleniumBase UC Mode , который запускает Chrome перед подключением к нему chromedriver , можно найти здесь. (Используется для обхода служб обнаружения ботов.)