代理ip

>

换ip软件

>

http代理

>

ip代理

您的位置:首页 > 新闻资讯 > 文章内容
爬虫被源网站流量监控封杀IP?用代理IP来解决!
来源:网连代理 作者:admin 时间:2019-07-17 16:45:38

  之前一个做了爬虫的客户上周末来找我,希望给爬虫加上代理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倍的时间。


相关文章内容简介
推荐阅读
  • 12 2019-12
    爬虫到底合不合法?

    据说互联网上50%以上的流量都是爬虫创造的,也许你看到很多热门数据都是爬虫所创造的,所以可以说无爬虫就无互联网的繁荣。之前写了一篇文章只因写了一段爬虫,公司200多人被抓,讲述程

  • 20 2019-12
    服务器租用需要注意这四点

    在现如今网络发达的时代,服务器租用已经成为一种业务模式。它的优点在于用户不用去自己订购服务器也可以使用发哦服务器,能大大地降低服务器资金的投入,这一点对于一些中小型企业和

  • 21 2018-11
  • 15 2019-01
  • 12 2020-02
    使用代理IP软件更换IP有什么要注意?

    很多用户在进行服务器租用或者服务器托管过程中会因为业务、客户等问题导致更换IP或者重新增加IP,虽然是一个简单的IP,但是更换IP有很多的细节需要注意,否则稍不留心,苦心经营的网站

  • 13 2019-06
    IP代理的原理是什么

    代理(英语:Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网