黑洞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. 18

    2019-05

    人们研发代理ip软件的初衷是什么?

    在http代理ip的市场上各种同类应用一直都不断更新,但是最近在这个市场上杀出的一匹黑马,这匹黑马名叫代理云黑洞HTTP代理IP网页代理平台。其实我们大多数人对于黑洞HTTP代理IP都熟悉不过

  2. 16

    2019-04

    真正的一手私密代理IP,来源于这里

    代理IP的诞生解决了很多网络工作者的很多难题,奈何僧多粥少,一些代理IP被反复的使用,可能被成百上千,成千上万个用户同时用来访问同一个网站,到自己手上时,发现已经不能再使用了

  3. 08

    2019-05

    不用代理IP抓取网站为什么会被阻止?

    当目标网站从代理(数据中心)IP检测到爬虫时,通常会:

  4. 05

    2019-08

    移动http代理服务器地址

    http代理服务器在现代生活中的应用越来越多。总有人说IP代理HTTP代理,那么什么是真正的http代理服务器呢简单的说,HTTP代理和我们现实中的各种代理商是一样的,它就是我们在访问目标网络

  5. 31

    2019-05

    爬虫工作需要IP代理服务器软件吗?

    大数据时代来临,爬虫工作越来越重要,但是,在爬取过程中,遇到最多的一个问题则是:封IP。有时候爬着爬着就爬不动了,限制IP访问了,或者不停的弹出验证码,总之,就是不让你爬了。

  6. 05

    2019-09

    代理IP的换IP功能用在哪些项目?

    如今网络无处不在,代理IP的运用也越来越广了,许多平台都有约束的,为了不被封,还需求代理IP出马,那么代理IP可用于哪些项目防封呢?