博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二十八节:隧道代理阿布云代理
阅读量:5020 次
发布时间:2019-06-12

本文共 2014 字,大约阅读时间需要 6 分钟。

阿布云为我们提供了隧道代理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"] = proxyServer17         request.headers["Proxy-Authorization"] = proxyAuth
Scrapy

由于,在阿布云购买的是最基础的代理,即每秒 5 个请求,又因为 Scrapy 默认的并发数是 16 个,所以需要对 Scrapy 请求数量进行一下限制,可以设置每个请求的延迟时间为 0.2s ,这样一秒就刚好请求 5 个,最后启用上面的代理中间件类即可:

1 AUTOTHROTTLE_ENABLED = True2 DOWNLOAD_DELAY = 0.2  # 每次请求间隔时间3 4 # 启用阿布云代理中间件5 DOWNLOADER_MIDDLEWARES = {6  'maoyan.middlewares.ProxyMiddleware': 301,7 }

转载于:https://www.cnblogs.com/zhaco/p/11198339.html

你可能感兴趣的文章
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
样式、格式布局
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>