作为爬虫工作者,在我们日常获取数据的过程中难免发生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

文章推荐

慢 SQL 优化之索引的作用是什么?

Java的Atomic原子类

【Vue2.x源码系列08】Diff算法原理

ET框架6.0分析二、异步编程

Linux系统下CUDA和cuDNN环境配置

第四部分:Spdlog日志库的核心组件分析-logger

CSS必知必会

Linux进程通信 | 信号

Java I/O(4):AIO和NIO中的Selector

HTTP面试题 - HTTP2 面试题

Spring Ioc源码分析系列--Bean实例化过程(二)

关于线段树基础