簡體   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