Wie kann ich die Quelle einer [Web] -Seite direkt im Terminal anzeigen?

598
user3.1415927

Ich habe von Lynx und Links und anderen textbasierten Browsern gehört, und diese sind in Ordnung, aber ich möchte die gleichen Informationen erhalten, die ich View Page Sourcebeispielsweise in Firefox ausführen würde . (IE und Chrome haben ihre eigenen ähnlichen Funktionen.)

Ist es möglich, diese Quelle über das Terminal (oder die CLI) anzuzeigen, indem Sie in einer Terminal-basierten Anwendung zur Seite navigieren oder Befehle verwenden? Dies ist nicht so einfach wie das Verwenden wgetauf einer Seite, da dies keine Skriptinformationen ausfüllt (.cgi, .php, .js usw.).

0
Ich habe Curl gesehen - wie beantwortet man die Frage? user3.1415927 vor 6 Jahren 0
Es ist kein "_answer_" per-se ... Wie gesagt, Sie erhalten _cannot_ die Originalquelle für PHP-Dateien und dergleichen von einem korrekt konfigurierten Server ... Auch das `view-source:` -Präfix tut das nicht ... Attie vor 6 Jahren 0
Verwenden Sie "wget" mit der Option "-O-". Was @Attie über den Zugriff auf serverseitige Quellen sagt, ist richtig - Sie sehen nur, was der Browser gesendet hat. Im Falle von Seiten, die mit Javascript erstellt wurden, KÖNNEN Sie möglicherweise die Js sehen, oder zumindest Verweise darauf mit den URLs, um sie erneut herunterzuladen und abzurufen. ivanivan vor 6 Jahren 0

2 Antworten auf die Frage

0
Anaksunaman

Es gibt wahrscheinlich zwei einfache Möglichkeiten, um das zu erhalten, was Sie möchten (der Text, der von zB zurückgegeben wird view-source:).

Vorausgesetzt, Python ist installiert, können Sie Requests abrufenpip (mit etwas Ähnlichem python -m pip install requests) oder Sie können die Requests PyPi-Seite besuchen .

Beachten Sie, dass Sie sich in jedem Fall einen Moment Zeit nehmen sollten, um eine geeignete User-Agent- Zeichenfolge auszuwählen . Sie können Google "Was ist meine Benutzeragentenzeichenfolge?" In jedem Browser, den Sie emulieren möchten, wird die aktuelle User-Agent-Zeichenfolge angezeigt, die Ihrem GUI-Browser zugeordnet ist.


wget

Wie von @Attie und @ivanivan vorgeschlagen, wgetkann dieselbe Quelle wie in einem GUI-Browser mit ex angezeigt werden . :

wget -O pagesource.html -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0" --no-check-certificate https://www.google.com 

Im obigen Beispiel sind -O(die Ausgabedateioption) und -U(die User-Agent-Zeichenfolgenoption) der Schlüssel zum Abrufen desselben Formats, das Sie beispielsweise in Firefox haben. Diese Methode hat den kleinen Nachteil, dass Sie ex anzeigen müssen . pagesource.html selbst in der Befehlszeile.


Python

Ihre andere Option ist, wie bereits erwähnt, Python mit Anfragen zu verwenden.

Um die tatsächliche Seitenquelle zu erhalten, wie sie zB view-source:angezeigt wird, erstellen Sie ein Skript, das dem folgenden ähnelt:

import requests  user_agent = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'} url = 'https://www.google.com'  response = requests.get(url, headers = user_agent)  print(response.text) 

Sie speichern dieses Skript wie " pagesource.py" und rufen es dann über die Befehlszeile ex auf. :

python pagesource.py | more 

moreverhindert einfach, dass die gesamte Seite auf einmal gesichert wird. Erwähnenswert ist, dass Antwortobjekte über ein contentAttribut verfügen (das textfür unsere Zwecke sehr ähnlich ist). textIn diesem Fall werden jedoch die Elemente, die von einem GUI-Browser zurückgegeben werden, genauer nachgeahmt, wenn der Quellcode einer Seite angezeigt wird.


Seiten-Rendering

Dies ist nicht so einfach wie mit wgetauf einer Seite, wie das wird nicht scripted Informationen füllen ( .cgi, .php, .js, etc.).

Seiten, die über serverseitige Skripte ( .cgi/ .phpin Ihrer Frage) gerendert wurden, haben ihren Quellcode als Text (dh .htmlund JavaScript), bevor sie an den Browser übergeben werden.

Mit JavaScript verarbeitet der Browser jedes Javascript in eine endgültig gerenderte Seite (es gibt kein "Zwischenformular"). Der Browser ändert tatsächlich den Seitencode in diesen Fällen (ändert das, was Sie sehen view-source:). In ähnlicher Weise führt der Browser zusätzliche Schritte aus, um Links zu folgen und erforderliche Ressourcen (z. B. .cssMediendateien usw.) für die endgültige Anzeige herunterzuladen .

Dies bedeutet, dass das, was Sie in der "Seitenquelle" des Browsers sehen, (im Allgemeinen) genau das ist, was der Browser verwendet, um die Seite anfangs zu rendern. Wenn ein .htmlLink zu einem Element (z. B. ein Bild oder Video) nicht vorhanden ist, existiert er nicht (obwohl dies nicht unbedingt den informativen JavaScript-Code ausschließt).

Das heißt, Sie möchten möglicherweise verschiedene User-Agent-Zeichenfolgen zur Kenntnis nehmen und mit ihnen experimentieren. Server, die dynamisch Inhalte generieren, tun dies auf der Grundlage dieser Zeichenfolgen. Daher ist es zumindest theoretisch möglich, dass eine Seite traditionellere Ressourcenlinks im Vergleich zu JavaScript-Code generiert, beispielsweise basierend auf einem mobilen Browser oder einer Desktop-Browserzeichenfolge.

0
Ignacio Vazquez-Abrams

Viele CLI / TUI-Browser verfügen über eine eingebaute Funktion zur Anzeige von Quellen. In Lynx oder Links ist dies die Schlüsselbindung für die Anzeige von Quellen \. In W3M ist es v. Für andere Browser siehe die entsprechende Dokumentation.