黑洞HTTP

黑洞HTTP

您的位置: 首页 > 新闻资讯 > HTTP代理 > 正文

爬虫被源网站流量监控封杀IP?用代理IP来解决

发布时间:2019年03月19日 来源:互联网

给爬虫加上代理IP,并不是所有网站都会监控流量来源,一些运行良好的网站需要考虑数据安全性和核心竞争力,才会对流量进行监控,防止爬虫的高频率抓取导致核心数据外泄。


爬虫被源网站流量监控封杀IP?用代理IP来解决

这部分网站一般是通过IP来识别爬虫,当同个IP在一段时间内请求明显高于人访问网页的速度时,会判定为爬虫请求从而对该请求的IP进行短期或长期封杀。


那这时候就需要使用代理来绕过对IP的监控或封杀。在网上能找到一些提供免费代理IP的平台,不过亲测极其不稳定,通常100个里只有个别能用。


所以真正的想用代理IP来做爬虫,还是找付费的比较好。通常爬虫用途可以买动态IP:平台提供一个API,每次刷新请求会得到一个或一堆有效期比较短的IP,然后从这些IP里挑选来代理请求,失效时重新生成可用的IP即可。


我写的爬虫是node里跑的,这里不得不提的是,在js里非常流行的axios请求库亲测并不能实现代理请求(也许是我姿势不对),参考网上教程需要使用request这个请求库(然而并不好用,API并不是流行的Promise方式)


所以我在逻辑代码里是这样实现的,首先封装一个请求函数,以下是核心示例代码:


const request = require('request')

const _ = require('lodash')

const _request = (ipList,url) => {

  return new Promise(async (resolve, reject) => {

      let useIp = _.sample(ipList);

      //从ip列表里随机返回一个

      const options = {

        method: 'GET',

        url: url,

        gzip: true,

        encoding: null,

        proxy: useIp, //动态设置代理ip

        timeout: 2000

        //超时时间,太短代理不稳定,太长请求过久

      };

      request(options, (error, response, body) => {

        if (error) >= 0) {

          console.log(`${useIp} 代理有问题`);

          resolve(undefined)

          return;

        }

        console.log(`使用代理  ${useIp}`)

        try {

          let data = JSON.parse(body)

          resolve(data)

        } catch (e) {

          resolve(undefined)

        }

      })

  })

}


module.exports = async (url) => {

  try {

    let result = await _request(url)

    if (result) return result

    return axios.get(url).then(res => res.data)

  } catch (e) {

    return axios.get(url).then(res => res.data)

  }

}

上面封装过后的请求函数就暴露了一个统一的request方法,使用时候只需要request(url)即可。


从代码里也可以看到:当代理有效时会用代理,当代理无效、超时或其他任何错误时会返回正常的请求,这也是降级保障了爬虫代码的健壮性。


在使用代理IP时,超时时间是个需要不断调整的设置。超时太短了会导致代理不可用的概率提高,而超时太长则会影响整个爬虫的速度。


爬虫不使用代理时跑完需要4个小时,而如果使用代理,每次请求的时间就加长了,在设置2000毫秒的超时下,整个任务跑下来需要翻2倍的时间。


相关文章内容简介

1 爬虫被源网站流量监控封杀IP?用代理IP来解决

给爬虫加上代理IP,并不是所有网站都会监控流量来源,一些运行良好的网站需要考虑数据安全性和核心竞争力,才会对流量进行监控,防止爬虫的高频率抓取导致核心数据外泄。这部分网站一般是通过IP来识别爬虫,当同个IP在一段时间内请求明显高于人访问网页的速度时,会判定为爬虫请求从而对该请求的IP进行短期或长期封杀。那这时候就需要使用代理来绕过对IP的监控或封杀。在网上能找到一些提供免费代理IP的平台,不过亲测极其不稳定,通常100个里只有个别能用。所以真正的想用代理IP来做爬虫,还是找付费的比较好。通常爬虫用途可以买动态IP:平台提供一个API,每次刷新请求会得到一个或一堆有效期比较短的IP,然后从这些IP里挑选来代理请求,失效时重新生成可用的IP即可。我写的爬虫是node里跑的,这里不得不提的是,在js里非常流行的axios请求库亲测并不能实现代理请求(也许是我姿势不对),参考网上教程需要使用req [阅读全文]

热门标签

最新标签

推荐阅读

  1. 29

    2019-10

    代理ip帮助网站排名小技巧

    如何在短效的时间内做好网站优化排名,大大小小的网站为了引流必须要做网站优化,只有排名靠前,固定好排名才有更到的自然流量,很多网站努力的做了很久网站优化,但是效果微不足道,

  2. 30

    2019-09

    初学python爬虫需要注意哪些方面?

    Python作为一门入门极容易上手的语言,相信已经成为很多人“写着玩”的标配脚本语言。作为粘合性超强的Python,非常适合变化莫测的爬虫领域。那么初学Python爬虫需要注意哪些方面呢?首先很

  3. 27

    2019-09

    采集IP被限制怎么办?

    数据采集如果 IP 受到了限制,不妨试试 代理IP 。当数据采集的时候,爬取的规模较大,例如像抓取一个内容有百万条网站,但是该网站设置了IP限制,每小时就可以抓取千条,但如果使用同一IP

  4. 02

    2019-07

    代理IP软件具有哪方面的优势

    代理IP软件用途很广,这不仅是它自身的功能性决定,更多则是坚挺的刚需造成。但像市面诸如黑洞http代理ip这类新型软件,虽然起步比较晚,但这能使它采用时下最前沿的先进技术,从而它自

  5. 29

    2019-06

    到底IP代理是什么?

    一听到动态IP代理,咱们有种似曾相识又陌生的感觉。到底IP代理是什么?它的工作原理是怎样的呢?听不懂的朋友,来,咱们科普时间到啦!

  6. 24

    2019-06

    解决爬虫代理IP不足的问题

    在爬虫工作过程中,经常会被目标网站禁止访问,但又找不到原因,这是令人非常恼火的事情。