1. 程式人生 > >爬蟲ip代理伺服器的簡要思路

爬蟲ip代理伺服器的簡要思路

爬蟲有的時候會遇到被禁ip的情況,這個時候你可以找一下代理網站,抓取一下ip,來進行動態的輪詢就沒問題了,也可以用別人做好的第三方ip代理平臺,比如說crawlera,crawlera是一個利用代理IP地址池來做分散式下載的第三方平臺,除了scrapy可以用以外,普通的java、php、python等都可以通過curl的方式來呼叫,具體如何設定可以檢視 crawlera使用指南



如果不使用第三方的平臺做代理ip,我們就必須得手動抓取ip了,可以google搜尋代理ip,可以找到一大堆網站,找幾個穩定的代理網站,可以寫一個爬蟲指令碼持續抓取,要是使用量不大的話,也可以手動貼上抓取,要是土豪一點呢就買一點其實也可以,大概1塊錢可以買幾千個,還是挺值得的。


這時候如果你使用的是python,你需要自己維護一個ip池,控制每個ip的訪問次數,隨機更換ip什麼的,但是如果你想做成服務化,你可以使用Squid繫結多個ip地址,做正向代理,Squid是一種在Linux系統下使用的比較優秀的代理伺服器軟體,把代理列表的代理ip,按照squid的cache_peer機制按照一定格式,寫在配置檔案中即可。


這個就相當於將管理和排程的問題全交給了squid來做,你只需要使用爬蟲訪問squid的服務埠就可以了。


現在可以將所有步驟歸納總結一下:

1.利用爬蟲指令碼每天定時抓取代理網站上的免費ip,或者買一定數量的ip,寫入mongodb或者其他的資料庫中,這張表作為原始表。

2.使用之前需要做一步測試,就是測試這個ip是否有效,方法就是利用curl訪問一個網站檢視返回值,需要建立一張新表,迴圈讀取原始表有效則插入,驗證之後將其從原始表中刪除,驗證的同時可以利用響應時間來計算這個ip的質量,和最大使用次數,有一個演算法可以參考一種基於連線代理優化管理的多執行緒網路爬蟲處理方法

3.將有效的ip寫入squid的配置檔案,重新載入配置檔案。

4.讓爬蟲程式去指定的squid的服務ip和埠,進行抓取。






如果需要詳細瞭解ip代理,可以參考以下網頁


可以參考的網站:

Linux IP代理篩選系統(shell+proxy) 

http://blog.csdn.net/ithomer/article/details/7639385 

Linux 抓取網頁例項(shell+awk)

http://blog.csdn.net/sunboy_2050/article/details/7635301



關於使用動態輪訓切換ip防止爬蟲被封殺 http://xiaorui.cc/2015/01/12/%E5%85%B3%E4%BA%8E%E4%BD%BF%E7%94%A8%E5%8A%A8%E6%80%81%E8%BD%AE%E8%AE%AD%E5%88%87%E6%8D%A2ip%E9%98%B2%E6%AD%A2%E7%88%AC%E8%99%AB%E8%A2%AB%E5%B0%81%E6%9D%80/