繁体   English   中英

在 Selenium 中更改 Google Chrome 用户代理的方法?

[英]Way to change Google Chrome user agent in Selenium?

我试图找出一种方法,每当我在这个特定脚本中通过 Selenium(在 Python 中)打开 Chrome 时,Chrome 页面会自动打开并选择另一个用户代理 - 在这种情况下,Microsoft Edge Mobile(但我会从桌面访问它)。

所以,在做了一些研究之后,我已经能够拼凑出以下代码,我认为它会在 Chrome 中执行用户代理切换,然后打开一个新的 Bing.com 页面:

from selenium import webdriver 
from selenium.webdriver.chrome.options

import Options opts = Options()
opts.add_argument("user-agent=Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166")
driver = webdriver.Chrome(chrome_options=opts)
driver = webdriver.Chrome("D:\_")
driver.get("https://www.bing.com/")

但是,代码似乎没有工作,并在打开指定网页之前停止。 我相当肯定代码的前半部分已关闭,但我不太确定如何。 任何和所有的帮助将不胜感激。

使用随机用户代理的一种简单方法是使用 Python 的fake_useragent模块,如下所示:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from fake_useragent import UserAgent

options = Options()
ua = UserAgent()
userAgent = ua.random
print(userAgent)
options.add_argument(f'user-agent={userAgent}')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\ChromeDriver\chromedriver_win32\chromedriver.exe')
driver.get("https://www.google.co.in")
driver.quit()

连续3次执行结果如下:

  1. 第一次执行:

     Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36
  2. 第二次执行:

     Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36
  3. 第三次执行:

     Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17

您应该使用 selenium.webdriver 中的 ChromeOptions:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--user-agent="Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166"')
driver = webdriver.Chrome(chrome_options=chrome_options)

这应该有效。

警告:FirefoxProfile 已被删除

使用FirefoxProfile的常规方法现已弃用,您必须改用Options

如何使用选项更改 FireFox 用户代理

只需与FirefoxProfile相同,但使用Options对象,如下所示:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
agent = " Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
options.set_preference("general.useragent.override", agent)

driver = webdriver.Firefox(options=options)

使用 git 中的随机用户代理

要使用随机用户代理,您可以从这个用户代理的 git 列表中随机提取(需要pip install requests ):

import requests,random
agents = requests.get("https://gist.githubusercontent.com/pzb/b4b6f57144aea7827ae4/raw/cf847b76a142955b1410c8bcef3aabe221a63db1/user-agents.txt").text.split('\n')
agent = random.choice(agents)

使用 pip 包中的随机用户代理

通过 pip 安装有一个名为random-user-agent的有用软件包

pip install random-user-agent

然后得到一个随机代理:

from fake_useragent import UserAgent
agent = UserAgent().random

完整示例

这是使用选项为 selenium 设置随机用户代理的完整示例:

from fake_useragent import UserAgent
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.set_preference("general.useragent.override", UserAgent().random)

driver = webdriver.Firefox(options=options)

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM