Selenium с использованием Python: введите / укажите пароль HTTP-прокси для Firefox

Я хочу использовать селен с прокси-сервером, который защищен паролем. Прокси не фиксирован, а переменная. Так что это должно быть сделано в коде (просто настройка firefox на этой конкретной машине для работы с прокси-сервером меньше, чем идеальная). Пока у меня есть следующий код:

fp = webdriver.FirefoxProfile() # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5 fp.set_preference("network.proxy.type", 1) fp.set_preference("network.proxy.http", PROXY_HOST) fp.set_preference("network.proxy.http_port", PROXY_PORT) driver = webdriver.Firefox(firefox_profile=fp) driver.get("http://whatismyip.com") 

На этом этапе открывается диалоговое окно с запросом пользователя / прокси-сервера.

Есть ли простой способ:

  1. Введите имя пользователя / пароль в диалоговом окне.
  2. Предоставьте пользователю / пройти на более раннем этапе.

3 Solutions collect form web for “Selenium с использованием Python: введите / укажите пароль HTTP-прокси для Firefox”

Селен не может этого сделать сам по себе. Единственный способ, которым я нашел полезный, описан здесь . Короче говоря, вам нужно добавить расширение браузера на лету, что делает аутентификацию. Это намного проще, чем может показаться.

Вот как это работает для Chrome (в моем случае):

  1. Создайте zip-файл proxy.zip, содержащий два файла:

background.js

 var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "http", host: "YOU_PROXY_ADDRESS", port: parseInt(YOUR_PROXY_PORT) }, bypassList: ["foobar.com"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, function() {}); function callbackFn(details) { return { authCredentials: { username: "YOUR_PROXY_USERNAME", password: "YOUR_PROXY_PASSWORD" } }; } chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: ["<all_urls>"]}, ['blocking'] ); 

Не забудьте заменить YOUR_PROXY_ * на ваши настройки.

manifest.json

 { "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", "<all_urls>", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] }, "minimum_chrome_version":"22.0.0" } 
  1. Добавьте созданный прокси.zip в качестве расширения

     from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_extension("proxy.zip") driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options) driver.get("http://google.com") driver.close() 

Вот и все. Для меня это работало как шарм. Если вам нужно создать proxy.zip динамически или нужно PHP-пример, перейдите к исходному сообщению

После того, как они были вдохновлены модульными тестами в реестре gelub selenium. Это сработало для меня:

 from selenium import webdriver PROXY_HOST = "IP_address" PROXY_PORT = 8080 profile = webdriver.FirefoxProfile() profile.set_preference("network.proxy.type", 1) profile.set_preference("network.proxy.http", PROXY_HOST) profile.set_preference("network.proxy.http_port", PROXY_PORT) profile.set_preference("network.proxy.socks_username", "username") profile.set_preference("network.proxy.socks_password", "password") profile.update_preferences() # executable_path = define the path if u don't already have in the PATH system variable. browser = webdriver.Firefox(firefox_profile=profile) browser.get('http://website.com') browser.maximize_window() 

Вы пробовали PROXY_HOST = "http://username:password@proxy.host.com" ?

Также :

Начиная с Selenium 2.0 beta 1, встроенная поддержка обработки всплывающих диалоговых окон.

  • Как получить текст элемента в Selenium WebDriver (через Python api) без включения текста дочернего элемента?
  • Получение хромовой производительности и отслеживание журналов
  • Такая же команда работает один раз при выполнении, но генерирует исключение, когда выполняется второй раз?
  • Может ли JavaScript поговорить с Selenium 2?
  • Не удалось щелкнуть ссылку, используя selenium webdriver в python
  • Как бороться со спорадическими ошибками BadStatusLine, CannotSendRequest в python WebDriver
  • Использование Selenium с Python и PhantomJS для загрузки файла в файловую систему
  • тест веб-страницы с селеном python: очень медленное выполнение
  • Python - лучший язык программирования в мире.