點選我前往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...