Настройка прокси в селене в python для Firefox Geckodriver
У меня вопрос об установке прокси в селен (3.4.3.) В Python (2.7) для Firefox (Geckodriver v0.18.0-win64). Спецификация на http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp содержит только пример Java.
from selenium import webdriver
PROXY = "94.56.171.137:8080"
class Proxy(object):
def __call__(self):
self.base_url = "https://whatismyip.com"
print self.base_url
# proxy json object
desired_capability = webdriver.DesiredCapabilities.FIREFOX['proxy']={
"httpProxy":PROXY,
"ftpProxy":PROXY,
"sslProxy":PROXY,
#"noProxy":None,
"proxyType":"manual"
}
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)
self.driver = webdriver.Firefox(executable_path='D:\Code\Drivers\geckodriver',firefox_profile=firefox_profile, capabilities=desired_capability)
self.driver.get(self.base_url)
if __name__ == "__main__":
proxy_test = Proxy()
proxy_test()
Я получаю следующее сообщение об ошибке:
selenium.common.exceptions.WebDriverException: Сообщение: не удается загрузить профиль. Возможно несоответствие версии Firefox. Вы должны использовать GeckoDriver вместо Firefox 48+.
Если я прокомментирую код, относящийся к прокси, я смогу получить страницу в приватном режиме, как указано в профиле. Я думаю, что это прокси, который все портит.
2 ответа
Ответ Ясо не сработал для меня, вместо этого я использовал это
proxyString = "Ip:port"
desired_capability = webdriver.DesiredCapabilities.FIREFOX
desired_capability['proxy'] = {
"proxyType": "manual",
"httpProxy": proxyString,
"ftpProxy": proxyString,
"sslProxy": proxyString
}
Я часами искал ответ и хочу поделиться им. Простая проблема была в спецификации прокси. Изначально прокси и порт были одной строкой
PROXY = "94.56.171.137:8080"
ответ должен сделать порт номером
PROXY = "94.56.171.137"
PORT = 8080
Вот остальная часть кода
from selenium import webdriver
PROXY = "94.56.171.137"
PORT = 8080
class Proxy(object):
def __call__(self):
self.base_url = "https://whatismyip.com"
print self.base_url
# https://github.com/mozilla/geckodriver
# proxy json object
desired_capability = webdriver.DesiredCapabilities.FIREFOX
desired_capability['proxy']={
"proxyType":"manual",
"httpProxy":PROXY,
"httpProxyPort": PORT,
"ftpProxy":PROXY,
"ftpProxyPort": PORT,
"sslProxy":PROXY,
"sslProxyPort" : PORT
}
firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)
self.driver = webdriver.Firefox(executable_path='D:\Drivers\geckodriver',firefox_profile=firefox_profile, capabilities=desired_capability)
self.driver.get(self.base_url)
if __name__ == "__main__":
proxy_test = Proxy()
proxy_test() code here