Selenium
透過在瀏覽器執行 JavaScript,取得 User-Agent 資訊
user_agent = driver.execute_script("return navigator.userAgent;")
參考來源 How to get user agent information in Selenium WebDriver with Python
想知道如何在 Python 透過 Selenium 執行 JavaScript 取得資訊可參考這篇
[Python] 使用 Selenium 爬蟲下載當前頁面驗證碼圖片
一般來說,除了selenium這種直接操作瀏覽器的爬蟲以外,其他的爬蟲方法如requests都需要自己去複製一份你想偽裝的UA。
不過複製UA也不是啥難事就是了。
fake_useragent的用法
from fake_useragent import UserAgent
ua = UserAgent()
print(ua.firefox)
這個方法不行的原因是因為我cookies和UserAgent要相符
我cookies是用browser_cookie3取得瀏覽器的
但fake_useragent取得的UserAgent和瀏覽器不一樣
導致無法登入
這個庫看起來是你用你系統上的瀏覽器登錄一次,取得cookies,然後硬把你cookies從瀏覽器資料庫取出來。
所以UA請用你瀏覽器的UA。
用selenium/requests的話就直接登錄直接拉cookies就行了,所以一開始我看到你的問題有點矇。
會有這個問題是因為之前輸入瀏覽器ua使用沒問題
但瀏覽器更新了
python裡的ua卻沒改
導致錯誤
後來才知道cookies要和ua配
所以才想知道自動讀取系統瀏覽器ua而不是手動
因為直接登錄要驗證碼
目前我無法做到
https://pypi.org/project/httpagentparser/
>>> import httpagentparser
>>> s = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.9 (KHTML, like Gecko) \
Chrome/5.0.307.11 Safari/532.9"
>>> print(httpagentparser.simple_detect(s))
('Linux', 'Chrome 5.0.307.11')
>>> print(httpagentparser.detect(s))
{'os': {'name': 'Linux'},
'browser': {'version': '5.0.307.11', 'name': 'Chrome'}}
>>> s = "Mozilla/5.0 (Linux; U; Android 2.3.5; en-in; HTC_DesireS_S510e Build/GRJ90) \
AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
>>> print(httpagentparser.simple_detect(s))
('Android Linux 2.3.5', 'Safari 4.0')
>>> print(httpagentparser.detect(s))
{'dist': {'version': '2.3.5', 'name': 'Android'},
'os': {'name': 'Linux'},
'browser': {'version': '4.0', 'name': 'Safari'}}