Eine WHOIS-Abfrage innerhalb eines HTTP-CONNECT-Tunnels
Verfolgen Sie den Proxy-Handshake und die WHOIS-Anfrage als getrennte Austausche, wenn eine erlaubte HTTP-CONNECT-Route eine TCP-Abfrage an Port 43 befördert.
Wenn eine erforderliche Abfrage noch traditionelles WHOIS verwendet, kann ein HTTP-Proxy diesen TCP-Austausch befördern, sofern seine Richtlinie CONNECT zum WHOIS-Dienst erlaubt. Der Client muss den Proxy-Handshake abschließen, bevor er den Abfragetext sendet. Für einen erlaubten öffentlichen WHOIS-Test ohne konfigurierte Proxy-Anmeldedaten bietet die HTTP-Proxy-Liste mögliche Vermittler; bestätigen Sie getrennt, dass einer den Host des WHOIS-Dienstes und Port 43 zulässt.
Beginnen Sie für einen hypothetischen Dienst namens whois.example mit dieser HTTP-Anfrage:
CONNECT whois.example:43 HTTP/1.1
Host: whois.example:43
Schreiben Sie HTTP-Zeilenenden als CRLF. Lesen Sie die vollständige Proxy-Antwort einschließlich der abschließenden leeren Kopfzeile und prüfen Sie den numerischen Erfolgsstatus. Der Empfang eines Teils der Statuszeile reicht nicht aus, um das nächste Protokoll zu beginnen.
Dann den WHOIS-Text senden
Senden Sie nach dem Öffnen des Tunnels die Abfrage, die dieser WHOIS-Server erwartet. Eine einfache beispielhafte Abfrage lautet:
example.com<CRLF>
Die Markierung steht für Wagenrücklauf- und Zeilenvorschub-Bytes. Sie ist nicht Teil des Domänennamens. Innerhalb dieses WHOIS-Austauschs gibt es keine HTTP-GET-Zeile und keinen HTTP-Antwortstatus.
Lesen Sie den Text, bis der WHOIS-Server die Verbindung schließt. Eine Antwort kann viele Zeilen enthalten; die erste neue Zeile bedeutet nicht, dass sie vollständig ist. Halten Sie Verbindungs- und Lese-Timeouts in der Implementierung begrenzt.
Diese Reihenfolge gibt dem Parser außerdem zwei verschiedene Grenzen. Zuerst kommt ein HTTP-Kopfzeilenblock. Danach kommt die WHOIS-Antwort, deren Abschluss durch das Schließen der Verbindung signalisiert wird. Bewahren Sie alle Bytes, die über eine geparste Grenze hinaus gepuffert wurden, anstatt einen gesamten Netzwerklesevorgang zu verwerfen.
Eine Proxy-Ablehnung bedeutet, dass der Tunnel nie geöffnet wurde; das anschließende Senden einer Domäne kann daher kein WHOIS-Ergebnis liefern. Wenn die Antwort des Servers auf einen anderen WHOIS-Dienst verweist, benötigt jede Folgeabfrage ihre eigene erlaubte Verbindung zu diesem Dienst.