爬蟲代理基本理解
一、概況:
我們在做爬蟲時常常會遇到這種情況,最初爬蟲正常運行,但是一段時間之後會出現錯誤,比如:403 Forbidden。這時候我們再打開目標網頁就會看到 “您的 IP 訪問頻率太高” 這樣的提示。出現這種情況的原因是網站採取了一些反爬蟲措施。比如:服務器會檢測某個 IP 在單位時間內的請求次數,如果超過了這個閾值,就會直接拒絕服務,返回一些錯誤信息,這種情況可以稱爲 “封 IP”。
如果服務器會檢測某個 IP 單位時間的請求次數,那麼藉助某種方式來僞裝我們的 IP,讓服務器識別不出來是由我們本機發出的,不就可以成功防止 IP 被封了嗎。一種有效的方法就是 使用代理。
二、基本原理:
代理指的是代理服務器。我們在正常請求一個網站時,是由我們的本機發送了請求給 Web 服務器,Web 服務器再把響應傳回給我們的本機。如果設置了代理服務器,實際上就是在本機和服務器之間搭建了一箇中轉站,此時本機不是直接向 Web服務器 發送請求,而是向 代理服務器 發送請求,請求再由 代理服務器 發送給 Web服務器 ,接着 Web服務器 再將響應傳回 代理服務器,代理服務器 再將響應傳給我們本機。這樣我們可以正常訪問網頁,但是這個過程中 Web服務器 識別出來的真實 IP 就不再是我們的本機 IP ,我們也就成功的僞裝了 IP,這就是代理的基本原理。
三、代理的作用:
- 突破自身 IP 訪問限制,訪問一些平時不能訪問的站點;
- 訪問一些單位或團體內部資源:比如使用教育網內地址段免費代理服務器,就可以用於對教育網開放的各類 FTP 下載上傳,以及各類資料查詢共享等服務;
- 提高訪問速度:通常代理服務器都設置一個比較大的硬盤緩衝區,當有外界的信息通過時,同時也將其保存到緩衝區中,當其他用戶再訪問相同的信息時,則直接由緩衝區中取出信息,傳給用戶,以提高訪問速度;
- 隱藏真實 IP:上網者也可以通過這種方式隱藏自己的 IP,免受攻擊,對爬蟲來說,我們使用代理就是爲了隱藏自己的 IP,防止自身 IP 被封鎖。
四、代理分類:
代理分類時,既可以根據協議區分,也可以根據其匿名程度區分。
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,還支持各種身份驗證機制、服務器端域名解析等。簡單說 SOCKS5 能做到的 SOCKS4 不一定能做到,但是 SOCKS4 能做到的 SOCKS5 一定能做到。
2、根據匿名程度區分
-
高度匿名代理:
會將數據包原封不動的轉發,在服務端看來就好象真的是一個普通客戶端再訪問,而記錄的 IP 是代理服務器的 IP。 -
普通匿名代理:
會在數據包上做一些改動,服務端上有可能發現這是代理服務器,也有一定機率追查到客戶端的真實 IP。代理服務器通常會加入的 HTTP 頭有 HTTP_VIA 和 HTTP_X_FORWARDED_FOR。 -
透明代理:
不但改動了數據包,還會告服務器客戶端的真實 IP。這種代理除了能用緩存技術提高瀏覽器速度,能用內容過濾提高安全性之外,並無其他顯著作用,最常見的例子是內網中的硬件防火牆。 -
間諜代理:
指組織或個人創建的用以記錄用戶傳輸的數據,然後進行研究、監控等目的的代理服務器。
五、常見代理設置:
-
使用網上的免費代理:
最好使用高匿代理,另外可用的代理不多,需要在使用前篩選一下可用代理,也可以進一步維護一個代理池。 -
使用付費代理服務:
互聯網上存在許多代理商,可以付費使用,質量比免費代理好很多。 -
ADSL 撥號:
撥一次號換一次 IP,穩定性高,也是一種比較有效的解決方案。
所有內容全部引自《python3 網絡爬蟲開發實戰(人民郵電出版社)》,此筆記僅用於學習交流。