第二十八節:隧道代理阿布雲代理


阿布雲為我們提供了隧道代理IP的服務,通過阿布雲HTTP隧道的動態版可以讓我們的爬蟲很好的使用動態代理IP

由此可知我們可以得到requests接入代碼

 1 # -*- coding:utf-8 -*-
 2 import requests
 3 
 4 # 要訪問的目標網頁
 5 url = "http://httpbin.org/get"
 6 
 7 # 代理服務器,根據購買的套餐,自行查看修改
 8 proxy_host = "http-dyn.abuyun.com"
 9 
10 # 代理端口
11 proxy_prot = "9020"
12 
13 # 代理隧道驗證信息
14 proxy_user = "H01234567890123D"     # 購買隧道的通行證書
15 proxy_pass = "0123456789012345"     # 購買隧道的通行秘鑰
16 
17 proxy_meta = "http://%(user)s:%(pass)s@%(host)s:%(port)s"%{
18     "host":proxy_host,
19     "port":proxy_prot,
20     "user":proxy_user,
21     "pass":proxy_pass,
22 }
23 
24 proxies = {
25     "http":proxy_meta,
26     "https":proxy_meta,
27 }
28 
29 response = requests.get(url=url,proxies=proxies)
30 print(response.status_code)
31 print(response.text)
requests

得到結果為:

 1 200
 2 {
 3 "args": {},
 4 "headers": {
 5     "Accept": "*/*",
 6     "Accept-Encoding": "gzip, deflate",
 7     "Connection": "close",
 8     "Host": "httpbin.org",
 9     "User-Agent": "python-requests/2.18.1"
10 },
11 "origin": "60.207.237.111",
12 "url": "http://httpbin.org/get"}

最后由於阿布雲的proxy地址是不變的(實際是動態ip),實際上,得到上邊的proxies后,直接使用那個地址,進行proxies=proxies 設置即可。

同時阿布雲還提供爬蟲框架Scrapy的接入代碼

 1 import base64
 2 
 3 # 代理服務器,根據購買的套餐,自行查看修改
 4 proxyServer = "http://http-dyn.abuyun.com:9020"
 5 
 6 # 代理隧道驗證信息
 7 proxy_user = "H01234567890123D"     # 購買隧道的通行證書
 8 proxy_pass = "0123456789012345"     # 購買隧道的通行秘鑰
 9 
10 proxyAuth = "Basic " + base64.urlsafe_b64encode(bytes((proxy_user + ":" + proxy_pass), "ascii"))
11 proxyAuth = proxyAuth.decode("utf8")
12 
13 
14 class ProxyMiddleware(object):
15     def process_request(self,request,spider):
16         request.meta["proxy"] = proxyServer
17         request.headers["Proxy-Authorization"] = proxyAuth
Scrapy

由於,在阿布雲購買的是最基礎的代理,即每秒 5 個請求,又因為 Scrapy 默認的並發數是 16 個,所以需要對 Scrapy 請求數量進行一下限制,可以設置每個請求的延遲時間為 0.2s ,這樣一秒就剛好請求 5 個,最后啟用上面的代理中間件類即可:

1 AUTOTHROTTLE_ENABLED = True
2 DOWNLOAD_DELAY = 0.2  # 每次請求間隔時間
3 
4 # 啟用阿布雲代理中間件
5 DOWNLOADER_MIDDLEWARES = {
6  'maoyan.middlewares.ProxyMiddleware': 301,
7 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM