• java 检测代理IP是否准确


    我这里提供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<String, Integer> 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);
                    }
                   
              }
        }
    
  • 相关阅读:
    windows启动应用程序
    nvm uninstall node versions failed
    FATAL ERROR: wasm code commit Allocation failed process out of memory
    C# 正则表达式大全 (转载)
    zabbix 6.0 使用zabbix agent 2自带模板监控 Redis 海口
    go出现错误:(type interface {}) to type string
    pythonsocketio实现websocket的连接与使用
    如何使用fiddler为手机设置代理
    Logstash—Filter模块csv
    QT事件鼠标事件、事件分发器
  • 原文地址:https://www.cnblogs.com/junrong624/p/5416503.html
Copyright © 2020-2023  润新知