爬虫HTTP代理异常处理方式

  1. 为什么要设置代理
    代理分为用户代理use-agent和ip代理proxy,两者的区别在于user-agent更多在于本地用户服务管理来伪装自己,相当于人换了件衣服,而proxy代理更倾向于服务器访问,例如,A要访问B,但是不能直接访问B,就要通过proxyC来访问,相当于借刀杀人的作用。
    一般来说,服务器会禁止同一用户或者同一ip在某个时段高频率访问网站,或者为了防止黑客攻击手段,都会对用户进行反爬虫处理,而我们需要设置代理池来伪装自己,假装自己不是机器人而是一个真实的用户。
  2. 如何设置用户代理(user-agent)
    user-agent一般是存在http请求头里面。UA是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
    #! -- encoding:utf-8 --
    import requests
    import random
    # 要访问的目标页面
    targetUrl = “http://httpbin.org/ip”
    # 要访问的目标HTTPS页面
    # targetUrl = “https://httpbin.org/ip”
    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = “t.16yun.cn”
    proxyPort = “31111”
    # 代理隧道验证信息
    proxyUser = “username”
    proxyPass = “password”
    proxyMeta = “http://%(user)s:%(pass)[email protected]%(host)s:%(port)s” % {
    “host” : proxyHost,
    “port” : proxyPort,
    “user” : proxyUser,
    “pass” : proxyPass,
    }
    # 设置 http和https访问都是用HTTP代理
    proxies = {
    “http” : proxyMeta,
    “https” : proxyMeta,
    }
    # 设置IP切换头
    tunnel = random.randint(1,10000)
    headers = {“Proxy-Tunnel”: str(tunnel)}
    resp = requests.get(targetUrl, proxies=proxies, headers=headers)
    print resp.status_code
    print resp.text
    有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。
    User-Agent可以用亿牛云提供给的真实库,Referer的来源可以伪装成百度搜索来的。
    3.HTTP异常处理方式
    爬虫HTTP代理异常处理方式
    从示例中可以看到,两种方式都能输出异常:其中第二种中HTTPError必须写在URLError异常前,因HTTPError是URLError的子类,如果URLError在前面它会捕捉到所有的URLError(包括HTTPError )。
    使用高质量爬虫代理,解决这些异常处理更容易些。