爬蟲又被擋了怎麼辦?常見的反爬蟲處理策略

更新於 發佈於 閱讀時間約 7 分鐘

> 本文原始發佈於:爬蟲又被擋了怎麼辦?常見的反爬蟲處理策略 | 資料科學家的工作日常

資料爬蟲是資料分析的起手式,必須有好的、可用的資料才得以進行高品質的資料科學專案,爬蟲也是資料科學領域開發者的第一項挑戰。但是當你學完爬蟲的技術之後,開始真的跳入爬蟲世界之後會發現有網站其實沒有想像中好爬。當自動化的爬蟲技術越來越廣泛應用的同時,網站方也有一些「反爬蟲」的機制出現,讓開發者無法輕易的爬蟲所需的資料。今天這篇文章想跟大家分享的是當你的爬蟲程式又被擋了怎麼辦?常見的反爬蟲知識以及對應的克服反爬蟲處理策略有哪些。

raw-image

什麼是惡意爬蟲?

程式擁有「執行速度」與「記憶儲存」這兩種特性,我們可以利用程式自動化的重複、大量執行指定的操作。網頁爬蟲即是用程式自動化實現收集來自於網頁中資料的一種場景,但若這個「自動化」太暴力時則可能會造成對方的網站受到影響,稱為「惡意機器人( Bat Bot )」。網頁爬蟲自動化收集的行為太暴力的情況下,可能會造成對方的網站受到影響,常見的惡意行為有以下幾種:

  • DoS 或 DDoS
  • 非人為的廣告點擊行為
  • 異常流量
  • 商業機密洩漏

常見的反爬蟲處理策略

因此,反爬蟲主要就是針對「惡意的爬蟲程式」設計的防堵機制,包含「系統負擔」與「資料洩漏」兩個角度。從「資料洩漏」的角度來看,許多網站為了保護資料、避免網頁上的公開資訊被網頁爬蟲給抓取,而出現了「反爬蟲」的機制出現。所謂「道高一尺,魔高一丈」,爬蟲工程師也發展了出一系列「反反爬蟲」的策略。換句話說,因此,我們在思考如何克服反爬蟲處理策略,其實背後思考的點是如何讓你的爬蟲不要踩到對方的線。常見的克服反爬蟲處理策有:

  • 瀏覽器標頭與基本資訊
  • 驗證碼處理
  • 模擬真實用戶登入授權
  • 使用代理伺服器與第三方IP
  • JavaScript 渲染的動態網頁

瀏覽器標頭與基本資訊

網頁的傳輸會根據 HTTP 協定將溝通分為「Request」和「Response」兩種角色:

raw-image

其中 Request 當中的 Header(標頭檔)會由瀏覽器自動產生,包含跟發送方有關的資訊,例如「Host」、「User-Agent」.. 等等。

raw-image

因此,許多網站會將 HTTP Header 視為是第一個檢查的方式,利用 Header 判斷來源是否合法。Header 會由瀏覽器自動產生,如果直接透過程式發出的請求預設是沒有 Header 的。

驗證碼處理

你在瀏覽網頁的時候,有看過這些驗證機制嗎?網頁驗證碼的專業術語稱為「CAPTCHA 」(全名是 Completely Automated Public Turing test to tell Computers and Humans Apart 自動判別電腦與人類的公開圖靈測試),是目前在網頁當中常見的一種驗證機制,用來判斷惡意的使用者干擾與攻擊。驗證碼機制是許多網站傳送資料的檢查機制,對於非人類操作與大量頻繁操作都有不錯的防範機制。

raw-image

爬蟲在實作上遇到驗證碼的做法會是這樣,先把圖抓回來,再搭配圖形識別工具找出圖中的內容。之前也有寫過一篇針對滑動驗證碼的解法:「讓 Python 爬蟲也能讀得懂「滑動驗證碼」」,有興趣的朋友可以看一下。

模擬真實用戶登入授權

