Как запустить веб-драйвер selenium за прокси-сервером, который нуждается в аутентификации в python

В настоящее время это мой код, но webDriver показывает всплывающее окно для ввода учетных данных прокси-сервера, и мне не нужна эта неприятная ситуация. Это не первый раз, когда тот же вопрос появился в stackoverflow, но никто не ответил с правильным ответом ,

Я попробовал Google найти решение этой проблемы. Я узнал о решении в java, но я не знаю, как мы это делаем в python.

PROXY_HOST = "65.49.1.59" PROXY_PORT = 60099 fp = webdriver.FirefoxProfile() # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5 print " im in parse_details" fp.set_preference("network.proxy.type", 1) fp.set_preference('network.http.phishy-userpass-length', 255) fp.set_preference("network.proxy.http", PROXY_HOST) fp.set_preference("network.proxy.http_port", PROXY_PORT) fp.set_preference("network.proxy.ftp", PROXY_HOST) fp.set_preference("network.proxy.ftp_port", PROXY_PORT) fp.set_preference("network.proxy.ssl", PROXY_HOST) fp.set_preference("network.proxy.ssl_port", PROXY_PORT) #fp.set_preference("network.proxy.user_name", 'someusername') #fp.set_preference("network.proxy.password", 'somepassword') fp.set_preference("network.proxy.no_proxies_on", "") # set this value as desired self.driver = webdriver.Firefox(firefox_profile=fp) self.driver.get("http://www.whatismyip.com/") 

Эти приведенные ниже утверждения догадываются мной, и я не уверен, правилен ли их синтаксис или нет, даже я попытался найти в документации по селену, но не помог. Не могли бы вы, ребята, рассказать об этом.

  #fp.set_preference("network.proxy.user_name", 'someusername') #fp.set_preference("network.proxy.password", 'somepassword') 

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

4 Solutions collect form web for “Как запустить веб-драйвер selenium за прокси-сервером, который нуждается в аутентификации в python”

Selenium не может обрабатывать базовую аутентификацию, и он не работает с всплывающими окнами. Но эта проблема разрешима. В качестве решения, которое со мной работало (я нашел его здесь ), нужно добавить расширение браузера, которое выполняет аутентификацию для Selenium. Это довольно просто. Вот как это работает для Chrome и Python:

  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 в качестве расширения

Код Python:

 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-пример, перейдите к исходному сообщению

Я знаю, что он довольно поздно ответил на ваш вопрос, но недавно я начал работать с Python, и пытался сделать то же самое и сделал что-то подобное, чтобы справиться с этой ситуацией.

Чтобы запустить веб-драйвер селена за прокси-сервером

  1. Необходимо создать профиль firefox, в котором должно быть установлено дополнение «autoauth».
  2. Попробуйте сохранить имя пользователя и пароль прокси-сервера, нажав URL-адрес вручную.
  3. Профиль Firefox сохранит учетные данные прокси-сервера с помощью autoauth
  4. В скрипте вызывается этот профиль Firefox.
  5. Задайте все настройки для определения данных прокси-сервера.
  6. Назначить профиль Firefox в экземпляр браузера
  7. Нажмите любой URL-адрес, Ниже приведен пример

PS: Удалите все настройки прокси из интернет-опций, скрипт будет использовать его автоматически

Так что технически здесь вы не будете отправлять имя пользователя и пароль прокси, вы сохраните эти учетные данные в firefox и вызовете этот конкретный профиль firefox.

Надеюсь, что вы уже давно решили свою проблему, но если она все еще там, это может вам помочь. 🙂

Лучше пойти по этой ссылке Как передать http auth в селен .

Обратитесь к этому пути о том, как получить доступ к профилю firefox: http://software-testing-tutorials-automation.blogspot.jp/2014/05/how-to-create-and-use-custom-firefox.html

В основном вам нужно создать профиль и использовать этот профиль в firefox. Теперь поведение вашего профиля также будет таким же, когда вы запускаете через селен. Таким образом, если вы будете профилировать proxy auth, то он также будет отображаться, когда вы откроете его через селен. Таким образом, вам нужно найти способ с помощью надстроек, чтобы скрыть аутентификацию с помощью этого профиля. После того, как вы успешно это сделаете, теперь это будет то же самое с Selenium.

  • Ошибка python: ImportError: sys.meta_path - None, Python, вероятно, отключается
  • Как получить источник html определенного элемента с селеном?
  • Selenium python - Acess отрицается / hub / session при запуске Firefox webdriver
  • диалоговое окно загрузки файла в Firefox
  • Python Selenium: Firefox neverAsk.saveToDisk при загрузке с URL-адреса Blob
  • Использование Python / Selenium / Лучший инструмент для задания для получения URI запросов изображений, созданных с помощью JavaScript?
  • Selenium Error: элемент не может быть нажат в точке (X, Y), другой элемент получит клик
  • Как принять предупреждение, вызванное «get» в selenium (python, chromedriver)?
  • Ускорение прекрасного
  • Как выбрать элемент с Selenium Python xpath
  • Python Selenium: Как отправить клавишу ESC, чтобы закрыть всплывающее окно?
  • Python - лучший язык программирования в мире.