#python #selenium #proxy #geckodriver
#python #selenium #прокси #geckodriver
Вопрос:
У меня есть работающий скребок, но я не могу понять, почему запросы не проходят через установленный мной прокси. Я попробовал три разных подхода, которые нашел, но ни один из них не сработал. Может быть, это что-то в настройке сервера, что я должен проверить?
Вот три варианта, которые я попробовал, но безуспешно.
def SetProxy1():
options = Options()
myProxy = '191.6.69.137:20183'
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
})
options.headless = True
options.add_argument('-headless')
driver = webdriver.Firefox(options=options, proxy=proxy)
return driver
def SetProxy2():
options = Options()
options.add_argument("--headless")
proxy = "191.6.69.137"
proxy_port = 20183
proxy_profile = webdriver.FirefoxProfile()
proxy_profile.set_preference("network.proxy.type", 1)
proxy_profile.set_preference("network.proxy.http",proxy)
proxy_profile.set_preference("network.proxy.http_port",int(proxy_port))
proxy_profile.set_preference("network.proxy.https",proxy)
proxy_profile.set_preference("network.proxy.https_port",int(proxy_port))
proxy_profile.set_preference("network.proxy.ssl",proxy)
proxy_profile.set_preference("network.proxy.ssl_port",int(proxy_port))
proxy_profile.set_preference("network.proxy.ftp",proxy)
proxy_profile.set_preference("network.proxy.ftp_port",int(proxy_port))
proxy_profile.set_preference("network.proxy.socks",proxy)
proxy_profile.set_preference("network.proxy.socks_port",int(proxy_port))
proxy_profile.update_preferences()
browser = webdriver.Firefox(firefox_profile=proxy_profile, firefox_options=options)
return browser
def SetProxy3():
PROXY = "191.6.69.137"
PORT = 20183
desired_capability = webdriver.DesiredCapabilities.FIREFOX
desired_capability['proxy']={
"proxyType":"manual",
"httpProxy":PROXY,
"httpProxyPort": PORT,
"ftpProxy":PROXY,
"ftpProxyPort": PORT,
"sslProxy":PROXY,
"sslProxyPort" : PORT
}
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options,capabilities=desired_capability)
return driver
Ответ №1:
Это функциональный прокси для selenium
Для Firefox
from selenium.webdriver.common.proxy import Proxy, ProxyType
def setProxy():
myProxy = "xx.xx.xx.xx:xxxx"
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
'noProxy': '' # set this value as desired
})
driver = webdriver.Firefox(proxy=proxy)
# Example how to use with out function :: driver.get("http://www.google.com")
return driver
Для Chrome
from selenium.webdriver.common.proxy import Proxy, ProxyType
def setProxy():
prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.http_proxy = "ip_addr:port"
prox.socks_proxy = "ip_addr:port"
prox.ssl_proxy = "ip_addr:port"
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
driver = webdriver.Chrome(desired_capabilities=capabilities)
return driver
Комментарии:
1. это для Chrome .. вопросы были о Firefox / GeckoDriver
2. Я просто упустил суть. Я обновляю для обоих браузеров [Firefox и Chrome]
3. это именно мой пример SetProxy1 (), или я что-то упускаю?