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


  }


  }


相关文章内容简介
推荐阅读
  • 20 2019-08
    用代理IP怎么防封

    现在很多人都会用网络,已经成为我们生活中的一部分。所以现在很多人是通过网络工作的,像网络推广人员。网络推广需要在一些平台发很多消息,为了平台的正常运行都会有IP限制,在工作

  • 24 2019-06
    使用HTTP代理IP你必须知道的几点

    HTTP代理IP你必须知道的几点?HTTP代理IP在现实生活中应用越来越频繁,越来越多的网络运营、销售、推广需要这种代理方式。而在你使用HTTP代理IP时,你真的明白它的工作原理吗?你是否能根据

  • 20 2020-02
    网站怎么阻止高频访问

    如果你的网站不需要被代理IP频繁访问,有没有什么方法可以设置屏蔽它呢?因为如果太频繁的访问会对网站服务器造成压力,也影响其他用户正常使用。

  • 03 2019-12
    修改电脑IP地址的方法

    随着互联网的飞速发展,现已经是不可取代的网络时代,网络让我们有了丰富多彩的生活和足不出户的便捷,互联网就像一张蜘蛛网一样,紧紧的把每一个人都吸附在上面,现在的生活也离不开

  • 09 2019-12
    解决浏览器代理服务器被拒绝方法

    今天电脑在突然重启后,连接网络多个浏览器都显示代理服务被拒绝。然后打开IE浏览器的internet选项——>连接——>局域网设置 发现勾选了代理服务器,取消勾选代理服务器,勾选上自动检测

  • 15 2019-11
    爬虫代理IP有哪些种类

    爬虫代理IP有哪些种类?众所周知,没有大量的IP支撑,爬虫工作者寸步难行。那么爬虫代理IP从何而来呢?以下是我们总结的一些代理IP的解决方案。一、第三方平台