Как установить прокси с параметрами Selenium при подключении к Google-Chrome, созданному из командной строки

Я успешно запускаю браузер 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, созданному из командной строки?

Заранее спасибо за вашу помощь.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы запускаете 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 , можно найти здесь. (Используется для обхода служб обнаружения ботов.)

Другие вопросы по теме