代理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();


  }


  }


相关文章内容简介
推荐阅读
  • 25 2020-02
    怎么选择合适的代理ip

    随着互联网的快速发展,用户对于ip代理服务的需求也越来越多。然而如今市场上的ip代理服务是非常少见的,很多用户虽然想要使用ip代理服务,却很难找寻到合适的ip代理软件,因此很多用户

  • 28 2019-08
    选择高质量代理ip资源的原因

    高质量代理ip​资源在国内是很难找到的,这也导致了很多用户在找寻不到高质量代理ip资源用户就放弃了它。但是依然也有很多用户,一直在努力孜孜不倦的找寻着高质量代理ip资源。不可否认

  • 21 2019-10
    怎样突破代理获取客户的真实IP

    怎样突破代理获取客户的真实IP?对于这三个值:REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR来说,可以分以下五种情况:一、没有使用代理服务器的情况:

  • 16 2018-11
  • 19 2019-08
    营销补量离不开代理IP的帮助

    做网络营销如果效果不好,为了达到目的,可以进行营销补量,这是网络营销人员都知道的。但营销补量并不是那么好做,需要一些方法。例如开了网店想让别人能找到你的产品,除了到一些平

  • 14 2019-11
    3分钟了解什么是代理IP

    代理,也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。使用代理IP有利于保障网络终端的隐私