付費代理的使用

相對免費代理來講,付費代理的穩定性更高。本節將介紹爬蟲付費代理的相關使用過程。
html

1、付費代理分類

付費代理分爲兩類:
python

  • 一類提供接口獲取海量代理,按天或者按量收費,如訊代理;json

  • 一類搭建了代理隧道,直接設置固定域名代理,如阿布雲代理。服務器

本節分別以兩家表明性的代理網站爲例,講解這兩類代理的使用方法,併發

2、訊代理

訊代理的代理效率較高(做者親測),官網爲http://www.xdaili.cn/,以下圖所示。
app

圖片

訊代理上可供選購的代理有多種類別,包括以下幾種(參考官網介紹)。ide

  • 優質代理:它適合對代理IP需求量很是大,但能接受較短代理有效時長(10~30分鐘)的小部分不穩定的客戶。測試

  • 獨享動態:它適合對代理IP穩定性要求很是高且能夠自主控制的客戶,支持地區篩選。網站

  • 獨享秒切:它適合對代理IP穩定性要求很是高且能夠自主控制的客戶,可快速獲取IP,地區隨機分配。url

  • 動態混撥: 它適合對代理IP需求量大、代理IP使用時效短(3分鐘)、切換快的客戶。

  • 優質定製:若是優質代理的套餐不能知足你的需求,請使用定製服務。

通常選擇第一類別優質代理便可,這種代理的量比較大,可是其穩定性不高,一些代理不可用。因此這種代理的使用就須要藉助於上一節所說的代理池,本身再作一次篩選,以確保代理可用。

讀者能夠購買一天時長來試試效果。購買以後,訊代理會提供一個API來提取代理,以下圖所示。

圖片

好比,這裏提取API爲http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20,可能已過時,在此僅作演示。

在這裏指定了提取數量爲20,提取格式爲JSON,直接訪問連接便可提取代理,結果以下圖所示。

圖片

接下來咱們要作的就是解析這個JSON,而後將其放入代理池中。

若是信賴訊代理的話,咱們也能夠不作代理池篩選,直接使用代理。不過我我的仍是推薦使用代理池篩選,以提升代理可用概率。

根據上一節代理池的寫法,咱們只須要在Crawler中再加入一個crawl開頭的方法便可。方法實現以下所示:

 
 

def crawl_xdaili(self):
       """
       獲取訊代理
       :return: 代理
       """

       url = 'http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20'
       html = get_page(url)
       if html:
           result = json.loads(html)
           proxies = result.get('RESULT')
           for proxy in proxies:
               yield proxy.get('ip') + ':' + proxy.get('port')

這樣咱們就在代理池中接入了訊代理。獲取訊代理的結果以後,解析JSON,返回代理便可。

代理池運行以後就會抓取和檢測該接口返回的代理,若是代理可用,那麼分數就會被設爲100,經過代理池接口便可獲取到這些可用代理。

3、阿布雲代理

阿布雲代理提供了代理隧道,代理速度快且很是穩定,其官網爲https://www.abuyun.com/,以下圖所示。

圖片

阿布雲代理主要分爲兩種:專業版和動態版,另外還有定製版(參考官網介紹)。

  • 專業版:多個請求鎖定一個代理IP,海量IP資源池需求,近300個區域全覆蓋,代理IP可連續使用1分鐘,它適用於請求IP連續型業務。

  • 動態版:每一個請求分配一個隨機代理IP,海量IP資源池需求,近300個區域全覆蓋,它適用於爬蟲類業務。

  • 定製版:它能夠靈活按照需求定製,定製IP區域,定製IP使用時長,定製IP每秒請求數。

關於專業版和動態版的更多介紹能夠查看官網:https://www.abuyun.com/http-proxy/dyn-intro.html。

對於爬蟲來講,咱們推薦使用動態版,購買以後能夠在後臺看到代理隧道的用戶名和密碼,以下圖所示。

圖片

整個代理的鏈接域名爲proxy.abuyun.com,端口爲9020,它們均是固定的,可是每次使用以後IP都會更改,該過程其實就是利用了代理隧道實現(參考官網介紹)。

  • 雲代理經過代理隧道的形式提供高匿名代理服務,支持HTTP/HTTPS協議。

  • 雲代理在雲端維護一個全局IP池供代理隧道使用,池中的IP會不間斷更新,以保證同一時刻IP池中有幾十到幾百個可用代理IP。

  • 須要注意的是,代理IP池中部分IP可能會在當天重複出現屢次。

  • 動態版HTTP代理隧道會爲每一個請求從IP池中挑選一個隨機代理IP。

  • 無須切換代理IP,每個請求分配一個隨機代理IP。

  • HTTP代理隧道有併發請求限制,默認每秒只容許5個請求。若是須要更多請求數,請額外購買。

注意,默認套餐的併發請求是5個。若是須要更多請求數,則須另外購買。

使用教程的官網連接爲:https://www.abuyun.com/http-proxy/dyn-manual-python.html。教程提供了requests、urllib、Scrapy的接入方式。

如今咱們以requests爲例,接入代碼以下所示:

 
 

import requests

url = 'http://httpbin.org/get'

# 代理服務器
proxy_host = 'proxy.abuyun.com'
proxy_port = '9020'

# 代理隧道驗證信息
proxy_user = 'H01234567890123D'
proxy_pass = '0123456789012345'

proxy_meta = 'http://%(user)s:%(pass)s@%(host)s:%(port)s' % {
   'host': proxy_host,
   'port': proxy_port,
   'user': proxy_user,
   'pass': proxy_pass,
}
proxies = {
   'http': proxy_meta,
   'https': proxy_meta,
}
response = requests.get(url, proxies=proxies)
print(response.status_code)
print(response.text)

這裏其實就是使用了代理認證,在前面咱們也提到過相似的設置方法,運行結果以下:

 
 

200
{
 "args": {},
 "headers": {
   "Accept": "*/*",
   "Accept-Encoding": "gzip, deflate",
   "Connection": "close",
   "Host": "httpbin.org",
   "User-Agent": "python-requests/2.18.1"
 
}
,
 "origin": "60.207.237.111",
 "url": "http://httpbin.org/get"
}

輸出結果的origin即爲代理IP的實際地址。這段代碼能夠屢次運行測試,咱們發現每次請求origin都會在變化,這就是動態版代理的效果。

這種效果其實跟以前的代理池的隨機代理效果相似,都是隨機取出了一個當前可用代理。可是,與維護代理池相比,此服務的配置簡單,使用更加方便,更省時省力。在價格能夠接受的狀況下,我的推薦此種代理。

4、結語

以上內容即是付費代理的相關使用方法,付費代理穩定性比免費代理更高。讀者能夠自行選購合適的代理。

相關文章
相關標籤/搜索