爬蟲怎麼解決封IP

2021-09-26 04:16:14 字數 2075 閱讀 7508

在網路爬蟲抓取資訊的過程中,如果抓取頻率高過了**的設定閥值,將會被禁止訪問。通常,**的反爬蟲機制都是依據ip來標識爬蟲的。

1. 使用**ip,在ip被封掉之前或者封掉之後迅速換掉該ip,這種做法主要需要大量穩定的**ip,**ip有免費的,但是不穩定。這裡的技巧是迴圈使用,在乙個ip沒有被封之前,就換掉,過一會再換回來。這樣就可以使用相對較少的ip進行大量訪問。訊**首頁每10分鐘更新的免費**,發現還是挺好的,於是就先把訊**首頁的免費**先爬下來(10分鐘爬一次資料快取起來,快取10分鐘失效),再用爬下來的**迴圈使用去爬其他**的東西。

2. 使用vpn,vpn跟帶來作用類似,只是技術上稍有差別。本質是一樣的。

3. 使用有大規模雲採集集群的軟體工具,比如八爪魚

4.抓取的時候控制訪問頻次,抓取後(sleep)休息下再抓

5.對於動態獲取ip的路由器,重啟後自動換ip

以上三種方式,優先推薦使用**ip,當然八爪魚採集器也支援使用**ip。或者使用雲採集平台

1、簡單一點的可以在header偽造x-forwarded-for,並偽造referer,**如下:

curl_setopt($ch, curlopt_referer, "");2、上面的方法大多數能糊弄過去,但也有抓到了真實ip的。就使用**ip,麻煩在於你有乙個有效的**ip和埠號,有的還需要使用者名稱密碼,可以根據**建立有效的**資料庫。**如下:

// 指定**位址 

$ip = $ips[array_rand($ips, 1)]; // 隨機獲取乙個**ip

curl_setopt($ch, curlopt_proxy, $ip);

// 如果需要的話,提供使用者名稱和密碼

curl_setopt($ch, curlopt_proxyuserpwd,'user:pass');

另外還有一種情況,就是用瀏覽器可以訪問,用curl就是不行,發現對方檢查了useragent,如果沒有就認為是抓取等非法**,那麼我們就自己在header加上useragent,**如下:

測試偽造資訊info.php

<?php

function getclientip()

else else else }}

return $ip;

}echo "ip: ".getclientip()."

";echo "referer: ".$_server["http_referer"];

呼叫fake.php,請求info.php

curl_setopt($ch, curlopt_httpheader, array('x-forwarded-for:8.8.8.8', 'client-ip:8.8.8.8')); //構造ip

curl_setopt($ch, curlopt_referer, " "); //構造來路

curl_setopt($ch, curlopt_header, 1);

$out = curl_exec($ch);

curl_close($ch);沒有負載時使用remote_addr獲取真實ip,remote_addr無法偽造,可以通過**來處理。有負載時使用http_x_forwarded_for獲取ip

完整例子

<?php

function task($url)

else

}//此函式提供了國內的ip位址

function randfakeip()

return $headerarr;

}//瀏覽器useragent

function randfakeuseragent()

爬蟲防封IP

當抓取資料逐漸增大時,伺服器的負荷會加大,會直接封掉來訪ip 採取措施 1.建立請求頭部資訊 建立請求頭 strhtml requests.get url,headers headers 使用get方式,獲取網頁資料 2.我們就只修改user agent還不夠,爬蟲1秒鐘可以抓取很多,通過統計ip的...

爬蟲怎麼解決IP不足問題

在抓取資訊的過程中,網頁爬蟲往往被禁止訪問 但始終找不到原因,這也是很多人頭疼的問題。這裡有幾個方面可以幫助你初步發現 出了問題。如果你發現你抓取的資訊與頁面上正常顯示的資訊不同,或者你抓取的是空白資訊,那麼很可能是在 上建立頁面的程式有問題 如果爬行頻率超過 設定的閾值,將被禁止訪問。一般 的反爬...

防止爬蟲的手段 爬蟲IP防封的方法

爬蟲行動被限制,改ip只是其中乙個辦法,對於競爭對手或者目標群體的資料收集,我們樂此不疲。我們的爬蟲行動往往會受到很多限制,以致最終被完全封鎖掉。有什麼方法能避免呢?往下看。1.驗證碼 我們在很多 會遇到,如果請求量大了之後就會遇到驗證碼的情況。最讓人詬病的12306,其實也是一定程度上的防止非正當...