大部分網站都有權限管理機制,使用上也會有登入/登出的機制。但由於爬蟲多半是基於 HTTP Request /Response 一來一回的方式取資料。如果直接使用爬蟲程式的話,要如何模擬使用者登入的行為就會是一個挑戰。我們把「登入系統/會員機制」過程稱為「授權」,而在網站開發中的的授權做法有兩種:「token」跟「session/cookie」。

Token 類似 API 的方法,需要在每次請求的過程中也把你申請到的合法權杖(token)一起帶上。通常需要由開發者自己放在 Request 的 Headers 當中,讓對方可以判別你是一個合法登入的來源;Session/Cookie:第二種方法是網站會主動把權限判斷儲存在「瀏覽器當中的 cookie」,發出 Request 請求時會自動跟著請求一起發出去。

使用代理伺服器與第三方IP

當爬蟲程式大量存取特定網站時,網站方可以採用最直接的防護機制 - 封鎖 IP,直接透過底層的方式做屏蔽。這邊的解法我們會採用「代理伺服器(Proxy)」的概念來處理,所謂的代理伺服器即是透過一個第三方主機代為發送請求,因此對於網站方而言,他收到的請求是來自於第三方的。

raw-image

這邊也提供一些免費的第三方代理伺服器:

JavaScript 渲染的動態網頁

最後一種是「JavaScript 渲染的動態網頁」,動態網頁是指網頁在瀏覽器取得 HTML 後,才透過 JavaScript 根據需求動態地取得資料更新 HTML 的一種技術。動態網頁與靜態網頁最大的不同是「網頁上的資料」是在什麼時間點取得產生的。因此,動態爬蟲程式必須針對這種動態更新資料的網頁調整,才有辦法取得真正的資料。

網頁的問題是因為利用 Python 攔截到的 Response 永遠會是還沒執行 JavaScript 前那個相對空白的畫面。動態網頁爬蟲可以利用「從模擬瀏覽器改成模擬使用者開啟瀏覽器」,藉由模擬的瀏覽器執行 JavaScript 拉回資料。

打造爬蟲是資料人的基本技能

過去的資料來源多半來自於公司內部的資料庫或資料倉儲系統,仰賴於工程師跟 IT 部門的支援。但隨著 Big Data 的技術到位,實務上對於資料的要求更加大量也更加多元。現在對於資料的使用者其實很廣泛,通常很多資料的需求也都是實現性的。這種情況下可能沒有那麼多的工程師或開發人力能夠隨時提供彈性的資料,因此打造資料收集力已經成為所有資料工作者的必備技能了。

Reference

[1] 常見的反爬蟲技術有哪些?如何防止別人爬自己的網站?
[2] 9种常见的反爬虫策略思路
[3] python爬虫系统学习十一:常见反爬虫机制与应对方法

嗨,你好,我是維元,持續在不同的平台發表對 #資料科學、 #網頁開發 或 #軟體職涯 相關的文章。如果對於內文有疑問都歡迎與我們進一步的交流,都可以追蹤我的 Facebook 粉專Instagram 帳號,也會不定時的舉辦分享活動,一起來玩玩吧 ヽ(●´∀`●)ノ


