作为爬虫工作者,在我们日常获取数据的过程中难免发生ip被封和403错误等等,这都是网站检测出你是爬虫而进行反爬措施,所以今天在这里为大家总结一下怎么用IP代理防止被封的方法。

1、设置等待时间,种是显性等待时间(强制停几秒),一种是隐性等待时间。

2、修改请求头:识别你是机器人还是人类浏览器浏览的重要依据就是User-Agent。

3、采用代理ip/建代理ip池,直接看代码。利用动态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

只有我们在采集数据过程中做好以上3个步骤,大致爬虫的运行就不成问题了。但是这些都是基本的反爬措施,现在有很多大型网站做设置的反爬机制更严,对技术要求更高,所以需要我们随时学习更深的爬虫技术。

作者:|minmin幕客|,原文链接: http://www.imooc.com/article/325449

文章推荐

选择排序的简单理解

【clickhouse专栏】单机版的安装与验证

linux-ext4格式文件误删除,该如何恢复?

浏览器跨域访问

Git技法:.gitignore、移除暂存与撤销修改

数仓选型必列入考虑的OLAP列式数据库ClickHouse(上)

200 行代码实现基于 Paxos 的 KV 存储

JS进阶-数据类型的判断方式以及转换方式的汇总

Mysql使用limit深度分页优化

可靠分布式系统- paxos 的直观解释

Hyperledger Fabric 核心概念

Tenseal库