啟動驅動程式后如何更改Selenium中的代理服務器?我看到了關于這個主題的幾個主題,但沒有一個答案是正確的。您不僅可以使用Chrome,還可以使用Firefox。
如果您對如何在驅動程式打開時更改代理有任何想法,請寫信。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
Path = ChromeDriverManager().install()
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--disable-setuid-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=600,400')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--disable-accelerated-2d-canvas')
# options.add_argument('--no-zygote')
# options.add_argument('--single-process')
options.add_argument('--disable-gpu')
options.add_argument('--headless')
proxy_file = open("proxy.txt", "r", encoding="utf-8", errors="ignore").readlines()
proxy = ((random.choice(proxy_file)).replace("\n", ""))
options.add_argument('--proxy-server=%s' % proxy)
browser = webdriver.Chrome(Path, options=options)
browser.get('https://google.com')
# Here the proxy should change
browser.get('https://google.com')
uj5u.com熱心網友回復:
不,在啟動驅動程式和瀏覽背景關系后,您將無法使用Selenium更改代理服務器。
當您配置ChromeDriver的實體ChromeOptions()以跨越新的Chrome 瀏覽背景關系時,配置會在chromedriver可執行檔案中烘焙,該可執行檔案將在WebDriver的生命周期內持續存在并且不可編輯。因此,您不能通過類修改/添加任何現有/新配置到當前正在執行的WebDriver實體。ChromeOptions()
即使您能夠從已經啟動的ChromeDriver和Chrome 瀏覽會話中提取ChromeDriver和ChromeSession屬性,例如Session ID、Cookies、UserAgent和其他會話屬性,您仍然無法更改ChromeDriver的屬性集。
一種更簡潔的方法是優雅地quit()使用現有的ChromeDriver和Chrome 瀏覽器實體,然后使用新的代理配置集跨越一組新的ChromeDriver和Chrome 瀏覽器實體,如下所示:
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--disable-setuid-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=600,400')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--disable-accelerated-2d-canvas')
options.add_argument('--disable-gpu')
options.add_argument('--headless')
urls_to_visit = ['https://www.google.com/', 'https://stackoverflow.com/']
proxies = open("proxy.txt", "r", encoding="utf-8", errors="ignore").readlines()
for i in range(0, len(urls_to_visit)):
proxy = ((random.choice(proxies)).replace("\n", ""))
options.add_argument('--proxy-server=%s' % proxy)
browser = webdriver.Chrome(Path, options=options)
browser.get("{}".format(urls_to_visit[i]))
# perform the tasks
driver.quit()
參考
您可以在以下位置找到一些相關的討論:
- 如何旋轉 Selenium 網路瀏覽器 IP 地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447297.html
