#java #proxy #whois
#java #прокси #whois
Вопрос:
Я пробовал это … дает мне java.lang.IllegalArgumentException: Invalid Proxy
. Получатели заполняют прокси и порт из текстового файла.
//Imports
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.*;
import java.util.ArrayList;
import org.apache.commons.net.whois.WhoisClient;
public void whoisCheck(String host) {
SocketAddress addr = new InetSocketAddress(getProxy(), getPort)
Proxy useProxy = new Proxy(Proxy.Type.HTTP, addr);
WhoisClient whoisClient = new WhoisClient();
whoisClient.setProxy(useProxy);
whoisClient.connect(IANA_WHOIS_SERVER, WHOIS_PORT);
tmpStr = whoisClient.query(host);
whoisClient.disconnect();
}
Комментарии:
1. В вашем вопросе отсутствуют важные части: импорт и ссылка на библиотеку WhoisClient.
2.Поскольку
setProxy()
невозможно выбросить, логично, чтоnew Proxy()
это выдает (я должен догадаться, поскольку вы не сказали, где генерируется исключение). Просматривая документы API прокси, мы видим, что «IllegalArgumentException - when the type and the address are incompatible
«. Какой адрес возвращаетсяgetProxy()
?3. Ошибка выдается в whoisClient.connect(IANA_WHOIS_SERVER, WHOIS_PORT); Возвращаемый адрес — 23.19.34.15, а порт — 8800
Ответ №1:
whois
это протокол, работающий через TCP-порт 43, а не через HTTP / HTTPS. В нем нет понятия прокси.
По этим двум причинам не используйте HTTP-библиотеку для подключения к whois
серверам, поскольку это никогда не будет работать корректно из коробки. Вы создадите себе слишком много проблем. Вместо этого либо используйте определенную whois
библиотеку на вашем языке программирования, либо просто откройте сокет TCP на порту 43, напишите на нем свой запрос, завершите CR LF и считайте ответ сервера в виде большого двоичного объекта текста.
Если вам нужно скрыть свой IP-адрес, вам нужно прибегнуть к типичным «перенаправлениям» на уровне IP, таким как туннель или библиотека SOCKS.