User Agent

簡稱 UA,會讓服務器了解發送請求的客戶端的操作系統之類的訊息,在爬蟲時就是表明身分的概念

常見 UA

解析

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

解析上方 :

  • Mozilla/5.0 : 通常都是這個開頭(可以是 5.0 或 4.04.0是很古早的)
  • Windows NT 10.0 : window 10 系統
    下方提供更多案例 :
    • Windows NT 5.0 : Windows 2000
    • Windows NT 5.1 : Windows XP
    • Windows NT 5.2 : Windows Server 2003 R2
    • Windows NT 6.0 : Windows Vista 或 Windows Server 2008
    • Windows NT 6.1 : Windows 7 或 Windows Server 2008 R2
    • Windows NT 6.2 : Windows 8 或 Windows Server 2012
    • Windows NT 6.3 : Windows 8.1 或 Windows Server 2012 R2
    • Windows NT 10.0 : Windows 10 或 Windows Server 2016
  • Win64; x64 : x64 版瀏覽器在 x64 版 Windows 上執行
    下方提供更多案例 :
    • 沒特別註明 : x86 版瀏覽器在 x86 版 Windows 上執行
    • WOW64 : x86 版瀏覽器在 x64 版 Windows 上執行
  • AppleWebKit/537.36 : 瀏覽器內核
  • KHTML : HTML 排版引擎
  • like Gecko : 不是 Geckeo 瀏覽器,但是運行的像 Geckeo 瀏覽器
  • Chrome/119.0.0.0 : Chrome 的版本
  • Safari/537.36 : 因為 AppleWebKit 渲染引擎是 Apple 開發的,而Google 採用它,為了獲得伺服器端的正確回應,就進行偽裝

範例

以下是常見的 UA 範例 :

  • PC/ Chrome : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36

看自己的 UA

執行以下步驟 :
F12

web裡面
隨意點擊一個名稱裡的資料
右方的 header 往下滑會找到 User-Agent

IP

這是自己電腦的定位
可以用 https://www.whatismyip.com.tw/ 來看自己目前的 IP

假設在爬蟲時不想給別人得知自己的 IP
可以使用下面的方法更改 IP :

資安小補充
如果只是單純更改自己的 IP 其實對於黑客來說還是有辦法得知你的真實 IP
所以有些黑客會使用更多的 IP 進行跳板
但太多的跳板可能會使連線非常緩慢
所以通常會用 3 - 5 個 IP 當作跳板
紅方(攻擊者) 通常會在跳板中加入路由器或 Cisco 的產品
這樣在攻擊之後可以把日誌清除掉
這樣藍方(防守方)在追蹤的時候就會找不到登陸的 IP
實現斷點
如果都是使用主機的話有機會被恢復日誌找回真實 IP

資料來源 :
https://www.datarecovery.com.tw/news/hardware/2010-10-31/792.html

python 中實做

先下載這個套件

pip install fake_useragent

補充 :
假設下載了套件但執行時無法使用
請先在網路上找到 fake_useragent 的 .json 檔
接著改成裝在這個路徑當中
"C:\Users\ACER\AppData\Local\Temp\"
應該就可以使用了

然後就可以使用這個套件獲取到隨機的 UA 了

from fake_useragent import UserAgent ua = UserAgent() # Get a random browser user-agent string print(ua.random)

其實還可以有更多用法
可以從網路上找尋

得到 UA 後
就是要讓我們爬蟲時送出的請求包含我們隨機產生的 UA

url = 'https://www.google.com/' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17'} response = get(url, headers=headers) html_doc = response.text

在 headers 當中其實還可以包含更多可以設定的參數
像是 accept 之類的
如果有必要可以視情況加入

補充Referer :
假設遇到一些圖片之類的沒辦法直接爬取
這時可以在 headers 當中加入 'Referer':''
'Referer' 當中就是放入一個網站
這個網站就是我們要偽造請求的網站
像是爬圖片的話就可以放入這個圖片的主頁面的網址

補充Proxy :
這是可以更改發送請求的 IP
下面是舉例

# set ip and port
proxy = "94.181.174.77:4153"

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')

driver = webdriver.Chrome(service = s, options=chrome_options)

除此之外,也可以設定延遲時間讓網站不會判斷是自動程式

time.sleep(2) # 延遲 2 秒