java动态设置IP

工作需要要写一个spider访问XXX网站,但是由于我访问频率很高经常被XX网站封IP(我知道这是不道德的,但是没办法)。为了突破IP限制需要动态替换代理ip。 

代码如下: 
Java代码   收藏代码
  1. import java.io.BufferedInputStream;  
  2. import java.io.IOException;  
  3. import java.net.URL;  
  4. import java.net.URLConnection;  
  5.   
  6. import org.apache.log4j.Logger;  
  7.   
  8. /**  
  9.  * @author Jason 
  10.  * @date  Oct 27, 2010 
  11.  * @version 1.0  
  12.  */  
  13. public class TestProxyIp  {  
  14.     private static final Logger log = Logger.getLogger(TestProxyIp.class);  
  15.       
  16.     public static void main(String[] args) throws IOException {  
  17.         System.setProperty("http.maxRedirects""50");  
  18.         System.getProperties().setProperty("proxySet""true");  
  19.         // 如果不设置,只要代理IP和代理端口正确,此项不设置也可以  
  20.         String ip = "93.91.200.146";  
  21.         ip = "221.130.18.5";  
  22.         ip = "221.130.23.135";  
  23.         ip = "221.130.18.78";  
  24.         ip = "221.130.23.134";  
  25.         ip = "221.130.18.49";  
  26.         ip = "111.1.32.36";  
  27.         ip = "221.130.18.49";  
  28.         ip = "221.130.18.49";  
  29.         System.getProperties().setProperty("http.proxyHost", ip);  
  30.         System.getProperties().setProperty("http.proxyPort""80");  
  31.           
  32.         //确定代理是否设置成功  
  33.         log.info(getHtml("http://www.ip138.com/ip2city.asp"));  
  34.           
  35.     }  
  36.       
  37.     private static String getHtml(String address){  
  38.         StringBuffer html = new StringBuffer();  
  39.         String result = null;  
  40.         try{  
  41.             URL url = new URL(address);  
  42.             URLConnection conn = url.openConnection();  
  43.             conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)");  
  44.             BufferedInputStream in = new BufferedInputStream(conn.getInputStream());  
  45.               
  46.             try{  
  47.                 String inputLine;  
  48.                 byte[] buf = new byte[4096];  
  49.                 int bytesRead = 0;  
  50.                 while (bytesRead >= 0) {  
  51.                     inputLine = new String(buf, 0, bytesRead, "ISO-8859-1");  
  52.                     html.append(inputLine);  
  53.                     bytesRead = in.read(buf);  
  54.                     inputLine = null;  
  55.                 }  
  56.                 buf = null;  
  57.             }finally{  
  58.                 in.close();  
  59.                 conn = null;  
  60.                 url = null;  
  61.             }  
  62.             result = new String(html.toString().trim().getBytes("ISO-8859-1"), "gb2312").toLowerCase();  
  63.               
  64.         }catch (Exception e) {  
  65.             e.printStackTrace();  
  66.             return null;  
  67.         }finally{  
  68.             html = null;              
  69.         }  
  70.         return result;  
  71.     }  
  72. }  

运行结果如下: 


如果最后显示的IP与本机网络IP不一样说明我们达到了代理的功能,我自己的IP是 119.6.69.202 ,现在访问的IP是111.160.68.18说明成功了。 
如果按照正常想象来看显示的IP是最后一个,也就是ip = "221.130.18.49"; 结果却是111.160.68.18。我想这应该是代理服务器的原因,不过这个没有关系,达到我们想要的目的就行了。 

使用动态IP需要注意的地方: 
1、如果动态IP错误,会以本机网络IP访问。如果端口错误,会报错。 
2、代理IP哪里来呢? 我是从优易ip代理软件免费IP里找的,然后存到自己本机。如果对方封了我现在的IP,那么我就更换IP。 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值