回覆列表
  • 1 # 你看我獨角獸嗎

    IP

    網站檢測網路抓取活動的最簡單方法之一是透過IP跟蹤。該網站可以根據其行為識別IP是否是機器人。當網站發現定期 或在 短時間內 從單個 IP地址 傳送了 大量請求 時, 很有可能該IP被阻止,因為它被懷疑是機器人。在這種情況下,構建一個防爬蟲真正重要的是 每單位時間的訪問次數 和 訪問頻率。這是您可能會遇到的一些情況。

    方案1:幾秒鐘內進行多次訪問。真正的人無法快速瀏覽。因此,如果您的搜尋器頻繁向網站傳送請求,則該網站肯定會阻止將該IP識別為機器人的IP。

    解決方案:降低爬蟲速度。在執行或增加兩個步驟之間的等待時間之前設定延遲時間(例如“睡眠”功能)將始終有效。

    方案2:以完全相同的速度訪問網站。真實的人類不會一遍又一遍地重複相同的行為模式。一些網站會監視請求的頻率,如果以完全相同的模式(例如每秒一次)定期傳送請求,則很可能會啟用防抓取機制。

    解決方案:為搜尋器的每個步驟設定隨機延遲時間。以隨機的抓取速度,爬蟲的行為將更像人類瀏覽網站的方式。

    方案3:某些高階防爬技術將採用複雜的演算法來跟蹤來自不同IP的請求並分析其平均請求。如果IP的請求異常,例如每天傳送相同數量的請求或在同一時間訪問相同的網站,則會被阻止。

    解決方案:定期更改您的IP。大多數VPN服務,雲伺服器和代理服務都可以提供輪換IP。透過這些旋轉的IP傳送請求時,爬網程式的行為不像漫遊器,這可以減少被阻止的風險。

    登入

    許多網站,尤其是諸如Twitter和Facebook之類的社交媒體平臺,僅在您登入網站後才向您顯示資訊。為了對此類站點進行爬網,爬網程式還需要模擬日誌記錄步驟。

    登入網站後,搜尋器需要儲存cookie。Cookie是一小段資料,用於儲存使用者的瀏覽資料。如果沒有Cookie,該網站會忘記您已經登入,並要求您再次登入。

    此外,某些具有嚴格抓取機制的網站可能僅允許部分訪問資料,例如即使登入後每天也有1000行資料。

    您的漫遊器需要知道如何登入

    2)首先登入,然後儲存 cookie。對於允許cookie的網站,他們會透過儲存cookie來記住使用者。有了這些Cookie,您無需在短期內再次登入該網站。由於採用了這種機制,您的搜尋器可以避免繁瑣的登入步驟,並且無需收集所需的資訊。

    3)不幸的是,如果遇到上述嚴格的轉義機制,則可以安排抓取工具以固定頻率(例如每天一次)來監視網站。計劃搜尋器在一段時間內抓取最新的1000行資料並累積最新的資料。

    UA

    UA代表的是User-Agent,它是網站的標頭,用於識別使用者的訪問方式。它包含諸如作業系統及其版本,CPU型別,瀏覽器及其版本,瀏覽器語言,瀏覽器外掛等資訊。

    UA示例:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_7_0)AppleWebKit / 535.11(KHTML,例如Gecko)Chrome / 17.0.963.56 Safari / 535.11

    抓取網站時,如果您的搜尋器不包含標題,則只會將其自身標識為指令碼(例如,如果使用python來構建搜尋器,則它將自身宣告為python指令碼)。網站肯定會阻止指令碼發出的請求。在這種情況下,搜尋器必須偽裝成帶有UA標頭的瀏覽器,以便網站可以為其提供訪問許可權。

    有時,即使您輸入具有相同URL的網站,網站也會向不同的瀏覽器或不同的版本顯示不同的頁面或資訊。機會是與一個瀏覽器相容而其他瀏覽器被阻止的資訊。因此,為了確保您可以進入正確的頁面,將需要多個瀏覽器和版本。

    在不同的UA之間切換以避免被阻止

    更改UA資訊,直到找到正確的資訊。如果長時間使用相同的UA,則應用了複雜的防爬網技術的某些敏感網站甚至可能阻止訪問。在這種情況下,您需要定期更改UA資訊。

    5.AJAX

    如今,更多的網站是使用AJAX開發的,而不是傳統的Web開發技術。AJAX代表非同步JavaScript和XML,這是一種非同步更新網站的技術。簡而言之,當頁面內僅進行少量更改時,無需重新載入整個網站。

    那麼您怎麼知道一個網站是否適用AJAX?

    沒有AJAX的網站:即使您僅在網站上進行了很小的更改,整個頁面也會被重新整理。通常,會出現載入符號,並且URL會更改。對於這些網站,我們可以利用該機制並嘗試找到URL更改方式的模式。然後,您可以批次生成URL,並直接透過這些URL提取資訊,而不必教您的爬蟲如何導航類似人類的網站。

    帶有AJAX的網站:僅更改您單擊的位置,並且不會出現載入標誌。通常,Web URL不會更改,因此搜尋器必須以直接的方式進行處理。

    對於AJAX開發的某些複雜網站,將需要特殊的技術來找出那些網站上獨特的加密方式並提取加密資料。解決此問題可能很耗時,因為加密的方式在不同的頁面上會有所不同。如果您可以找到帶有內建JS操作的瀏覽器,那麼它可以自動解密網站並提取資料。

  • 2 # 萌新程式設計師成長日記

    說下我以前爬某電影評分網站時遇到的反爬機制吧,感覺還挺有趣的。

    爬資料時遇到的問題

    首先來說說我在爬資料時遇到的問題,看圖:

    頁面上正確顯示了評分為9.5,按F12開啟除錯模式,找到該元素節點時發現顯示的是兩個框框,再開啟原始碼發現是一串亂碼。

    頁面數字顯示正常,在原始碼中卻顯示亂碼,可以肯定該網站肯定採取了反爬蟲機制,有點意思!

    反爬蟲機制原理

    下面分析一下這個反爬蟲機制的原理。

    做過web前端開發的人知道顯示框框一般都是由於引用了字型檔案引起,那麼這個網站反爬蟲機制會不會跟字型檔案有關呢?

    重新整理一下頁面,發現一個字型檔案的請求:

    我們手動將這個字型檔案下載下來,使用字型編輯工具開啟:

    雖然我不是太懂字型檔案的原理,但是按我的理解其實就是一個字元和數字關係對映檔案,例如字元E282對應數字9、字元F11B對應數字5。

    現在我們再來看一下原始碼裡的亂碼:

    有沒有看出什麼端倪?

    是的,它們並不是什麼亂碼,而是而字型檔案裡的字元一一對應的!

    根據對應關係可以推斷出亂碼“.”對應數字9.5,正好和頁面上顯示的是一致的。

    總結

    這個反爬蟲機制的現象是頁面顯示數字正常,但是原始碼裡顯示亂碼;這個反爬蟲機制的工作原理就是透過字型檔案將亂碼和數字建立好對映關係。

  • 3 # 象牙之森

    傳統的ua限制,ip請求限制,驗證碼等就不說了,來點新鮮的吧

    轉換字型,需要做字型對映,比如大眾點評

    每一項生成不同css或者id,增加規則定義難度,比如某些搜尋引擎

    在內容元素上增加一個浮動塊,讓使用者選不中當前元素

    圖片需要滾動到可見視窗的時候才裝載,不然不裝載,並且圖片地址也不對,比如阿里巴巴國際版

    如果用了工具,比如八爪魚,后羿,迷你派等採集器的感受可能會深一點。

  • 中秋節和大豐收的關聯?
  • 履歷毫無亮點的人,面試的自我介紹環節怎麼破?