在做爬蟲的過程中經常會遇到這樣的情況,最初爬蟲正常執行,正常抓取資料,一切看起來都是那麼美好,然而一杯茶的功夫可能就會出現錯誤,比如 403 Forbidden,這時開啟網頁一看,可能會看到 “您的 IP 訪問頻率太高” 這樣的提示。出現這種現象的原因是網站採取了一些反爬蟲措施。比如,伺服器會檢測某個 IP 在單位時間內的請求次數,如果超過了這個閾值,就會直接拒絕服務,返回一些錯誤資訊,這種情況可以稱為封 IP。
既然伺服器檢測的是某個 IP 單位時間的請求次數,那麼藉助某種方式來偽裝我們的 IP,讓伺服器識別不出是由本機發起的請求,不就可以成功防止封 IP 了嗎?
一種有效的方式就是使用代理,後面會詳細說明代理的用法。在這之前,需要先了解下代理的基本原理,它是怎樣實現偽裝 IP 的呢?
基本原理
代理實際上指的就是代理伺服器,英文叫作 Proxy Server,它的功能是代理網路使用者去取得網路資訊。形象地說,它是網路資訊的中轉站。在正常請求一個網站時,是傳送了請求給 Web 伺服器,Web 伺服器把響應傳回給我們。如果設定了代理伺服器,實際上就是在本機和伺服器之間搭建了一個橋,此時本機不是直接向 Web 伺服器發起請求,而是向代理伺服器發出請求,請求會傳送給代理伺服器,然後由代理伺服器再傳送給 Web 伺服器,接著由代理伺服器再把 Web 伺服器返回的響應轉發給本機。這樣同樣可以正常訪問網頁,但這個過程中 Web 伺服器識別出的真實 IP 就不再是本機的 IP 了,就成功實現了 IP 偽裝,這就是代理的基本原理。
代理的作用
那麼,代理有什麼作用呢?可以簡單列舉如下。
- 突破自身 IP 訪問限制,訪問一些平時不能訪問的站點。
- 訪問一些單位或團體內部資源。比如,使用教育網內地址段的免費代理伺服器,就可以下載和上傳對教育網開放的各類 FTP,以及查詢、共享各類資料等。
- 提高訪問速度。通常,代理伺服器都設定一個較大的硬碟緩衝區,當有外界的資訊透過時,會同時將其儲存到緩衝區中,而當其他使用者再訪問相同的資訊時,則直接由緩衝區中取出資訊,傳給使用者,以提高訪問速度。
- 隱藏真實 IP。上網者也可以透過這種方法隱藏自己的 IP,免受攻擊。對於爬蟲來說,我們用代理就是為了隱藏自身的 IP,防止自身的 IP 被封鎖。
爬蟲代理
對於爬蟲來說,由於爬蟲爬取速度過快,在爬取過程中可能遇到同一個 IP 訪問過於頻繁的問題,此時網站就會讓我們輸入驗證碼登入或者直接封鎖 IP,這樣會給爬取帶來極大的不便。
使用代理隱藏真實的 IP,讓伺服器誤以為是代理伺服器在請求自己。這樣在爬取過程中透過不斷更換代理,就不會被封鎖,可以達到很好的爬取效果。
代理分類
對代理進行分類時,既可以根據協議區分,也可以根據其匿名程度區分,下面總結如下。
根據協議區分
根據代理的協議,代理可以分為如下類別。
- FTP 代理伺服器。主要用於訪問 FTP 伺服器,一般有上傳、下載以及快取功能,埠一般為 21、2121 等。
- HTTP 代理伺服器。主要用於訪問網頁,一般有內容過濾和快取功能,埠一般為 80、8080、3128 等。
- SSL/TLS 代理。主要用於訪問加密網站,一般有 SSL 或 TLS 加密功能(最高支援 128 位加密強度),埠一般為 443。
- RTSP 代理。主要用於 Realplayer 訪問 Real 流媒體伺服器,一般有快取功能,埠一般為 554。
- Telnet 代理。主要用於 Telnet 遠端控制(駭客入侵計算機時常用於隱藏身份),埠一般為 23。
- POP3/SMTP 代理。主要用於 POP3/SMTP 方式收發郵件,一般有快取功能,埠一般為 110/25。
- SOCKS 代理。只是單純傳遞資料包,不關心具體協議和用法,所以速度快很多,一般有快取功能,埠一般為 1080。SOCKS 代理協議又分為 SOCKS4 和 SOCKS5,SOCKS4 協議只支援 TCP,而 SOCKS5 協議支援 TCP 和 UDP,還支援各種身份驗證機制、伺服器端域名解析等。簡單來說,SOCKS4 能做到的 SOCKS5 都可以做到,但 SOCKS5 能做到的 SOCKS4 不一定能做到。
根據匿名程度區分
根據代理的匿名程度,代理可以分為如下類別。
- 高度匿名代理:高度匿名代理會將資料包原封不動地轉發,在服務端看來就好像真的是一個普通客戶端在訪問,而記錄的 IP 是代理伺服器的 IP。
- 普通匿名代理:普通匿名代理會在資料包上做一些改動,服務端上有可能發現這是個代理伺服器,也有一定機率追查到客戶端的真實 IP。代理伺服器通常會加入的 HTTP 頭有
HTTP_VIA
和HTTP_X_FORWARDED_FOR
。 - 透明代理:透明代理不但改動了資料包,還會告訴伺服器客戶端的真實 IP。這種代理除了能用快取技術提高瀏覽速度,能用內容過濾提高安全性之外,並無其他顯著作用,最常見的例子是內網中的硬體防火牆。
- 間諜代理:間諜代理指組織或個人建立的,用於記錄使用者傳輸的資料,然後進行研究、監控等目的的代理伺服器。
5. 常見代理設定
常見的代理設定如下:
- 使用網上的免費代理,最好使用高匿代理,使用前抓取下來並篩選一下可用代理,也可以進一步維護一個代理池。
- 使用付費代理服務,網際網路上存在許多代理商,可以付費使用,其質量比免費代理好很多。
- ADSL 撥號,撥一次號換一次 IP,穩定性高,也是一種比較有效的解決方案。
- 蜂窩代理,即用 4G 或 5G 網路卡等製作的代理。由於蜂窩網路用作代理的情形較少,因此整體被封鎖的機率會較低,但搭建蜂窩代理的成本較高。
6. 總結
本節的部分內容參考來源如下:
- 文件 - 代理伺服器 - 維基百科:https://zh.wikipedia.org/wiki/ 代理伺服器
- 文件 - 代理 - 百度百科:https://baike.baidu.com/item/ 代理 / 3242667