基于java.net包(简单的 http 请求检测)用java语言方法来检测代理ip是否有效:
import java.io.ioexception; import java.net.httpurlconnection; import java.net.inetsocketaddress; import java.net.proxy; import java.net.url; public class proxychecker { public static boolean checkproxy(string proxy) { try { string[] parts = proxy.split(":"); string ip = parts[0]; int port = integer.parseint(parts[1]); proxy proxyobj = new proxy(proxy.type.http, new inetsocketaddress(ip, port)); url url = new url("https://www.example.com"); httpurlconnection connection = (httpurlconnection) url.openconnection(proxyobj); connection.setconnecttimeout(5000); connection.setreadtimeout(5000); int responsecode = connection.getresponsecode(); if (responsecode == 200) { return true; } else { return false; } } catch (ioexception | numberformatexception e) { return false; } }
代码解析:在checkproxy方法中,首先从代理ip字符串中拆分出ip地址和端口号。
创建一个proxy对象,指定代理类型为http和代理服务器的地址。
然后尝试使用代理打开一个url连接,这里是https://www.example.com,并设置连接超时和读取超时时间为5秒。
获取响应码,如果是200则表示代理有效,返回true;否则,捕获ioexception(网络相关异常)和numberformatexception(端口号转换异常)并返回false。
第二个示例:基于java.net.socket(底层的tcp连接检测)
import java.io.ioexception; import java.net.socket; public class proxysocketchecker { public static boolean checkproxysocket(string proxy) { try { string[] parts = proxy.split(":"); string ip = parts[0]; int port = integer.parseint(parts[1]); socket socket = new socket(); socket.connect(new java.net.inetsocketaddress(ip, port), 5000); socket.close(); return true; } catch (ioexception | numberformatexception e) { return false; } } }
代码解释:在checkproxysocket方法中,同样先拆分代理ip字符串得到ip和端口号。
创建一个socket对象,尝试连接代理服务器,设置超时时间为5秒。
如果连接成功,关闭socket并返回true;否则,捕获异常并返回false。
这些方法只是基本的检测方式,实际应用中可以根据具体需求(如检测代理是否支持特定协议、是否能够隐藏真实ip等)进行更复杂的检测。同时,在进行大量代理ip检测时,要注意遵守网站的使用规则,避免过度频繁的请求导致被封禁。
到此这篇关于java用编码检测代理ip是否有效的文章就介绍到这了,更多相关java检测代理ip内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论