470|1

35

帖子

0

资源

一粒金砂(中级)

应对网站反爬机制的处理

 

在大数据如此火的今天,爬虫是其中不可或缺的一部分。作为一位爬虫我们都是知道想要获取数据也不是很容易的事,因为不管大大小小的网站都是做了很多反爬机制来阻碍我们的脚步,但是方法总比困难多。我们今天先来分析下网站都是用过哪些方式来阻止我们的。

1、验证码

2、ua

3、登陆验证

4、封账号

5、加密

6、ip限制

今天我们就重点来讲下网站的ip限制机制,很多网站会根据IP地址访问频率进行反爬,短时间内禁止IP访问,这时我们想采集数据要么使用代理IP,要么伪装ip。那么对于ip我们要怎么解决了?

  • 自己自建ip池,每次访问网站的时候去选择代理,不过需要经常更新代理池。
  • 购买优质代理或动态转发(爬虫代理), 这是最省时省力的方法。
  • 网站抓取免费的ip来使用,虽然可行,但是效果不会很理想。
  • 间隔一定的时间在进行数据采集,但是这会大大的增加我们工作的时长。

以下我们分享下用代理来解决网站封ip的示例,对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。

        #! -*- encoding:utf-8 -*-

        import requests
        import random

        # 要访问的目标页面
        targetUrl = "http://www.csdn.net"

        # 要访问的目标HTTPS页面
        # targetUrl = "https://www.csdn.net"

        # 代理服务器(产品官网 www.16yun.cn)
        proxyHost = "t.16yun.cn"
        proxyPort = "31111"

        # 代理隧道验证信息
        proxyUser = "16JVFLKJ"
        proxyPass = "254565"

        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

 


回复

2万

帖子

337

资源

版主

爬虫下一步发展就是黑客,,


回复
您需要登录后才可以回帖 登录 | 注册

关闭
站长推荐上一条 1/5 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表