Запуск селена за прокси-сервером

Я использую селен для автоматического моделирования браузеров и веб-скребок в python, и он хорошо сработал у меня. Но теперь я должен запустить его за прокси-сервером. Итак, теперь selenium откроет окно, но не смог открыть запрошенную страницу из-за отсутствия настроек прокси-сервера в открывшемся браузере. Текущий код выглядит следующим образом (образец):

from selenium import webdriver

sel = webdriver.Firefox()
sel.get('http://www.google.com')
sel.title
sel.quit()

Как изменить приведенный выше код для работы с прокси-сервером сейчас?

Ответы

Ответ 1

Вам нужно установить желаемые возможности или профиль браузера, например:

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", "proxy.server.address")
profile.set_preference("network.proxy.http_port", "port_number")
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)

Также см. связанные темы:

Ответ 2

Официальная документация Selenium (http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy) содержит четкие и полезные рекомендации по использованию прокси-сервера. Для Firefox (который является предпочтительным браузером в вашем примере кода) вы должны сделать следующее:

from selenium import webdriver
from selenium.webdriver.common.proxy import *

myProxy = "host:8080"

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': myProxy,
    'ftpProxy': myProxy,
    'sslProxy': myProxy,
    'noProxy': '' # set this value as desired
    })

driver = webdriver.Firefox(proxy=proxy)

Ответ 3

Это выполнит задание:

import selenium
from selenium.webdriver.common.proxy import *

proxyHost = "my.proxy.host or IP"
proxyPort = "55555"

fp = webdriver.FirefoxProfile()
fp.set_preference("network.proxy.type", 1)
#fp.set_preference("network.proxy.http", proxyHost) #HTTP PROXY
#fp.set_preference("network.proxy.http_port", int(proxyPort))
#fp.set_preference("network.proxy.ssl", proxyHost) #SSL  PROXY
#fp.set_preference("network.proxy.ssl_port", int(proxyPort))
fp.set_preference('network.proxy.socks', proxyHost) #SOCKS PROXY
fp.set_preference('network.proxy.socks_port', int(proxyPort))
fp.update_preferences()

driver = webdriver.Firefox(firefox_profile=fp)

driver.get("http://www.whatismyip.com/")