Ein Bash-Skript, um eine Site zu spinnen, Links zu befolgen und URLs (mit integriertem Filtering) in eine generierte Textdatei zu holen.
Laden Sie das Skript herunter und speichern Sie den gewünschten Ort auf Ihrem Computer.
Sie benötigen wget auf Ihrem Computer.
Um zu überprüfen, ob es bereits installiert ist, leiten Sie den Befehl wget von selbst aus.
Wenn Sie sich auf einem Mac oder Linux ausführen, haben Sie wahrscheinlich bereits WGet installiert. Wenn der Befehl wget jedoch nicht funktioniert, wird es möglicherweise nicht ordnungsgemäß zu Ihrer Pfadvariablen hinzugefügt.
Wenn Sie Windows ausführen:
Laden Sie den neuesten wget -Binary für Windows von https://eternallybored.org/misc/wget/ herunter
Der Download ist als Reißverschluss mit Dokumentation oder nur als Exe erhältlich. Ich würde nur die Exe empfehlen.
Wenn Sie den Reißverschluss heruntergeladen haben, extrahieren Sie alle (wenn Windows-integrierte ZIP-Dienstprogramme einen Fehler liefern, verwenden Sie 7-ZIP). Wenn Sie die wget64.exe -Bit wget.exe Version heruntergeladen haben
Verschieben Sie wget.exe in C:WindowsSystem32
Stellen Sie sicher, dass die Version von grep auf Ihrem Computer -E, --extended-regexp unterstützt wird. Um nach Unterstützung zu suchen, führen Sie grep --help aus und suchen Sie nach der Flagge. Um die installierte Version zu überprüfen, führen Sie grep -V aus.
Öffnen Sie Git Bash, Terminal usw. und setzen Sie ausführende Berechtigungen für das Skript fetchurls.sh aus:
chmod +x /path/to/script/fetchurls.shGeben Sie Folgendes ein, um das Skript auszuführen:
./fetchurls.sh [OPTIONS]...Alternativ können Sie mit einer der folgenden Ausführungen ausführen:
sh ./fetchurls.sh [OPTIONS]...
# -- OR -- #
bash ./fetchurls.sh [OPTIONS]...Wenn Sie keine Optionen übergeben, wird das Skript im interaktiven Modus ausgeführt.
Wenn die Domänen -URL eine Authentifizierung erfordert, müssen Sie den Benutzernamen und das Passwort als Flaggen übergeben. Sie werden für diese Werte im interaktiven Modus nicht aufgefordert.
Sie können Optionen (als Flags) direkt an das Skript übergeben oder nichts übergeben, um das Skript im interaktiven Modus auszuführen.
-d , --domainhttps://example.comDie voll qualifizierte Domänen -URL (mit Protokoll) möchten Sie kriechen.
Stellen Sie sicher, dass Sie das richtige Protokoll (z. B. https ) und Subdomain für die URL eingeben, oder die generierte Datei kann leer oder unvollständig sein. Das Skript wird automatisch versucht, die erste HTTP -Umleitung zu folgen, falls gefunden. Wenn Sie beispielsweise das falsche Protokoll ( http://... ) für https://www.adamdehaven.com eingeben, folgt das Skript automatisch dem Ausweis und holt alle URLs für das richtige HTTPS -Protokoll ab.
Die URLs der Domain werden erfolgreich gespiderscht, solange die Ziel -URL (oder die erste Weiterleitung) einen Status von HTTP 200 OK zurückgibt.
-l , --location~/Desktop/c/Users/username/DesktopDer Ort (Verzeichnis), an dem Sie die generierten Ergebnisse speichern möchten.
Wenn das Verzeichnis nicht am angegebenen Ort vorhanden ist, wird das neue Verzeichnis automatisch erstellt, solange der Rest des Pfades gültig ist.
-f , --filenamedomain-topleveldomainexample-comDer gewünschte Name der generierten Datei ohne Leerzeichen oder Dateierweiterung.
-e , --exclude"css|js|map"Pipe-delimitierte Liste der Dateierweiterungen, die von den Ergebnissen ausgeschlossen werden sollen.
Um zu verhindern, dass Dateien ausgeschlossen werden, die mit der Standardliste der Dateierweiterungen übereinstimmen, übergeben Sie einfach eine leere Zeichenfolge ""
-s , --sleep02Die Anzahl der Sekunden, um zwischen Abruf zu warten.
-u , --usernamemarty_mcflyWenn die Domänen -URL eine Authentifizierung erfordert, übergeben Sie den Benutzernamen an den Befehl wGet.
Wenn der Benutzername Space -Zeichen enthält, müssen Sie in Zitaten passieren. Dieser Wert darf nur mit einer Flagge festgelegt werden. Es gibt keine Eingabeaufforderung im interaktiven Modus.
-p , --passwordthats_heavyWenn die Domänen -URL eine Authentifizierung erfordert, wird das Passwort an den Befehl wGet übergeben.
Wenn das Passwort Speicherzeichen enthält, müssen Sie in Anführungszeichen übergeben. Dieser Wert darf nur mit einer Flagge festgelegt werden. Es gibt keine Eingabeaufforderung im interaktiven Modus.
-n , --non-interactiveErmöglicht das Skript, erfolgreich in einer nicht interaktiven Shell auszuführen.
Das Skript verwendet die Standardeinstellungen für die --location und --filename , es sei denn, die jeweiligen Flags sind explizit festgelegt.
-i , --ignore-robotsIgnorieren Sie Robots.txt für die Domain.
-w , --wgetZeigen Sie die Anweisungen an. Die Installationsanweisungen können je nach Konfiguration Ihres Computers variieren.
-v , -V , --versionVersionsinformationen anzeigen.
-t , --troubleshootingAusgänge empfangene Optionsflags mit ihren zugehörigen Werten zur Laufzeit zur Fehlerbehebung.
-h , -? , --helpZeigen Sie den Hilfeinhalt.
Wenn Sie das Flag -Domain -Flag nicht übergeben, wird das Skript im interaktiven Modus ausgeführt und Sie werden für die nicht festgelegten Optionen aufgefordert.
Zunächst werden Sie aufgefordert, die vollständige URL (einschließlich HTTPS/HTTP -Protokoll) der Site einzugeben, die Sie crawlen möchten:
Fetch a list of unique URLs for a domain.
Enter the full domain URL ( http://example.com )
Domain URL:Anschließend werden Sie aufgefordert, den Speicherort (Verzeichnis) einzugeben, an dem die generierten Ergebnisse gespeichert werden sollen (Standardeinstellungen auf Desktop unter Windows):
Save file to directory
Directory: /c/Users/username/DesktopAnschließend werden Sie aufgefordert, den Namen der generierten Datei zu ändern/zu akzeptieren (einfach eingeben, um den Standard -Dateinamen zu akzeptieren):
Save file as
Filename (no file extension, and no spaces): example-comSchließlich werden Sie aufgefordert, die Standardliste der ausgeschlossenen Dateierweiterungen zu ändern/zu akzeptieren (Drücken Sie die Eingabetaste, um die Standardliste zu akzeptieren):
Exclude files with matching extensions
Excluded extensions: bmp | css | doc | docx | gif | jpeg | jpg | JPG | js | map | pdf | PDF | png | ppt | pptx | svg | ts | txt | xls | xlsx | xmlDas Skript kriecht die Website und kompiliert eine Liste gültiger URLs in eine neue Textdatei. Nach Abschluss des Skripts wird eine Nachricht und den Speicherort der generierten Datei angezeigt:
Fetching URLs for example.com
Finished with 1 result !
File Location:
/c/Users/username/Desktop/example-com.txtWenn bereits am Speicherort eine gleichnamige Datei vorliegt (z. B. wenn Sie zuvor das Skript für dieselbe URL ausgeführt haben), wird die Originaldatei überschrieben .
Das Skript filtert standardmäßig viele Dateierweiterungen heraus, die üblicherweise nicht benötigt werden.
Die Liste der Dateierweiterungen kann über das Flag --exclude über den interaktiven Modus bereitgestellt werden.
.bmp.css.doc.docx.gif.jpeg.jpg.JPG.js.map.pdf.PDF.png.ppt.pptx.svg.ts.txt.xls.xlsx.xmlDarüber hinaus werden spezifische Site (einschließlich WordPress) -Dateien und -verzeichnisse ignoriert.
/wp-content/uploads//feed//category//tag//page//widgets.php//wp-json/xmlrpc Das Skript sollte die meisten unerwünschten Dateitypen und -verzeichnisse herausfiltern. Sie können jedoch die regulären Ausdrücke bearbeiten, die bestimmte Seiten, Verzeichnisse und Dateitypen herausfiltern, indem Sie die Funktion fetchUrlsForDomain() innerhalb der fetchurls.sh -Datei bearbeiten.
Warnung : Wenn Sie mit Grep oder regulären Ausdrücken nicht vertraut sind, können Sie das Skript leicht brechen.