Verwenden von Telnet zum Abrufen des Website-Headers


7

Ich habe die Frage, ob es möglich ist, den Header der Website mithilfe von Telnet abzurufen. Die Website sieht so aus domain.name.server.com/~USER(nur ein Beispiel). Und ich möchte es Header per Telnet bekommen.

telnet domain.name.server.com/~USER 80 <- funktioniert nicht

telnet domain.name.server.com 80funktioniert aber ich muss ~ user bekommen. Gibt es eine Möglichkeit dazu?

Antworten:


19

Verwenden Sie telnet domain.name.server.com 80dann

HEAD /~USER HTTP/1.1
Host: domain.name.server.com

(Dann musst du noch Entereinmal schlagen .)

Jetzt sollte es Ihnen den Header dieser Seite zeigen.

Für ein Beispiel aus dem wirklichen Leben:

$ telnet unix.stackexchange.com 80                 
Trying 198.252.206.16...
Connected to unix.stackexchange.com.
Escape character is '^]'.
HEAD /questions/237635/using-telnet-to-get-website-header HTTP/1.1
Host: unix.stackexchange.com

HTTP/1.1 200 OK
Cache-Control: public, no-cache="Set-Cookie", max-age=60
Content-Length: 70679
Content-Type: text/html; charset=utf-8
Expires: Wed, 21 Oct 2015 19:27:43 GMT
Last-Modified: Wed, 21 Oct 2015 19:26:43 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
X-Request-Guid: dbf9d0f6-0ca4-423f-98f0-4cdf2bf51bf1
Set-Cookie: prov=08886524-c640-40ad-a0ee-246db3219228; domain=.stackexchange.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Date: Wed, 21 Oct 2015 19:26:43 GMT

Connection closed by foreign host.

3
Wenn Sie nicht haben telnet, können Sie das gleiche mit ncoder bekommen netcat(Distributionen variieren in der Art, wie sie es nennen, und es wird eine Original- und eine GNU-Version verwendet).
Bruce Ediger

6
Sie sollten auch angeben, Host: unix.stackexchange.comdamit der Server weiß, welche Website Sie möchten, wenn er mehrere Websites als virtuelle Hosts bereitstellt .
Deltab

2
Warum, warum verwenden Sie hier HTTP / 1.0? Derzeit (und was den Host:Header sinnvoll nutzt ) ist HTTP / 1.1, dessen Hauptmerkmal namenbasierte virtuelle Hosts waren.
ein CVn

Wenn Sie der Welt nur ein bisschen helfen möchten, können Sie auch TLS verwenden. gnutls-cli $host -p $portoder geben Sie openssl s_client -connect $host:$portdann die HTTP-Header wie gewohnt ein.
Blacklight Shining

2

Wenn Sie wgetanstelle von Telnet verwenden können, können Sie die Header alle mit einem Befehl abrufen:

wget -q -S -O - domain.name.server.com/~USER | : 2>&1
  • -q Schaltet normale Protokollnachrichten aus
  • -S Aktiviert die Protokollierung von Headern vom Server
  • -O - Leitet den Inhalt der heruntergeladenen Datei an STDOUT
  • | :leitet den Inhalt der heruntergeladenen Datei an das Dienstprogramm no-op weiter :. Dies verhindert effektiv das Herunterladen der gesamten Datei, was vorteilhaft ist, wenn es sich um eine große Datei handelt
  • 2>&1 (optional) leitet die protokollierten Header an STDOUT weiter

Zum Beispiel:

$ wget -q -S -O - unix.stackexchange.com/questions/237635/using-telnet-to-get-website-header | :
  HTTP/1.1 200 OK
  Cache-Control: public, no-cache="Set-Cookie", max-age=49
  Content-Type: text/html; charset=utf-8
  Expires: Wed, 21 Oct 2015 21:22:21 GMT
  Last-Modified: Wed, 21 Oct 2015 21:21:21 GMT
  Vary: *
  X-Frame-Options: SAMEORIGIN
  X-Request-Guid: 5ac03697-68fa-4be5-9f32-2905ec3eff38
  Set-Cookie: prov=5d9866f4-9d98-4587-a7cc-f6ea5cd76075; domain=.stackexchange.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
  Date: Wed, 21 Oct 2015 21:21:32 GMT
  Content-Length: 76585
$ 

1

Curl ist eine prägnante Möglichkeit, HTTP-Header auch anzuzeigen:

curl -v http://unix.stackexchange.com/questions/237635/using-telnet-to-get-website-header

3
Willkommen (?) Bei Unix & Linux! Sie haben das oben Gesagte als Antwort gepostet, aber es beantwortet die Frage nicht wirklich ("Ist es möglich, den Header einer Website mithilfe von Telnet abzurufen? "). Hilfreiche Hinweise sollten in Kommentaren enthalten sein, für die Sie etwas mehr Ansehen benötigen .
G-Man sagt "Reinstate Monica"

-1

Sie können dies auch über https tun, indem Sie openssl anstelle von Telnet verwenden. In diesem Tutorial gibt es ein Beispiel , das ich kürzlich veröffentlicht habe:

openssl s_client -connect domain.name.server.com:443
HEAD /~USER HTTP/1.0
Host: domain.name.server

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Aus der Rezension
Satō Katsura

1
@ SatōKatsura Technisch gesehen sieht "Sie können dies auch über https tun, indem Sie openssh anstelle von telnet verwenden" wie ein Versuch einer Antwort aus. Aber es ist völlig falsch: ssh hat nichts mit https zu tun, und eine http-Website würde sowieso nicht über https antworten.
Gilles 'SO - hör auf böse zu sein'

Ja, aber die Antwort wird korrekt mit opensslstatt openssh, wie im verlinkten Tutorial angegeben (vorausgesetzt, die Site unterstützt natürlich auch https). Es könnte ein ehrlicher Tippfehler sein ...
Satō Katsura

Der (aktuell neueste) Kommentar von Blacklight Shining zur Antwort unix.stackexchange.com/a/237648/100397 bietet eine Lösung mit OpenSSL.- openssl s_client -connect $host:$port. Ich habe das hier hinzugefügt, da es ziemlich genau das ist, was das YouTube-Video macht, aber mehr gezeichnet - nicht wahr?
Roaima
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.