Java用編碼檢測(cè)代理ip是否有效
基于java.net包(簡(jiǎn)單的 HTTP 請(qǐng)求檢測(cè))用Java語(yǔ)言方法來(lái)檢測(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ù)器的地址。
然后嘗試使用代理打開(kāi)一個(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ī)則,避免過(guò)度頻繁的請(qǐng)求導(dǎo)致被封禁。
到此這篇關(guān)于Java用編碼檢測(cè)代理ip是否有效的文章就介紹到這了,更多相關(guān)Java檢測(cè)代理ip內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
My eclipse 端口占用(9360)問(wèn)題解決辦法
這篇文章主要介紹了My eclipse 工程發(fā)布時(shí)出現(xiàn)端口占用問(wèn)題解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12
Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之?dāng)?shù)組
數(shù)組是有序的元素序列,若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來(lái)的一種形式2022-02-02
基于springboot i18n國(guó)際化后臺(tái)多種語(yǔ)言設(shè)置的方式
這篇文章主要介紹了基于springboot i18n國(guó)際化后臺(tái)多種語(yǔ)言設(shè)置的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Java編程實(shí)現(xiàn)數(shù)組轉(zhuǎn)成list及l(fā)ist轉(zhuǎn)數(shù)組的方法
這篇文章主要介紹了Java編程實(shí)現(xiàn)數(shù)組轉(zhuǎn)成list及l(fā)ist轉(zhuǎn)數(shù)組的方法,結(jié)合實(shí)例形式較為詳細(xì)的總結(jié)分析了java實(shí)現(xiàn)數(shù)組與list之間相互轉(zhuǎn)換的操作技巧,需要的朋友可以參考下2017-09-09
Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器
這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器,文章我圍繞實(shí)現(xiàn)簡(jiǎn)單計(jì)算器的相關(guān)代碼展現(xiàn)全文,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,2022-01-01
使用idea部署springboot項(xiàng)目到docker實(shí)踐
這篇文章主要介紹了使用idea部署springboot項(xiàng)目到docker實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-04-04
SpringCloud和Spring Cloud Alibaba的使用及區(qū)別說(shuō)明

