如何使用Selenium和Python更改用户代理

5

我在使用selenium和Python更改web driver用户代理时遇到了错误。

这是我的代码:

import requests
import json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Chrome(driver_path) driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'})
#Error is on line above

以下是我的错误信息:

>>> driver = webdriver.Chrome(driver_path) 
    driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent":"python 3.7", "platform":"Windows"}) 
  File "<stdin>", line 1
    driver = webdriver.Chrome(driver_path) driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent":"python 3.7", "platform":"Windows"})```
您可以尝试将上述代码放入您的程序中,但是出现了如上错误。问题在于第二行代码缺少分号(;),因此它与第一行代码被视为单一语句。解决方法是在两行之间添加分号。
3个回答

9
你的代码非常完美。你只需要编写一行代码来更改下一行中的。例如:
  • Code Block:

    from selenium import webdriver
    
    driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe')
    print(driver.execute_script("return navigator.userAgent;"))
    # Setting user agent as Chrome/83.0.4103.97
    driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'})
    print(driver.execute_script("return navigator.userAgent;"))
    # Setting user agent as Chrome/83.0.4103.53
    driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
    print(driver.execute_script("return navigator.userAgent;"))
    driver.get('https://www.httpbin.org/headers')
    
  • Console Output:

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36
    
  • Browser Snapshot:

useragent


参考资料

你可以在以下链接中找到一些相关的详细讨论:


driver = webdriver.Chrome(executable_path=r'C:\Users\Salvatore\Desktop\Desktop\webdrivers\chromedriver.exe') This worked but I got this error and my browser shut down right away:selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81 - Salvatore Timpani
1
@SalvatoreTimpani 这是一个不同的错误,需要不同的解决方案。你能否为你的新需求提出一个新问题? - undetected Selenium
这是我的新帖子:https://stackoverflow.com/questions/62492419/selenium-error-this-version-of-chromedriver-only-supports-chrome-version-81 - Salvatore Timpani

2

您应该使用驱动程序选项:

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("user-agent=[user-agent string]")

driver = webdriver.Chrome(executable_path='path', chrome_options=options)

这个语法正确吗?from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("user-agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'")另外,我应该保留实际用户代理周围的单引号还是只保留整个字符串周围的双引号就可以了? - Salvatore Timpani
1
"Python is a popular programming language for building web applications and performing various data analysis tasks." "Python 是一种流行的编程语言,用于构建 Web 应用程序和执行各种数据分析任务。" - Dmitry

0
请按照以下步骤操作:
1- 您可以在每个请求中使用虚拟用户代理库来产生假的用户代理。
将以下代码添加到您的代码中: from fake_useragent import UserAgent 2- 然后在终端执行以下命令:
 pip install fake_useragent

3- 在代码中使用:例如

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'user-agent={userAgent}')
ua = UserAgent()
userAgent = ua.random
print(userAgent)
driver = webdriver.Chrome(options=chrome_options,executable_path=r"strin path 
chrome driver")
                 

如果您想使用静态用户代理,请使用以下代码:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 6.1; 
WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"')
driver = webdriver.Chrome(chrome_options=chrome_options)
              

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接