我想向https://www.google.com/发出10个请求,但使用selenium和python的随机用户代理。我有一个循环,在该循环中,我使用随机用户代理(使用假用户代理)发出10个请求。主要问题是每个请求Web驱动程序都在打开一个新的google chrome实例,我想在一个实例中使用不同的用户代理执行此操作。我怎样才能做到这一点? 1个Google Chrome实例和10个带有10个随机用户代理的请求。这是我的代码:
chrome_options = Options()
chrome_options.add_argument('no-sandbox')
chrome_options.add_argument("--start-maximized")
ua = UserAgent()
for i in range(0, 10):
userAgent = ua.random
chrome_options.add_argument('--user-agent="' + str(userAgent) + '"')
driver1 = webdriver.Chrome(chrome_options=chrome_options,
executable_path="C:/Python34/chromedriver")
driver1.get('https://www.google.com/')
time.sleep(5)
答案 0 :(得分:2)
是的。现在可以使用cdp:
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser1"}})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser2"}})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser3"}})
driver.get('https://www.httpbin.org/headers')
答案 1 :(得分:0)
它打开了10个Chrome实例,因为您没有close()
,请尝试
...
...
driver1.get('https://www.whatsmyua.info/')
time.sleep(5)
driver1.close()
答案 2 :(得分:0)
否。当您使用 ChromeOptions 配置 ChromeDriver 的实例以启动新的 Chrome浏览器会话时, ChromeDriver 的配置在 ChromeDriver 的生存期中保持不变,并且保持不可修改。因此,当 WebDriver 实例正在执行发出10个请求的循环时,您将无法更改用户代理。
即使您能够提取 ChromeDriver 和 ChromeSession 属性,例如来自已经启动的浏览会话的 UserAgent ,会话ID , Cookies 和其他会话属性,您仍然不会能够更改 ChromeDriver 的那些属性。
一种更干净的方法是在driver.quit()
方法中调用 tearDown(){}
来关闭和销毁 ChromeDriver 和 Chrome浏览器实例,然后使用新的配置集跨一组新的 ChromeDriver 和 Chrome浏览器实例
在这里您可以找到有关How can I reconnect to the browser opened by webdriver with selenium?的相关讨论