Java用編碼檢測(cè)代理ip是否有效
基于java.net包(簡(jiǎn)單的 HTTP 請(qǐng)求檢測(cè))用Java語(yǔ)言方法來檢測(cè)代理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地址和端口號(hào)。
創(chuàng)建一個(gè)Proxy對(duì)象,指定代理類型為HTTP和代理服務(wù)器的地址。
然后嘗試使用代理打開一個(gè)URL連接,這里是https://www.example.com,并設(shè)置連接超時(shí)和讀取超時(shí)時(shí)間為5秒。
獲取響應(yīng)碼,如果是200則表示代理有效,返回true;否則,捕獲IOException(網(wǎng)絡(luò)相關(guān)異常)和NumberFormatException(端口號(hào)轉(zhuǎn)換異常)并返回false。
第二個(gè)示例:基于java.net.Socket(底層的TCP連接檢測(cè))
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和端口號(hào)。
創(chuàng)建一個(gè)Socket對(duì)象,嘗試連接代理服務(wù)器,設(shè)置超時(shí)時(shí)間為5秒。
如果連接成功,關(guān)閉Socket并返回true;否則,捕獲異常并返回false。
這些方法只是基本的檢測(cè)方式,實(shí)際應(yīng)用中可以根據(jù)具體需求(如檢測(cè)代理是否支持特定協(xié)議、是否能夠隱藏真實(shí)IP等)進(jìn)行更復(fù)雜的檢測(cè)。同時(shí),在進(jìn)行大量代理IP檢測(cè)時(shí),要注意遵守網(wǎng)站的使用規(guī)則,避免過度頻繁的請(qǐng)求導(dǎo)致被封禁。
到此這篇關(guān)于Java用編碼檢測(cè)代理ip是否有效的文章就介紹到這了,更多相關(guān)Java檢測(cè)代理ip內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+WebMagic+MyBaties實(shí)現(xiàn)爬蟲和數(shù)據(jù)入庫(kù)的示例
WebMagic是一個(gè)開源爬蟲框架,本項(xiàng)目通過在SpringBoot項(xiàng)目中使用WebMagic去抓取數(shù)據(jù),最后使用MyBatis將數(shù)據(jù)入庫(kù)。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
解決java讀取EXCEL數(shù)據(jù)變成科學(xué)計(jì)數(shù)法的問題
這篇文章主要介紹了解決java讀取EXCEL數(shù)據(jù)變成科學(xué)計(jì)數(shù)法的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04
詳解Java的MyBatis框架中的緩存與緩存的使用改進(jìn)
很多人在使用MyBatis的緩存后經(jīng)常會(huì)遇到MySQL分頁(yè)查詢的顯示問題,針對(duì)于此,這里我們就來詳解Java的MyBatis框架中的緩存與緩存的使用改進(jìn),首先來回顧一下MyBatis的緩存機(jī)制與執(zhí)行:2016-06-06
Java?Zookeeper分布式分片算法超詳細(xì)講解流程
ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等2023-03-03
簡(jiǎn)單了解Java斷言利器AssertJ原理及用法
這篇文章主要介紹了簡(jiǎn)單了解Java斷言利器AssertJ原理及用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

