[英]Failing to set up proxy for chrome in Selenium (Python 3.7)
運行以下程序時,彈出如下錯誤:
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: proxy from invalid argument: unrecognized proxy type: unspecified
我不知道我做錯了什么。 我認為這與設置 chrome webdriver 有關,但我不知道如何正確執行此操作,因為 inte.net 給了我很多不同的答案。
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
import random
from string import ascii_lowercase
PATH = r"C:\Users\...\PythonProject\chromedriver.exe"
def proxy_update():
global driver
proxies = []
driver.get('https://free-proxy-list.net/')
proxy_search = driver.find_element_by_xpath("""//*[@id="proxylisttable"]/tbody""").text.split('ago\n')
for pr in proxy_search:
proxies.append(pr.split(' '))
for lst in proxies:
for pr in lst:
if pr == "elite":
proxies.append(lst[0] + ':' + lst[1])
else:
pass
if len(proxies) > 20:
driver.quit()
return random.sample(proxies, k=1)
else:
proxy_update()
capabilities = webdriver.DesiredCapabilities.CHROME.copy()
prox = Proxy()
prox.add_to_capabilities(capabilities)
prox.proxy_type = ProxyType.MANUAL
driver = webdriver.Chrome(PATH, desired_capabilities=capabilities)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server=http://{proxy_update()}')
driver = webdriver.Chrome(PATH, desired_capabilities=capabilities, options=chrome_options)
prox.http_proxy = f"{proxy_update()}"
prox.socks_proxy = f"{proxy_update()}"
prox.ssl_proxy = f"{proxy_update()}"
proxy_update()
driver.get("https://www.wikipedia.org/wiki/Rotterdam")
這是完整的錯誤:
Traceback (most recent call last):
File "C:/Users/.../PythonProject.py", line 36, in <module>
driver = webdriver.Chrome(PATH, desired_capabilities=capabilities)
File "C:\Users\...\venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "C:\Users\...\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Users\...\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Users\...\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\...\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: proxy
from invalid argument: unrecognized proxy type: unspecified
以下是在 chrome 中添加代理的正確方法,
JAVA:
ChromeOptions chromeOptions = new ChromeOptions();
String proxyadd = "176.9.119.170:8080";
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyadd);
proxy.setSslProxy(proxyadd);
chromeOptions.setCapability("proxy", proxy);
WebDriver driver = new ChromeDriver(chromeOptions);
PYTHON:
from selenium import webdriver
PROXY="176.9.119.170:8080"
webdriver.DesiredCapabilities.CHROME['proxy'] = {
"httpProxy": PROXY,
"ftpProxy": PROXY,
"sslProxy": PROXY,
"proxyType": "MANUAL",
}
webdriver.DesiredCapabilities.CHROME['acceptSslCerts']=True
driver =webdriver.Chrome(r".\chromedriver.exe")
driver.get("https://www.google.com")
chrome 似乎無法連接到代理,可能是它正在使用系統代理。 試試上面提到的設置代理的方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.