進一步了解代理ip軟件知識—ip代理工作原理
我們經(jīng)常在爬取網(wǎng)站時設置ip代理來避免爬蟲程序中被封號,而獲取ip地址的方式通常來自提取國內的知名ip代理商提供的ip資源,代理商一般分為透明代理,匿名代理,高匿代理,區(qū)別的方式相信大家也都學習了很多,為了更進一步的去認識,接下來了解一下ip代理的工作原理吧。
代理ip的類型主要取決于代理服務器端的配置。不同配置會形成不同的代理類型。在配置中,這三個變量REMOTE_ADDR,HTTP_VIA,HTTP_X_FORWARDED_FOR是決定性因素。
1)REMOTE_ADDR
REMOTE_ADDR表示客戶端的IP,但是它的值不是由客戶端提供的,而是服務器根據(jù)客戶端的IP指定的。
如果使用瀏覽器直接訪問某個網(wǎng)站,那么網(wǎng)站的web服務器(Nginx、Apache等)就會把REMOTE_ADDR設為客戶端的IP地址。
如果我們給瀏覽器設置代理ip,我們訪問目標網(wǎng)站的請求會先經(jīng)過代理服務器軟件,然后由代理服務器將請求轉化到目標網(wǎng)站。那么網(wǎng)站的web服務器就會把REMOTE_ADDR設為代理服務器的IP。
2)X-Forwarded-For(XFF)
X-Forwarded-For是一個HTTP擴展頭部,用來表示HTTP請求端真實IP。當客戶端使用了代理時,web服務器就不知道客戶端的真實IP地址。為了避免這個情況,代理服務器通常會增加一個X-Forwarded-For的頭信息,把客戶端的IP添加到頭信息里面。
X-Forwarded-For請求頭格式如下:
X-Forwarded-For:client,proxy1,proxy2
client表示客戶端的IP地址;proxy1是離服務端最遠的設備IP;proxy2是次級代理設備的IP;從格式中,可以看出從client到server是可以有多層代理的。
如果一個HTTP請求到達服務器之前,經(jīng)過了三個代理Proxy1、Proxy2、Proxy3,IP分別為IP1、IP2、IP3,用戶真實IP為IP0,那么按照XFF標準,服務端最終會收到以下信息:
X-Forwarded-For:IP0,IP1,IP2
Proxy3直連服務器,它會給XFF追加IP2,表示它是在幫Proxy2轉發(fā)請求。列表中并沒有IP3,IP3可以在服務端通過Remote Address字段獲得。我們知道HTTP連接基于TCP連接,HTTP協(xié)議中沒有IP的概念,Remote Address來自TCP連接,表示與服務端建立TCP連接的設備IP,在這個例子里就是IP3。
3)HTTP_VIA
via是HTTP協(xié)議里面的一個header,記錄了一次HTTP請求所經(jīng)過的代理和網(wǎng)關,經(jīng)過1個代理服務器,就添加一個代理服務器的信息,經(jīng)過2個就添加2個。
以上內容大概了解代理ip原理的幾種方式,都知道高度匿名代理不改變客戶機的請求,這樣在服務器看來就像有個真正的客戶瀏覽器在訪問它,這時客戶的真實IP是隱藏的,服務器端不會認為我們使用了代理ip工具。因此,爬蟲程序需要使用到ip代理時,盡量選擇普通匿名代理和高匿名代理,另外,如果要保證數(shù)據(jù)不被代理服務器知道,推薦使用HTTPS協(xié)議的代理。
國內知名品牌動態(tài)IP海就很符合,提供高質量ip,并且可以很方便地指定在哪些地區(qū)切換,穩(wěn)定性也不錯,適用于一些對IP質量要求較高的爬蟲項目。
版權聲明:本文為ipadsl.cn所屬公司原創(chuàng)作品,未經(jīng)許可,禁止轉載!