反反爬蟲策略

2022-07-06 20:54:09 字數 2568 閱讀 5578

點選我前往github檢視源**   別忘記star

自建**池

一.對請求ip等進行限制的。

以知乎為例,當我們的請求速度到達一定的閾值,會觸發反爬蟲機制!

在我爬取知乎百萬使用者資訊中,出現了429錯誤(too many requests) 詳情請見我的部落格

應對策略.

1.降低爬蟲採集速率,使速率略低於閾值

進行測試,偵探出閾值。

開啟6個執行緒抓取時,伺服器返回429

for (int i = 0; i < 6; i++)

開啟5個執行緒時,執行良好,沒有遭到阻礙

for (int i = 0; i < 6; i++)

所以,如果任務量比較小可以採取這種策略進行

2.建立**池

c#實現**服務很簡單

詳細請見我的部落格

每次請求都在**池中隨機獲取乙個**,這樣就不會達到閾值了。缺點是網上收集**有效率很低,隨時都可能無法使用。

3。使用雲**服務

服務商的**穩定,高質量。以阿布雲為例

官方**:

request.keepalive = true;//啟用長連線

else if (response.contentencoding.tolower().contains("deflate"))//解壓}}

else}}

}}request.abort();

watch.stop();

console.writeline("請求網頁用了毫秒", watch.elapsedmilliseconds.tostring());

}catch

", url);

}return source;

}其他:根據友軍情報,伺服器可能不是對ip進行限制,而是對賬戶進行限制,及時使用**每次請求都是同一賬戶,如果對賬戶進行限制,可以申請大量賬戶,建立cookie池,每次請求都隨機獲取乙個cookie,保證低於閾值。除了cookie池還有useragent池,根據情況建立。

二.對引數進行加密

現代web應用富ajax,如果是想要資料報含在ajax中,直接分析ajax返回資料就可以了,但是人家可沒有那麼容易讓你的手

看看網易雲**

網易對引數進行了加密,想破解加密演算法可行性太低,對於這種引數加密,採取在應用中內嵌瀏覽器。

採用的是 webbrowser

引入命名空間

using system.windows.forms;

private

static

string

htmlstr;

private

static

void gethtmlwithbrowser(object

url)

if (wb.readystate ==webbrowserreadystate.complete)

}

}

做個測試   按單曲搜尋下「煙霞」

這樣我們就拿到了搜尋資料

爬蟲 反反爬 IP

ip反爬不用說了,入門級的 git上開源的proxy pool很多,找那個most star的,缺點用的人多,響應速度慢,可用率低。公司有預算的話,購買付費 常用的幾家 芝麻 阿布雲,多貝雲,大象,曾打 給 公司,貌似都是在全國各地拉網線,建機房,adsl撥號,質量差不太多,詳細參考崔慶才部落格,有...

詳解cookie反反爬策略

首先先大概了解一下cookie的作用 cookie一般是登入後產生 post 用來保持登入狀態的,一般登入一次,下一次訪問該 下的其他 時就不需要登入了,這就是由於cookie的作用,cookie就是給無狀態的http https協議新增了一種保持之前狀態的功能,這樣下次處理資訊的時候就不用重新獲取...

反反爬蟲相關機制

來自於scrapy官方文件描述 這裡是乙個例子 middlewares class scrapy.contrib.middleware.middlewareprocess request 必須返回以下其中之一 乙個 none 乙個 response 物件 乙個 request 物件或 raise i...