Selenium 4:如何绕过Localhost的代理设置

问题描述

作为从Selenium版本3到版本4的更改的一部分,看起来Selenium现在在向浏览器发送命令时将使用您的HTTP_PROXY / HTTPS_PROXY环境设置。如果设置了这两个Envar之一,RemoteConnection._get_proxy_url()似乎没有任何办法不使用代理。 请注意,我指的是Selenium通过代理向浏览器发送命令,而不是让浏览器本身使用代理。

包括在本地主机上运行浏览器的情况。 Selenium绝对希望使用代理,即使它正在向本地主机发送东西,我也看不到有什么方法可以替代此行为,除了在发送命令时临时替代这些envar之外。似乎有些矫kill过正,尤其是如果代理是面向外部网址而不是本地网址的话。

这是完整的堆栈跟踪。如您所见,Selenium 4在发送命令创建会话后立即尝试从一开始就使用代理。

  File "C:\myproject\webdrivers.py",line 143,in get_chrome_webdriver
    driver = webdriver.Chrome(**chrome_kwargs)
  File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\chrome\webdriver.py",line 64,in __init__
    super(WebDriver,self).__init__(DesiredCapabilities.CHROME['browserName'],"goog",File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\chromium\webdriver.py",line 79,in __init__
    RemoteWebDriver.__init__(
  File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\remote\webdriver.py",line 183,in __init__
    self.start_session(capabilities,browser_profile)
  File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\remote\webdriver.py",line 280,in start_session
    response = self.execute(Command.NEW_SESSION,parameters)
  File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\remote\webdriver.py",line 347,in execute
    response = self.command_executor.execute(driver_command,params)
  File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\remote\remote_connection.py",line 393,in execute
    return self._request(command_info[0],url,body=data)
  File "C:\myproject\pybin\lib\site-packages\selenium\webdriver\remote\remote_connection.py",line 422,in _request
    resp = http.request(method,body=body,headers=headers)
  File "C:\myproject\pybin\lib\site-packages\urllib3\request.py",in request
    return self.request_encode_body(
  File "C:\myproject\pybin\lib\site-packages\urllib3\request.py",line 171,in request_encode_body
    return self.urlopen(method,**extra_kw)
  File "C:\myproject\pybin\lib\site-packages\urllib3\poolmanager.py",line 488,in urlopen
    return super(ProxyManager,self).urlopen(method,redirect=redirect,**kw)
  File "C:\myproject\pybin\lib\site-packages\urllib3\poolmanager.py",line 334,in urlopen
    response = conn.urlopen(method,**kw)
  File "C:\myproject\pybin\lib\site-packages\urllib3\connectionpool.py",line 754,in urlopen
    return self.urlopen(
  File "C:\myproject\pybin\lib\site-packages\urllib3\connectionpool.py",line 726,in urlopen
    retries = retries.increment(
  File "C:\myproject\pybin\lib\site-packages\urllib3\util\retry.py",line 439,in increment
    raise MaxRetryError(_pool,error or ResponseError(cause))

是否有一种绕过某些URL(尤其是本地主机)的代理设置的首选方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)