我的简单 selenium python 脚本来测试代理如何失败。如何通过代理连接强制 webdriver 工作?
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
PROXY_HOST = "{MYIP}"
PROXY_PORT = 11200
PROXY_USERNAME = "{UNAME}"
PROXY_PASSWORD = "{PW}"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://%s:%s@%s:%s' % (PROXY_USERNAME, PROXY_PASSWORD, PROXY_HOST, PROXY_PORT))
chrome_options.add_argument("ignore-certificate-errors")
chrome = webdriver.Chrome(options=chrome_options)
chrome.get("https://www.ipchicken.com/")
# Wait until a table is present
wait = WebDriverWait(chrome, 30) # Adjust the timeout as needed
wait.until(EC.presence_of_element_located((By.TAG_NAME, "table")))
# Get the page source
page_source = chrome.page_source
# Output page data as text in console
print(page_source)
# Close the browser
chrome.quit()
如果我删除代理设置,效果很好,但是,它会抛出带有代理设置的 TimeoutException。
我的代理凭据正确并且通过 CURL 运行良好。
您有 4 个使用 Selenium Python 进行身份验证代理的选项:
在 Python Selenium 脚本中加载 Chrome 扩展以设置这些代理设置:https://stackoverflow.com/a/35293284/7058266
使用
selenium-wire
:https://stackoverflow.com/a/56276796/7058266
使用
seleniumbase
:https://stackoverflow.com/a/77580114/7058266
将
selenium-wire
与 seleniumbase
组合,并根据需要经常更改脚本中间的代理:https://stackoverflow.com/a/78188999/7058266