Если нужный поиск по-прежнему использует традиционный WHOIS, HTTP-прокси может передать этот обмен TCP, когда его политика разрешает CONNECT к службе WHOIS. Клиент должен завершить рукопожатие с прокси, прежде чем отправлять текст поиска. Для разрешённой публичной проверки WHOIS без настроенных учётных данных прокси список HTTP-прокси предлагает возможных посредников; отдельно убедитесь, что один из них разрешает хост службы WHOIS и порт 43.

Для гипотетической службы с именем whois.example начните с этого HTTP-запроса:

CONNECT whois.example:43 HTTP/1.1
Host: whois.example:43

Записывайте концы строк HTTP как CRLF. Прочитайте полный ответ прокси, включая его завершающую пустую строку заголовков, и проверьте числовой статус успеха. Получения части строки состояния недостаточно, чтобы начать следующий протокол.

Затем отправьте текст WHOIS

После открытия туннеля отправьте запрос, которого ожидает этот сервер WHOIS. Простой иллюстративный запрос:

example.com<CRLF>

Этот маркер обозначает байты возврата каретки и перевода строки. Он не является частью доменного имени. Внутри этого обмена WHOIS нет ни строки HTTP GET, ни статуса HTTP-ответа.

Читайте текст, пока сервер WHOIS не закроет соединение. Ответ может содержать много строк; первый перевод строки не означает, что он полон. Держите тайм-ауты соединения и чтения ограниченными в реализации.

Эта последовательность также даёт парсеру две различные границы. Сначала идёт блок заголовков HTTP. Затем идёт ответ WHOIS, завершение которого сигнализируется закрытием соединения. Сохраняйте байты, оказавшиеся в буфере за разобранной границей, вместо того чтобы отбрасывать всё сетевое чтение.

Отказ прокси означает, что туннель так и не открылся, поэтому отправка домена после этого не может дать результат WHOIS. Если ответ сервера указывает на другую службу WHOIS, любой последующий запрос требует собственного разрешённого соединения с этой службой.

Похожие статьи