在 Python 中使用代理的错误 运行 Selenium Webdriver

Error running Selenium Webdriver with a proxy in Python

我用 Selenium Python 测试了一个从网页检索信息的脚本。它有效,至少在找到我的 IP 之前是这样。我想尝试使用代理。我尝试了以下两种选择。

第一种方式:

PROXY = "176.31.68.252:20213"

webdriver.DesiredCapabilities.CHROME['proxy'] = {
    "httpProxy": PROXY,
    "ftpProxy": PROXY,
    "sslProxy": PROXY,
    "noProxy": None,
    "proxyType": "MANUAL",
    "class": "org.openqa.selenium.Proxy",
    "autodetect": False
}

url = 'https://www.ufficiocamerale.it/'

driver = webdriver.Chrome(desired_capabilities=webdriver.DesiredCapabilities.CHROME)
wait = WebDriverWait(driver, 20)
driver.get(url)

# rest of the code

第二种方式:

PROXY = "176.31.68.252:20213"

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=https://%s' % PROXY)

url = 'https://www.ufficiocamerale.it/'

driver = webdriver.Chrome(chrome_options=chrome_options)
wait = WebDriverWait(driver, 20)
driver.get(url)

# rest of the code

但在第一种情况下网页 returns 错误 ERR_EMPTY_RESPONSE 而在第二种情况下 returns 错误 ERR_TIMED_OUT.

我在在线免费代理列表中找到了代理。

这是我选择的代理的问题吗?还是代码问题? 在这些情况下,标准的处理方式是什么?

Google 限制

由于代理,您收到一条错误消息,

Google 阻止所有免费代理的


代理蜘蛛

我还编写了一个代理蜘蛛程序来测试所有代理服务器:https://free-proxy-list.net/

代码:https://github.com/xtekky/proxy-spider


设置自己的代理

这里有一个 article 告诉您如何创建自己的代理服务器。


使用代理设置 Selenium

  • 试试这个脚本:

Github代码:https://github.com/xtekky/selenium-tutorials/tree/main/selenium%20proxy

from selenium import webdriver
from selenium.webdriver.common.proxy import ProxyType, Proxy #proxy module
import time

proxy_ip = 'ip:port' #get a free proxy from the websites in the description

#setting up proxy
proxy =Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = proxy_ip
proxy.ssl_proxy = proxy_ip

#linking proxy and setting up driver
capabilities = webdriver.DesiredCapabilities.CHROME
proxy.add_to_capabilities(capabilities)
driver = webdriver.Chrome('CHROMEDRIVER PATH', desired_capabilities=capabilities) # replace the chromedriver path

#loading test page
driver.get('https://httpbin.org/ip')
time.sleep(8)
driver.quit()