在這篇文章之前,很多人應(yīng)該看過很多關(guān)于建立代理ip池的文章,然后發(fā)現(xiàn)都是坑,不能用。多說點(diǎn)。
不說第一種方法,真的有好幾個代理IPs(別問我誰的好,我不知道,我寫這篇文章是為了推廣我自己寫的項(xiàng)目)。
第二,github上的這類項(xiàng)目已經(jīng)出海了,而且大部分都是,你建好之后,發(fā)現(xiàn)爬蟲還是爬不動,免費(fèi)的代理ip根本用不上!好一點(diǎn)的haipproxy,我也用過,但是沒有解決根本問題!大多數(shù)ip故障太快!而各種錯誤,爬十頁,能成功就是燒香。
那么,為什么免費(fèi)代理ip不起作用呢?很多人也問,那些ip代理真的有那么多IP嗎?
實(shí)際上,很多免費(fèi)的代理IP被掃描出來,掃描IP段、端口和特征碼。發(fā)現(xiàn)可以用的,也就是代理ip。
代理ip不容易使用,這一般是由于以下原因:1。掃描的代理ip是臨時的;2.訪問量太大,服務(wù)器死了;3.原來不是代理IP;4.有認(rèn)證;5.它本來就是http的代理,你用它來訪問https,當(dāng)然不行!6.代理異常,連接中斷,帶寬被污染,并返回錯誤。
如果不想花錢,只能自己找一個穩(wěn)定的代理ip,然后使用。而總代理池,他們都是用百度、知乎、豆瓣的網(wǎng)站訪問,說明可以用,但是失敗了。最多加個分算點(diǎn)什么。
之前看過haipproxy的代碼,成功率高的話還得自己寫驗(yàn)證。說白了就是在爬蟲使用之前,盡量去訪問,提高成功率。我覺得意義不大。
以上都是廢話,以下是主要的。事實(shí)上,一些免費(fèi)的代理ip是非常穩(wěn)定的代理服務(wù)器,所以這些服務(wù)器可以使用很長時間。
在我抓取的免費(fèi)代理ip中,過濾后剩余ip的訪問成功率基本為90%+。
首先,其實(shí)最簡單的方法就是根據(jù)服務(wù)器的開放端口來判斷。如果服務(wù)器有80、3389、3306、22等開放端口,說明服務(wù)器上還有其他服務(wù)在運(yùn)行,掛機(jī)的概率很小。如果是政府或者學(xué)校的服務(wù)器,就更穩(wěn)定了。當(dāng)然,也可以開放其他端口。
第二,是判斷服務(wù)器的訪問速度,需要訪問幾個不同的網(wǎng)站才能得到平均值,這樣訪問速度相對穩(wěn)定。
第三,代理ip的壽命越長,越穩(wěn)定。當(dāng)然,這是在你構(gòu)建和抓取它之后計(jì)算出來的。
第四,重新檢測代理類型。通過訪問不同的http和https網(wǎng)站,判斷代理是http還是https,并進(jìn)行劃分。訪問http網(wǎng)站時使用http的代理,https的代理為https訪問提供服務(wù),可以提高訪問概率。
因此,根據(jù)這幾點(diǎn),我重寫了一套代理ip池項(xiàng)目。目前我抓取ip 450,長期穩(wěn)定的ip在6左右。雖然很少,但相當(dāng)穩(wěn)定。