[英]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次執行結果如下:
第一次執行:
Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36
第二次執行:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36
第三次執行:
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
的常規方法現已棄用,您必須改用Options
。
只需與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 列表中隨機提取(需要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 安裝有一個名為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.