爬蟲工作者在試用爬蟲進行數據搜集的過程中經常會遇到這樣的情況,剛開始的時候爬蟲的運行情況是正常的,數據的抓取狀況也在有條不紊的進行着,然而可能你一眼照顧不到就會出現錯誤,比如403 Forbidden,這時候你打開網頁的話,網頁上面會提示你,“您的IP訪問頻率太高”這樣的字眼。出現這種現象的原因就是被訪問網站采取了反爬蟲機制,比如,服務器會檢測某個IP在單位時間內的請求次數,如果超過了這個閾值,就會直接拒絕服務,返回一些錯誤信息,這種情況可以稱為封IP。
那么這種情況的解決方法很簡單,既然他能檢測出來某個IP的請求次數,那么借助代理IP來偽裝本身的IP地址是最好的方法,這樣做可以防止IP被封鎖。
那么了解一下代理IP的基本原理,看看代理IP是如何進行偽裝的
基本原理
代理實際上就是代理服務器,代理IP的功能就是代理網絡客戶去獲取網絡信息。試用比喻的手法就是說他就相當於一個網絡信息的中轉站。當一個網站被我們正常的進行請求的時候,是發送了請求給web服務器,web服務器把響應傳回給我們。如果在中間設置了代理服務器,實際上就是在本機和被訪問網站之間設置了一個橋梁,此時本機不是直接向Web服務器發起請求,而是向代理服務器發出請求,請求會發送給代理服務器,然后由代理服務器再發送給Web服務器,接着由代理服務器再把Web服務器返回的響應轉發給本機。這樣我們同樣可以正常訪問網頁,但這個過程中Web服務器識別出的真實IP就不再是我們本機的IP了,就成功實現了IP偽裝,這就是代理的基本原理。
2. 代理的作用
下面我們說說HTTP代理IP的作用
- 突破自身IP訪問限制,訪問一些平時不能訪問的站點。
- 訪問一些單位或團體內部資源:比如使用教育網內地址段免費代理服務器,就可以用於對教育網開放的各類FTP下載上傳,以及各類資料查詢共享等服務。
- 提高訪問速度:通常代理服務器都設置一個較大的硬盤緩沖區,當有外界的信息通過時,同時也將其保存到緩沖區中,當其他用戶再訪問相同的信息時,則直接由緩沖區中取出信息,傳給用戶,以提高訪問速度。
- 隱藏真實IP:上網者也可以通過這種方法隱藏自己的IP,免受攻擊。對於爬蟲來說,我們用代理就是為了隱藏自身IP,防止自身的IP被封鎖。
3. 爬蟲代理
4. 代理分類
代理分類時,既可以根據協議區分,也可以根據其匿名程度區分。
(1) 根據協議
根據代理的協議,代理可以分為如下類別。
- FTP代理服務器:主要用於訪問FTP服務器,一般有上傳、下載以及緩存功能,端口一般為21、2121等。
- HTTP代理服務器:主要用於訪問網頁,一般有內容過濾和緩存功能,端口一般為80、8080、3128等。
- SSL/TLS代理:主要用於訪問加密網站,一般有SSL或TLS加密功能(最高支持128位加密強度),端口一般為443。
- RTSP代理:主要用於訪問Real流媒體服務器,一般有緩存功能,端口一般為554。
- Telnet代理:主要用於telnet遠程控制(黑客入侵計算機時常用於隱藏身份),端口一般為23。
- POP3/SMTP代理:主要用於POP3/SMTP方式收發郵件,一般有緩存功能,端口一般為110/25。
- SOCKS代理:只是單純傳遞數據包,不關心具體協議和用法,所以速度快很多,一般有緩存功能,端口一般為1080。SOCKS代理協議又分為SOCKS4和SOCKS5,前者只支持TCP,而后者支持TCP和UDP,還支持各種身份驗證機制、服務器端域名解析等。簡單來說,SOCK4能做到的SOCKS5都可以做到,但SOCKS5能做到的SOCK4不一定能做到。
(2) 根據匿名程度
根據代理的匿名程度,代理可以分為如下類別。
- 高度匿名代理:會將數據包原封不動地轉發,在服務端看來就好像真的是一個普通客戶端在訪問,而記錄的IP是代理服務器的IP。
- 普通匿名代理:會在數據包上做一些改動,服務端上有可能發現這是個代理服務器,也有一定幾率追查到客戶端的真實IP。代理服務器通常會加入的HTTP頭有
HTTP_VIA
和HTTP_X_FORWARDED_FOR
。 - 透明代理:不但改動了數據包,還會告訴服務器客戶端的真實IP。這種代理除了能用緩存技術提高瀏覽速度,能用內容過濾提高安全性之外,並無其他顯著作用,最常見的例子是內網中的硬件防火牆。
- 間諜代理:指組織或個人創建的用於記錄用戶傳輸的數據,然后進行研究、監控等目的的代理服務器。
5. 常見代理設置
- 使用網上的免費代理:最好使用高匿代理IP,另外可用的代理不多,需要在使用前篩選一下可用代理,也可以進一步維護一個代理池。
- 使用付費代理服務:互聯網上存在許多代理商,可以付費使用,質量比免費代理好很多。
- ADSL撥號:撥一次號換一次IP,穩定性高,也是一種比較有效的解決方案。