博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 检测代理IP是否准确
阅读量:6118 次
发布时间:2019-06-21

本文共 3077 字,大约阅读时间需要 10 分钟。

我这里提供2个方法都可以实现:第一个是createIPAddress()和convertStreamToString()

  

import java.io.IOException;import java.io.InputStream;import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL;import java.net.URLConnection;import java.nio.charset.Charset;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.io.BufferedReader;import java.io.InputStreamReader;/**      * 批量代理IP有效检测      *      * @param IP      * @param post      */public static void createIPAddress(String ip,int port) {		URL url = null;		try {		url = new URL("http://www.baidu.com");		} catch (MalformedURLException e) {		System.out.println("url invalidate");		}		InetSocketAddress addr = null;		addr = new InetSocketAddress(ip, port);		Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http proxy		InputStream in = null;		try {		URLConnection conn = url.openConnection(proxy);		conn.setConnectTimeout(1000);		in = conn.getInputStream();		} catch (Exception e) {		System.out.println("ip " + ip + " is not aviable");//异常IP		}		String s = convertStreamToString(in);		System.out.println(s);		// System.out.println(s);		if (s.indexOf("baidu") > 0) {//有效IP		System.out.println(ip + ":"+port+ " is ok");		}		}			public static String convertStreamToString(InputStream is) {		if (is == null)		return "";		BufferedReader reader = new BufferedReader(new InputStreamReader(is));		StringBuilder sb = new StringBuilder();		String line = null;		try {		while ((line = reader.readLine()) != null) {		sb.append(line + "/n");		}		} catch (IOException e) {		e.printStackTrace();		} finally {		try {		is.close();		} catch (IOException e) {		e.printStackTrace();		}		}		return sb.toString();		}

 

第二个方法是checkProxyIp()

     

/**     * 批量代理IP有效检测     *     * @param proxyIpMap     * @param reqUrl     */    public static void checkProxyIp(Map
proxyIpMap, String reqUrl) { for (String proxyHost : proxyIpMap.keySet()) { Integer proxyPort = proxyIpMap.get(proxyHost); int statusCode = 0; try { HttpClient httpClient = new HttpClient(); httpClient.getHostConfiguration().setProxy(proxyHost, proxyPort); // 连接超时时间(默认10秒 10000ms) 单位毫秒(ms) int connectionTimeout = 10000; // 读取数据超时时间(默认30秒 30000ms) 单位毫秒(ms) int soTimeout = 30000; httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout); httpClient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout); HttpMethod method = new GetMethod(reqUrl); statusCode = httpClient.executeMethod(method); } catch (Exception e) { System.out.println("ip " + proxyHost + " is not aviable"); } if(statusCode>0){ System.out.format("%s:%s-->%sn", proxyHost, proxyPort,statusCode); } } }

 

转载于:https://www.cnblogs.com/junrong624/p/5416503.html

你可能感兴趣的文章
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
关于软件开发的一些感悟
查看>>
uva 10806
查看>>
纯CSS3绘制的黑色图标按钮组合
查看>>
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>