Запуск селена за прокси-сервером
Я использую селен для автоматического моделирования браузеров и веб-скребок в 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/")