留言
avatar-img
留言分享你的想法!
avatar-img
張維元的沙龍
8會員
3內容數
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
在使用網頁爬蟲之前,首先確定爬下來的資料,是否符合著作權法的合理使用規範;其次,如果爬下來的資料涉及他人個資,最好是取得同意後再使用;再者,如果爬下來的資料是事業競爭對手的資料,則是能免則免。
Thumbnail
在使用網頁爬蟲之前,首先確定爬下來的資料,是否符合著作權法的合理使用規範;其次,如果爬下來的資料涉及他人個資,最好是取得同意後再使用;再者,如果爬下來的資料是事業競爭對手的資料,則是能免則免。
Thumbnail
Facebook 時常改版、限制多,要找到一個適合、好用且簡單上手的工具相當困難,否則就要自己寫龐大的程式爬蟲。本篇介紹簡單好用的 facebook-scraper 套件幫助你順利爬蟲。
Thumbnail
Facebook 時常改版、限制多,要找到一個適合、好用且簡單上手的工具相當困難,否則就要自己寫龐大的程式爬蟲。本篇介紹簡單好用的 facebook-scraper 套件幫助你順利爬蟲。
Thumbnail
介紹 基礎概念 爬蟲其實就是一個自動提取網頁的程式 程式基本運作:Url開始-->分析獲取數據&找到Url-->遞迴下去-->結束 分析獲取數據運作:下載html--解析獲取數據--數據保存 爬蟲可以做哪些事情? 數據為王:抓小說數據,做個內容站; 電影/動漫下載站 抓圖片 政府的公開招標數據,每天
Thumbnail
介紹 基礎概念 爬蟲其實就是一個自動提取網頁的程式 程式基本運作:Url開始-->分析獲取數據&找到Url-->遞迴下去-->結束 分析獲取數據運作:下載html--解析獲取數據--數據保存 爬蟲可以做哪些事情? 數據為王:抓小說數據,做個內容站; 電影/動漫下載站 抓圖片 政府的公開招標數據,每天
Thumbnail
在資訊性的時代,幾乎每個企業都有自己的網站,提供最大價值及免費的資訊吸引受眾及潛在客戶,從而提高曝光率及點擊率,有助將其轉換成銷量。若資訊安全的預防措施不足,容易受到網絡攻擊及內部安全問題。在這情況下更顯得網站漏洞掃描對企業的重要性,下文會為大家一一講解網站漏洞掃描。 為什麼企業需要網站漏洞掃描?
Thumbnail
在資訊性的時代,幾乎每個企業都有自己的網站,提供最大價值及免費的資訊吸引受眾及潛在客戶,從而提高曝光率及點擊率,有助將其轉換成銷量。若資訊安全的預防措施不足,容易受到網絡攻擊及內部安全問題。在這情況下更顯得網站漏洞掃描對企業的重要性,下文會為大家一一講解網站漏洞掃描。 為什麼企業需要網站漏洞掃描?
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 CRSF攻擊示意圖 如何防範CSRF?
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 CRSF攻擊示意圖 如何防範CSRF?
Thumbnail
資料爬蟲是資料分析的起手式,必須有好的、可用的資料才得以進行高品質的資料科學專案,爬蟲也是資料科學領域開發者的第一項挑戰。但是當你學完爬蟲的技術之後,開始真的跳入爬蟲世界之後會發現有網站其實沒有想像中好爬。當自動
Thumbnail
資料爬蟲是資料分析的起手式,必須有好的、可用的資料才得以進行高品質的資料科學專案,爬蟲也是資料科學領域開發者的第一項挑戰。但是當你學完爬蟲的技術之後,開始真的跳入爬蟲世界之後會發現有網站其實沒有想像中好爬。當自動
Thumbnail
當你進入一個網站,系統為了要驗證你是不是機器人,提供好多圖片給你選,讓人不堪其擾,這時就讓privacy pass幫你解決吧!!!
Thumbnail
當你進入一個網站,系統為了要驗證你是不是機器人,提供好多圖片給你選,讓人不堪其擾,這時就讓privacy pass幫你解決吧!!!
Thumbnail
上一篇文章,我們分享了十個資安自保技巧的頭五個;這篇再來分享另外五個也很重要的技巧。 如果你還沒看過那篇,可以先把這篇讀完,再去點文末的文章連結,把上一篇也讀完吧。
Thumbnail
上一篇文章,我們分享了十個資安自保技巧的頭五個;這篇再來分享另外五個也很重要的技巧。 如果你還沒看過那篇,可以先把這篇讀完,再去點文末的文章連結,把上一篇也讀完吧。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News