Selenium嘗試更改user-agent - 基於Python


今天翻查了下selenium更改User-Agent的文章,大多數都是以下這樣的:

 1 from selenium import webdriver
 2 
 3 # 定義要將瀏覽器偽裝成的ua
 4 ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36',
 5 # 創建瀏覽器選項對象
 6 opts = webdriver.ChromeOptions()
 7 opts.add_argument('user-agent=%s'%ua) # 添加user-agent
 8 driver = webdriver.Chrome() # 瀏覽器對象
 9 driver.get('https://www.baidu.com') # 請求baidu
10 print(driver.execute_script('return navigator.userAgent')) # Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
11 print(driver.execute_script('return navigator.userAgent') == ua) #False

經測試,上面的代碼,並沒有改變瀏覽器的user-agent,它用的還是本身瀏覽器自帶的。

有趣的測試:

 1 import time
 2 
 3 from selenium import webdriver
 4 
 5 # 定義要將瀏覽器偽裝成的ua
 6 ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36',
 7 driver = webdriver.Chrome() # 瀏覽器對象
 8 driver.implicitly_wait(10) # 全局等待加載
 9 driver.get('https://www.baidu.com') # 請求baidu
10 print("當前瀏覽器內置user-agent:", driver.execute_script('return navigator.userAgent')) # 返回當前瀏覽器的ua
11 
12 driver.execute_script('window.open()') # 打開一個新窗口
13 driver.switch_to.window(driver.window_handles[-1]) # 切換到新打開的窗口
14 driver.get('https://www.163.com') # 在新窗口打開163
15 driver.execute_cdp_cmd('Network.setUserAgentOverride',
16                        {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'}) # 切換user-agent
17 print(driver.execute_script('return navigator.userAgent')) # 第一次更改user-agent
18 driver.execute_cdp_cmd('Network.setUserAgentOverride',
19                        {'userAgent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0'}) # 火狐瀏覽器
20 print(driver.execute_script('return navigator.userAgent')) # 第二次更改user-agent
21 print('經更改后的user-agent為:', driver.execute_script('return navigator.userAgent'))
22 # 切換窗口,切換前休眠,以保證加載完成
23 time.sleep(5)
24 driver.switch_to.window(driver.window_handles[0]) # 切回第一個窗口,看user-agent是否更改
25 print('第一個瀏覽器窗口的user-agent為:', driver.execute_script('return navigator.userAget')) #None
26 driver.execute_cdp_cmd('Network.setUserAgentOverride',
27                        {'userAgent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}) # 給第一個窗口添加ua
28 print(driver.execute_script('return navigator.userAgent'))

輸出為:

1 當前瀏覽器內置user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
2 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
3 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
4 經更改后的user-agent為: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
5 第一個瀏覽器窗口的user-agent為: None
6 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM