我正在創建一個新的網絡爬蟲使用C#
來抓取一些特定的網站。每件事情都很好。但問題是,某些網站在某些請求後阻止了我的搜尋器IP地址。我嘗試在我的抓取請求之間使用時間戳。但沒有奏效。防止自定義網絡爬蟲被阻止
有什麼辦法可以防止網站阻止我的抓取工具嗎? 一些像這樣的解決方案將有助於(但我需要知道如何應用它們):
- 模擬使用多個IP谷歌機器人或雅虎啜食
- 地址(事件假IP地址)作爲履帶式客戶端IP
任何解決方案都會有所幫助。
我正在創建一個新的網絡爬蟲使用C#
來抓取一些特定的網站。每件事情都很好。但問題是,某些網站在某些請求後阻止了我的搜尋器IP地址。我嘗試在我的抓取請求之間使用時間戳。但沒有奏效。防止自定義網絡爬蟲被阻止
有什麼辦法可以防止網站阻止我的抓取工具嗎? 一些像這樣的解決方案將有助於(但我需要知道如何應用它們):
任何解決方案都會有所幫助。
如果速度/吞吐量不是一個巨大的問題,那麼最好的解決方案可能是安裝Tor and Privoxy並通過它來路由您的爬蟲。然後您的抓取工具將隨機更改IP地址。
如果您需要抓取不希望抓取它們的網站,這是一項非常有效的技術。它還通過讓爬蟲程序的活動非常難以追溯到您,提供了一層保護/匿名性。
當然,如果網站因爲速度過快而阻止了抓取工具,那麼也許您應該對它進行一些限制。
謝謝,它有幫助。我使用Tor並確定Privoxy將其用作Web代理。但另一個重要的說明是我應該配置tor每5分鐘更改一次IP地址。最好的祝福。 –
這是你如何阻止僞裝者(以防萬一有人發現這個頁面搜索時如何阻止那些)
塊那招在阿帕奇:
# Block fake google when it's not coming from their IP range's
# (A fake googlebot) [F] => Failure
RewriteCond %{HTTP:X-FORWARDED-FOR} !^66\.249\.(6[4-9]|[78][0-9]|9[0-5])\.
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0\ \(compatible;\ Googlebot/2\.[01];\ \+http://www\.google\.com/bot\.html\)$ [NC]
RewriteRule .* - [F,L]
或者在nginx的的完整性塊緣故
map_hash_bucket_size 1024;
map_hash_max_size 102400;
map $http_user_agent $is_bot {
default 0;
~(crawl|Googlebot|Slurp|spider|bingbot|tracker|click|parser|spider)$ 1;
}
geo $not_google {
default 1;
66.0.0.0/8 0;
}
map $http_user_agent $bots {
default 0;
~(?i)googlebot $not_google;
}
我不認爲你應該這樣做......如果網站不想被抓取,你不應該這樣做。 – BvdVen
如果某個網站對您進行速率限制,那麼您最好尊重這一點。他們可能受資源限制或任何其他因素。他們可能完全阻止你。當發生這種情況時,爲什麼不減慢你的機器人呢? – jman
這些網站中的一些只是因爲平均http請求率在大約12小時內被阻止。他們不關心我的抓取速度。這是網絡。當你發佈一個網站時,你應該尊重所有想看你的網頁的人。我的問題是,我該如何抓取這些網站的活動,以他們想要的抓取速度進行抓取,我不在乎這是否合法! –