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