iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
4

嗨,今天是第27天,美好的星期日終於好好放鬆了,早上還去看電影呢(笑)。
好的,我們回到主題,回想剛開始在學的時候遇到了一個問題,在爬某些網站的時候一直連不上,像是如下圖:

Imgur

是因為我們一般寫的爬蟲時會默認告訴服務器自己發送了爬取請求,有的網站是不允許被爬蟲的,大概是因為會涉及到商業問題吧?最後,所以我們可以設定User-Agent假裝自己是瀏覽器,因為User-Agent會告訴網站它是透過什麼工具(通過UA分析出瀏覽器名稱、瀏覽器版本號、渲染引擎、操作系統)發送請求的,就可以騙過該網站了?

HTTP中,User-Agent字串通常被用於內容協商,而原始伺服器為該回應選擇適當的內容或操作參數。例如,User-Agent字串可能被網路伺服器用以基於特定版本的用戶端軟體的已知功能選擇適當的變體。

該如何知道自己的User-Agent

  • 打開瀏覽器
  • 右鍵檢查
  • Network

Imgur

來看User-Agent這長串代表什麼意思

Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]

下面這個是我的User-Agent

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6
  • 表示我是使用Safari瀏覽器,瀏覽器版本11.0.3,網頁渲染引擎WebKit 604.5.6,電腦操作系統Mac OS
  • Mozilla/5.0 是一個通用標記符號,用來表示與Mozilla相容,這幾乎是現代瀏覽器的標配。
  • Gecko排版引擎(頁面渲染引擎)

知道了該如何查看User-Agent後,我們就將它加到Scrapy中吧,開啟檔案setttings.pyUSER_AGENT=後貼上你的User-Agent字串:

USER_AGENT = 'Mozilla/5.0 (...)'

接著,再執行一次我的爬蟲程式,就會看到多了下面這一行:

Imgur

還有成功(200)的訊息:

Imgur

就表示我們設定完User-Agent後就可以爬到該網站的內容了!

除了查看自己瀏覽器的UA外,現在我們來看一下如何隨機生成UA吧!也就是使用fake-useragent

  • 安裝 fake-useragent
  • (option) 在開始之前,啟用virtualenv
source path/to/your/virtualenv/bin/activate

若沒有fake-useragent套件,可用pip安裝:

  • 若是pip3則將pip改成pip3
pip install fake-useragent
from fake_useragent import UserAgent
ua = UserAgent()
  • 查看ie的UA
ua.ie
# 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)'
  • 查看Chrome的UA
ua.chrome
# 'Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36'
  • 隨機產生UA
ua.random

如下圖,可以看到隨機產生不同的UA

Imgur

好的,今天說明了UA,以及用Python隨機產生假的UA,那就明天見了!

使用者代理 - 維基百科,自由的百科全書
fake-useragent · PyPI


上一篇
[Day 26] 瀏覽器上的Cookie
下一篇
[Day 28] 實戰:線上書店爬蟲流程
系列文
Scrapy爬蟲與資料處理30天筆記30

尚未有邦友留言

立即登入留言