python爬虫代理的伪装
发布于 4 年前 作者 hchen 4450 次浏览 来自 分享

之前提到过,有些网站是防爬虫的。其实事实是,凡是有一定规模的网站,大公司的网站,或是盈利性质比较强的网站,都是有高级的防爬措施的。总的来说有两种反爬策略,要么验证身份,把虫子踩死在门口;要么在网站植入各种反爬机制,让爬虫知难而退。

降低主IP访问频率

注意:这是针对长期的,大范围的爬虫的

有些网站会监视某个ip的访问频率和次数,一但超过某个阈值,就把你当作爬虫嫌犯赶出去了,这时就要想办法降低自己的存在感了。

休眠:爬一段时间后休息一会,不仅是为了自己的成功,也是为服务器着想。

ip代理:通过proxies参数来使用,前提是你要有ip,好的ip代理是要花钱的。例如亿牛云代理IP


使用代理

适用情况:大部分网站均限制了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

伪装成浏览器,或者反“反盗链”


有些网站会检查你是不是真的浏览器访问,还是机器自动访问的。这种情况,加上User-Agent,表明你是浏览器访问即可。有时还会检查是否带Referer信息还会检查你的Referer是否合法,一般再加上Referer。

User-Agent可以用亿牛云提供给的真实库,Referer的来源可以伪装成百度搜索来的。

爬取有两个需要注意的问题:


  • 如何处理js生成的cookie

可以使用无头浏览器获取大量cookie,存储后备用。


  • 如何控制频率和利用代理破除反爬限制
回到顶部