2022-10-17 16:24

作为爬虫工作者在日常工作中使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁 IP 的问题通常会使用代理IP。但也有一部分人在HTTP代理IP的使用上存在着误解,他们认为使用了代理IP就能解决一切问题,然而实际上代理IP不是万能的,它只是一个工具,如果使用不当,一样会被封IP。

如果是使用的透明代理IP自然会受到限制,但是使用的是高匿名代理则不会,所以在选择代理IP的时候,要注意这一点。还有就是在使用一个代理IP爬取目标网站,被封IP的因素也有很多,比如cookie,比如User Agent等等,或者IP的单次使用频率太高,IP就会被封;当访问目标网站的频率过快时,IP也会被封,因为人类正常访问远远达不到那个频率,自然会被目标网站的反爬虫策略识别。

这样的情况下我们只有尽量地模拟真实用户正常访问,才能最大程度地避免被封IP。而高匿代理IP也不难找,比如亿牛云(www.16yun.cn)提供电信家庭私密高匿代理ip就能满足大家的需求。并且针对代理的使用还提供了专业的文档,如果你的爬虫程序是使用的python,如果购买的是爬虫代理,那么正确的使用代理IP的过程如下:

#! -*- 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)s@%(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

还有其他的语言示例可以选择,有需要的可以在官网去了解


评论