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

如何设置动态IP代理?

来源:互联网 作者:admin 时间:2019-10-08 15:35:14

  在设置好代理IP之后,如果我们想要弱化网站对访问IP的限制,那么我们需要实现动态的在多个HTTP代理中快速来回切换。下面为大家带来两种实现方案。


如何设置动态IP代理


  第一种方案:


  从外部将IP代理参数传给爬虫脚本,爬虫运行完成后自动退出,再取另一个IP代理参数,重新跑爬虫脚本,以此形式周而复始。


  可以写一个这样的shell脚本:


  #!/usr/bin/env bash# 假设有2个http代理可用proxies=( 'http://a.b.c.d:8443' 'http://h.i.j.k:1087');# 周而复始地while(true); do # 每次拿出一个代理 for p in "${proxies[@]}"; do echo 使用代理 $p # 用该代理跑爬虫 PROXY=$p node index.js # 休眠一定时间 sleep 5 donedone


  其中 PROXY=$p 是定义一个环境变量PROXY, 其值是2个http代理中的任意一个。我们修改一下index.js, 让其使用PROXY环境参数作为其代理:


  const request = require("request");const proxy = process.env.PROXY;request({ url:"http://httpbin.org/ip", proxy },(err,res,body)=>{ // 暂时忽略错误信息,直接打印body console.log(body);});


  该方案使用bash脚本配合js爬虫脚本一起使用,对于不懂bash的人来说,维护起来有一定的心理负担。接下来,我们使用纯js语言实现。


  第二种方案:


  将方案一中的bash转换为js,index.js内容调整为以下内容:


  const request = require("request");const proxies = ["http://a.b.c.d:8443","http://h.i.j.k:1087"];main();// index 是循环执行的次数function main( index=0 ){ request({ url:"http://httpbin.org/ip", // 来回的取proxy proxy: proxies[index % proxies.length] }, (err, res, body) => { // 暂时忽略错误信息,直接打印body console.log(body); // 5秒后取下一个proxy,重新跑爬虫 setTimeout( main, 5000, index+1 ); });}


  综上,我们实现了从不使用代理到使用单个代理,再到使用多个代理的过程,使得我们的爬虫能尽可能少地受到服务器限流的影响。


  这样操作能够让我们使用代理IP爬虫的时候,没那么容易被网站察觉,使用效率得到提高。


相关文章内容简介