>source

다음 프로그램을 실행할 때 다음 오류가 나타납니다.

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: proxy from invalid argument: unrecognized proxy type: unspecified

내가 뭘 잘못하고 있는지 알아낼 수 없습니다. 나는 그것이 크롬 웹 드라이버를 설정하는 것과 관련이 있다고 생각하지만 인터넷이 나에게 많은 다른 대답을 제공하기 때문에 이것을 올바르게 수행하는 방법을 모릅니다.

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

  • 답변 # 1

    다음은 chrome에 프록시를 추가하는 올바른 방법입니다.

    자바:

    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);
    
    

    파이썬 :

    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")
    
    

    크롬이 시스템 프록시를 사용하고 있기 때문에 프록시에 연결할 수없는 것 같습니다. 위에서 언급 한 방법을 시도하여 프록시를 설정하십시오.

관련 자료

  • 이전 python - Django-mptt가 템플릿에 이름을 나열하지 않음
  • 다음 r - nxn 행렬 만들기