代理ip

>

换ip软件

>

http代理

>

ip代理

您的位置:首页 > 新闻资讯 > 文章内容
java爬虫常用设置代理IP教程
来源:网连代理 作者:admin 时间:2019-11-04 16:49:55

  爬虫必须用代理IP吗?很多用户认为爬虫必须要用代理IP,没有代理IP将寸步难行;也有人说,代理IP是非必须的。那么他们这样认为的理由都是什么呢?


java爬虫常用设置代理IP教程


  有的用户他自己写爬虫程序,公司的任务一天要爬取几十万个页面,有时任务多的时候一天要上百万,爬着爬着IP就被封了,没有代理IP根本不行,他认为没有代理ip爬虫将寸步难行。


  他们说很有道理,都用亲身体验来证明了自己的观点。爬虫程序从本质上来说也是个访问网页的用户而已,只不过是个不那么守规矩的特殊用户,服务器一般很不欢迎这样的特殊用户总是用各种手段发现和禁止。最常见的就是判断你访问的频率,因为普通人访问网页的频率是不会很快的,如果发现某个ip访问的过快就会将此ip封禁。


  当任务量比较大的时候,一天采集上百万的数据,慢慢爬就完不成任务了,加速爬的话,目标服务器压力太大,就会封IP,同样完不成任务。那怎么办呢,只有用代理IP来解决了。在这里我就是使用了我们长期使用的一家质量好的代理,亿牛云代理,而且是使用的他们的爬虫代理(动态转发)和一般的api模式不一样。这种更简单更方便,对于懒人来说绝对是最佳选择。


  具体代码的使用


  import java.io.ByteArrayOutputStream;


  import java.io.InputStream;


  import java.net.Authenticator;


  import java.net.HttpURLConnection;


  import java.net.InetSocketAddress;


  import java.net.PasswordAuthentication;


  import java.net.Proxy;


  import java.net.URL;


  import java.util.Random;


  class ProxyAuthenticator extends Authenticator{


  private String user,password;


  public ProxyAuthenticator(String user,String password){


  this.user=user;


  this.password=password;


  }


  protected PasswordAuthentication getPasswordAuthentication(){


  return new PasswordAuthentication(user,password.toCharArray());


  }


  }


  /**


  *注意:下面代码仅仅实现HTTP请求链接,每一次请求都是无状态保留的,仅仅是这次请求是更换IP的,如果下次请求的IP地址会改变


  *如果是多线程访问的话,只要将下面的代码嵌入到你自己的业务逻辑里面,那么每次都会用新的IP进行访问,如果担心IP有重复,


  *自己可以维护IP的使用情况,并做校验。


  */


  public class Demo{


  public static void main(String args[])throws Exception{


  //要访问的目标页面


  String targetUrl="http://httpbin.org/ip";


  //代理服务器


  String proxyServer="t.16yun.cn";


  int proxyPort=31111;


  //代理隧道验证信息


  String proxyUser="username";


  String proxyPass="password";


  try{


  URL url=new URL(targetUrl);


  Authenticator.setDefault(new ProxyAuthenticator(proxyUser,proxyPass));


  //创建代理服务器地址对象


  InetSocketAddress addr=new InetSocketAddress(proxyServer,proxyPort);


  //创建HTTP类型代理对象


  Proxy proxy=new Proxy(Proxy.Type.HTTP,addr);


  //设置通过代理访问目标页面


  HttpURLConnection connection=(HttpURLConnection)url.openConnection(proxy);


  //设置Proxy-Tunnel


  //Random random=new Random();


  //int tunnel=random.nextInt(10000);


  //connection.setRequestProperty("Proxy-Tunnel",String.valueOf(tunnel));


  //解析返回数据


  byte[]response=readStream(connection.getInputStream());


  System.out.println(new String(response));


  }catch(Exception e){


  System.out.println(e.getLocalizedMessage());


  }


  }


  /**


  *将输入流转换成字符串


  *


  * param inStream


  * return


  * throws Exception


  */


  public static byte[]readStream(InputStream inStream)throws Exception{


  ByteArrayOutputStream outSteam=new ByteArrayOutputStream();


  byte[]buffer=new byte[1024];


  int len=-1;


  while((len=inStream.read(buffer))!=-1){


  outSteam.write(buffer,0,len);


  }


  outSteam.close();


  inStream.close();


  return outSteam.toByteArray();


  }


  }


相关文章内容简介
推荐阅读
  • 10 2019-09
    如何选择好用的http代理服务商?

    在很多时候,我们需要用到http代理,在这个时候,使用http代理的时候,就需要选择合适的服务商。但是网络上的服务商非常多,从这么多的服务商中选择合适的服务商,是一项很费力的事情。

  • 19 2019-11
    如何选择一家靠谱的代理IP平台

    用户对代理IP的需求量越来越大,代理IP服务供应商也越来越多,这意味着有更多的选择的同时,也意味着选择一家靠谱的代理IP服务商更加不容易。那么如何选择一家靠谱的代理IP平台呢?

  • 16 2019-08
    代理IP共享IP和独享IP的区别

    当需要使用很多IP的时候,自然是要选择代理IP,代理IP的类型也分为很多种,例如共享IP和独享IP,两者的区别还有很多人并不了解,下面就为大家进行详细的介绍。我们来了解一下共享IP和独享

  • 09 2018-11
  • 15 2019-08
    代理IP在游戏中有什么作用

    代理IP是换IP的工具,随着需求增大,已经是我们生活中不陌生的软件了。玩游戏也是很多人喜欢做的事,那么,代理IP和游戏有什么关联吗?代理IP在游戏中有什么作用呢?首先,代理IP是在玩

  • 10 2020-02
    代理IP软件都能隐藏真实IP吗

    代理IP的作用越来越大,有用来做爬虫的,有用来做批量注册的,还有用来投票的等等,还有很多用来隐藏自己真实的IP,做一些不可描述的事情,也有很多朋友问,代理IP软件都能隐藏真实IP吗