Python爬蟲進階之代理的基本原理
我們在做爬蟲的過程中經常會遇到這樣的情況,最初爬蟲正常執行,正常抓取資料,一切看起來都是那麼美好,然而一杯茶的功夫可能就會出現錯誤,比如403 Forbidden,這時候開啟網頁一看,可能會看到“您的IP訪問頻率太高”這樣的提示。出現這種現象的原因是網站採取了一些反爬蟲措施。比如,伺服器會檢測某個IP在單位時間內的請求次數,如果超過了這個閾值,就會直接拒絕服務,返回一些錯誤資訊,這種情況可以稱為封IP。
既然伺服器檢測的是某個IP單位時間的請求次數,那麼藉助某種方式來偽裝我們的IP,讓伺服器識別不出是由我們本機發起的請求,不就可以成功防止封IP了嗎?
一種有效的方式就是使用代理,後面會詳細說明代理的用法。在這之前,需要先了解下代理的基本原理,它是怎樣實現IP偽裝的呢?
1. 基本原理
代理實際上指的就是代理伺服器,英文叫作proxy server,它的功能是代理網路使用者去取得網路資訊。形象地說,它是網路資訊的中轉站。在我們正常請求一個網站時,是傳送了請求給Web伺服器,Web伺服器把響應傳回給我們。如果設定了代理伺服器,實際上就是在本機和伺服器之間搭建了一個橋,此時本機不是直接向Web伺服器發起請求,而是向代理伺服器發出請求,請求會傳送給代理伺服器,然後由代理伺服器再傳送給Web伺服器,接著由代理伺服器再把Web伺服器返回的響應轉發給本機。這樣我們同樣可以正常訪問網頁,但這個過程中Web伺服器識別出的真實IP就不再是我們本機的IP了,就成功實現了IP偽裝,這就是代理的基本原理。
2. 代理的作用
那麼,代理有什麼作用呢?我們可以簡單列舉如下。
突破自身IP訪問限制,訪問一些平時不能訪問的站點。
訪問一些單位或團體內部資源:比如使用教育網內地址段免費代理伺服器,就可以用於對教育網開放的各類FTP下載上傳,以及各類資料查詢共享等服務。
提高訪問速度:通常代理伺服器都設定一個較大的硬碟緩衝區,當有外界的資訊透過時,同時也將其儲存到緩衝區中,當其他使用者再訪問相同的資訊時,則直接由緩衝區中取出資訊,傳給使用者,以提高訪問速度。
隱藏真實IP:上網者也可以透過這種方法隱藏自己的IP,免受攻擊。對於爬蟲來說,我們用代理就是為了隱藏自身IP,防止自身的IP被封鎖。
3. 爬蟲代理
對於爬蟲來說,由於爬蟲爬取速度過快,在爬取過程中可能遇到同一個IP訪問過於頻繁的問題,此時網站就會讓我們輸入驗證碼登入或者直接封鎖IP,這樣會給爬取帶來極大的不便。
使用代理隱藏真實的IP,讓伺服器誤以為是代理伺服器在請求自己。這樣在爬取過程中透過不斷更換代理,就不會被封鎖,可以達到很好的爬取效果。
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. 常見代理設定
使用網上的免費代理:最好使用高匿代理,另外可用的代理不多,需要在使用前篩選一下可用代理,也可以進一步維護一個代理池。
使用付費代理服務:網際網路上存在許多代理商,可以付費使用,質量比免費代理好很多。
ADSL撥號:撥一次號換一次IP,穩定性高,也是一種比較有效的解決方案。
在後文我們會詳細介紹這幾種代理的使用方式。
6. 參考來源
由於涉及一些專業名詞知識,本節的部分內容參考來源如下。
代理伺服器 維基百科:代理伺服器
代理 百度百科:代理/3242667
python學習網,大量的免費,歡迎線上學習!
本文轉自:https://cuiqingcai.com/5491.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3486/viewspace-2835473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python爬蟲進階必備之代理Python爬蟲
- Python爬蟲進階之APP逆向(三)Python爬蟲APP
- Python爬蟲進階之JS逆向入門Python爬蟲JS
- Python爬蟲進階之會話和CookiesPython爬蟲會話Cookie
- node爬蟲進階之——登入爬蟲
- 爬蟲進階:反反爬蟲技巧爬蟲
- python爬蟲之Scrapy 使用代理配置Python爬蟲
- Python爬蟲進階之JS逆向土地市場網!Python爬蟲JS
- Python爬蟲進階之urllib庫使用方法Python爬蟲
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- Python爬蟲學習之(二)| urllib進階篇Python爬蟲
- Python網路爬蟲進階:自動切換HTTP代理IP的應用Python爬蟲HTTP
- python 爬蟲 代理池Python爬蟲
- Python爬蟲代理池Python爬蟲
- 資料採集爬蟲ip代理基本原理爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 5-代理的基本原理Python爬蟲
- 爬蟲之代理池維護爬蟲
- python和爬蟲代理的關聯Python爬蟲
- python 代理在爬蟲中的作用Python爬蟲
- python爬蟲實戰:爬取西刺代理的代理ip(二)Python爬蟲
- 那些年,我爬過的北科(四)——爬蟲進階之極簡併行爬蟲框架開發爬蟲框架
- Python 爬蟲從入門到進階之路(十六)Python爬蟲
- Python 爬蟲從入門到進階之路(十七)Python爬蟲
- Python 爬蟲從入門到進階之路(十八)Python爬蟲
- Python 爬蟲從入門到進階之路(二)Python爬蟲
- Python 爬蟲從入門到進階之路(三)Python爬蟲
- Python 爬蟲從入門到進階之路(十二)Python爬蟲
- Python 爬蟲從入門到進階之路(十五)Python爬蟲
- Python 爬蟲從入門到進階之路(八)Python爬蟲
- Python 爬蟲從入門到進階之路(九)Python爬蟲
- Python 爬蟲從入門到進階之路(十)Python爬蟲
- Python 爬蟲從入門到進階之路(十一)Python爬蟲
- Python 爬蟲從入門到進階之路(六)Python爬蟲
- Python 爬蟲從入門到進階之路(七)Python爬蟲
- 爬蟲進階之去哪兒酒店(國內外)爬蟲
- Python代理IP爬蟲的簡單使用Python爬蟲
- Python 爬蟲IP代理池的實現Python爬蟲
- python爬蟲之反爬蟲(隨機user-agent,獲取代理ip,檢測代理ip可用性)Python爬蟲隨機