zoukankan      html  css  js  c++  java
  • 第二十八节:隧道代理阿布云代理

    阿布云为我们提供了隧道代理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 }
  • 相关阅读:
    MySQL DROP 大表时的注意事项
    无主键指定字段补全的示例
    GoldenGate的监控
    mysql的root的权限被控制无法授权
    goldengate 过滤对某张表的复制操作
    给用户授予权限时应该尽量避免ANY系统权限
    OGG日常运维监控的自动化脚本模板
    异构GoldenGate 12c 双向复制配置
    异构GoldenGate 12c 单向复制配置(支持DDL复制)
    异构GoldenGate 12c 单向复制配置
  • 原文地址:https://www.cnblogs.com/zhaco/p/11198339.html
Copyright © 2011-2022 走看看