iT邦幫忙

1

如何用python取得user-agent

  • 分享至 

  • xImage

想取得自己電腦的瀏覽器user-agent
網上很多方法都是要開啟瀏覽器後F12或開啟網址
然後再複製到python中

from fake_useragent import UserAgent測試過不行
他取得的瀏覽器user-agent和我電腦的瀏覽器user-agent不一樣

有什麼方法取得自己瀏覽器的user-agent嗎

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
wrxue
iT邦好手 1 級 ‧ 2021-08-04 07:55:52

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 爬蟲下載當前頁面驗證碼圖片

0
froce
iT邦大師 1 級 ‧ 2021-08-04 08:23:32

一般來說,除了selenium這種直接操作瀏覽器的爬蟲以外,其他的爬蟲方法如requests都需要自己去複製一份你想偽裝的UA。

不過複製UA也不是啥難事就是了。

fake_useragent的用法

from fake_useragent import UserAgent

ua = UserAgent()
print(ua.firefox)
s4028600 iT邦新手 5 級 ‧ 2021-08-04 09:38:26 檢舉

這個方法不行的原因是因為我cookies和UserAgent要相符
我cookies是用browser_cookie3取得瀏覽器的
但fake_useragent取得的UserAgent和瀏覽器不一樣
導致無法登入

froce iT邦大師 1 級 ‧ 2021-08-04 12:07:53 檢舉

這個庫看起來是你用你系統上的瀏覽器登錄一次,取得cookies,然後硬把你cookies從瀏覽器資料庫取出來。
所以UA請用你瀏覽器的UA。

用selenium/requests的話就直接登錄直接拉cookies就行了,所以一開始我看到你的問題有點矇。

s4028600 iT邦新手 5 級 ‧ 2021-08-04 23:10:12 檢舉

會有這個問題是因為之前輸入瀏覽器ua使用沒問題
但瀏覽器更新了
python裡的ua卻沒改
導致錯誤
後來才知道cookies要和ua配
所以才想知道自動讀取系統瀏覽器ua而不是手動

因為直接登錄要驗證碼
目前我無法做到

0
japhenchen
iT邦超人 1 級 ‧ 2021-08-04 11:09:53

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'}}

我要發表回答

立即登入回答