簡體   English   中英

如何使用 Selenium 和 Python 為用戶代理設置自定義名稱

[英]How to set a custom name for the user-agent using Selenium and Python

我正在使用 selenium + webdriver 並嘗試測試不同的用戶代理。 我正在為 Windows 上的 Chrome 添加這樣的用戶代理,例如:

option = Options()
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36")

現在,當我登錄查看登錄詳細信息時,它顯示 Windows Chrome 但是當我想將其重命名為類似這樣的其他名稱時:

option.add_argument("user-agent=test-user-agent")

或者

option.add_argument("user-agent=Mozilla/5.0 (test-user-agent NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36")

某些網站顯示為unknownbrowser not supported

有沒有辦法“重命名”用戶代理或創建自定義用戶代理,或者只有網站知道的預設數量?

用戶代理

用戶代理請求 header是一個特征字符串,它允許服務器和網絡對等方識別請求用戶代理的應用程序、操作系統、供應商和/或版本。


句法

web瀏覽器常用格式如下:

User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions>

這個用例

雖然您嘗試添加特定的第一個代碼將完美運行:

  • 代碼塊:

     from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36") driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe') print(driver.execute_script("return navigator.userAgent;"))
  • 控制台 Output:

     Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

但是根據您的第二次嘗試,您無法重命名用戶代理,因為它違反了規定的格式/語法。


但是,您始終可以使用execute_cdp_cmd(cmd, cmd_args)更改用戶代理,如下所示:

  • 代碼塊:

     from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36") driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe') print(driver.execute_script("return navigator.userAgent;")) # Setting UserAgent 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;"))
  • 控制台 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

參考

您可以在以下位置找到一些相關的詳細討論:

警告:FirefoxProfile 已被刪除

使用FirefoxProfile的常規方法現已棄用,您必須改用Options

如何使用選項更改 FireFox 用戶代理

只需執行與FirefoxProfile相同的操作,但使用Options object 代替如下:

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 package 的隨機用戶代理

有一個有用的 package 通過安裝 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