Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
crawlergo — Ein leistungsstarker Browser-Crawler für Web-Schwachstellenscanner | Kitploit
Tools/GitHubGitHub/qianlitp/crawlergo
AufklärungSchwachstellenscannerInformationsbeschaffungWebsicherheitCrawler
GitHubqianlitp/crawlergo

crawlergo

Ein leistungsstarker Browser-Crawler für Web-Schwachstellenscanner

Repository anzeigen
3.0k493vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

crawlergo

chromedp BlackHat EU Arsenal

Ein leistungsstarker Browser-Crawler für Web-Schwachstellenscanner

Englisches Dokument | 中文文档

crawlergo ist ein Browser-Crawler, der den chrome headless-Modus zur URL-Sammlung nutzt. Er hakt an wichtigen Positionen der gesamten Webseite während der DOM-Rendering-Phase ein, füllt und sendet automatisch Formulare, löst intelligent JS-Ereignisse aus und sammelt so viele Einstiegspunkte wie möglich, die die Website preisgibt. Das integrierte URL-Deduplizierungsmodul filtert eine große Anzahl von Pseudo-Statik-URLs heraus, behält dennoch eine hohe Verarbeitungsgeschwindigkeit für große Websites und liefert schließlich eine hochwertige Sammlung von Anforderungsergebnissen.

crawlergo unterstützt derzeit die folgenden Funktionen:

  • Rendern in der Chrome-Browser-Umgebung
  • Intelligentes Ausfüllen von Formularen, automatische Übermittlung
  • Vollständige DOM-Ereignissammlung mit automatischer Auslösung
  • Intelligente URL-Deduplizierung zur Entfernung der meisten doppelten Anfragen
  • Intelligente Analyse von Webseiten und Sammlung von URLs, einschließlich JavaScript-Dateiinhalten, Seitenkommentaren, robots.txt-Dateien und automatischem Fuzz gängiger Pfade
  • Unterstützt Host-Binding, automatische Korrektur und Hinzufügen von Referer
  • Unterstützt Browser-Anforderungsproxy
  • Unterstützt das Pushen der Ergebnisse an passive Web-Schwachstellenscanner

Screenshot

Installation

Bitte lesen und bestätigen Sie vor der Installation und Nutzung sorgfältig den Haftungsausschluss.

Build

  • Kompilierung für die aktuelle Plattform
root@kitploit:~
make build
  • Kompilierung für alle Plattformen
root@kitploit:~
make build_all
  1. crawlergo benötigt nur die Chrome-Umgebung zum Ausführen. Laden Sie eine neue Version von Chromium herunter.
  2. Gehen Sie zur Download-Seite für die neueste Version von crawlergo und entpacken Sie es in ein beliebiges Verzeichnis. Wenn Sie Linux oder macOS verwenden, geben Sie crawlergo bitte Ausführungsberechtigungen (+x).
  3. Oder Sie können den Code ändern und selbst erstellen.

Wenn Sie ein Linux-System verwenden und Chrome fehlende Abhängigkeiten meldet, lesen Sie bitte den Abschnitt zur Fehlerbehebung unten.

Schnellstart

Los geht's!

Angenommen, Ihr Chromium-Installationsverzeichnis ist /tmp/chromium/, stellen Sie 10 gleichzeitig geöffnete Tabs ein und crawlen Sie testphp.vulnweb.com:

root@kitploit:~
bin/crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/

Docker-Nutzung

Sie können dies auch problemlos mit Docker nutzen:

root@kitploit:~
git clone https://github.com/Qianlitp/crawlergo
docker build . -t crawlergo
docker run crawlergo http://testphp.vulnweb.com/

Verwendung eines Proxys

root@kitploit:~
bin/crawlergo -c /tmp/chromium/chrome -t 10 --request-proxy socks5://127.0.0.1:7891 http://testphp.vulnweb.com/

Aufruf von crawlergo mit Python

Standardmäßig gibt crawlergo die Ergebnisse direkt auf dem Bildschirm aus. Als nächstes setzen wir den Ausgabemodus auf json, und der Beispielcode zum Aufruf mit Python sieht wie folgt aus:

root@kitploit:~
#!/usr/bin/python3
# coding: utf-8

import simplejson
import subprocess


def main():
    target = "http://testphp.vulnweb.com/"
    cmd = ["bin/crawlergo", "-c", "/tmp/chromium/chrome", "-o", "json", target]
    rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = rsp.communicate()
	#  "--[Mission Complete]--"  is the end-of-task separator string
    result = simplejson.loads(output.decode().split("--[Mission Complete]--")[1])
    req_list = result["req_list"]
    print(req_list[0])


if __name__ == '__main__':
    main()

Crawl-Ergebnisse

Wenn der Ausgabemodus auf json gesetzt ist, enthält das zurückgegebene Ergebnis nach der JSON-Deserialisierung vier Teile:

  • all_req_list : Alle während dieser Crawl-Aufgabe gefundenen Anfragen, einschließlich aller Ressourcentypen von anderen Domains.
  • req_list : Gibt die aktuellen Domain-Ergebnisse dieser Crawl-Aufgabe zurück, pseudo-statisch dedupliziert, ohne statische Ressourcen-Links. Es ist eine Teilmenge von all_req_list.
  • all_domain_list : Liste aller gefundenen Domains.
  • sub_domain_list : Liste der gefundenen Subdomains.

Beispiele

crawlergo gibt die vollständigen Anfragen und URLs zurück, die auf verschiedene Weise genutzt werden können:

  • In Verbindung mit anderen passiven Web-Schwachstellenscannern

    Starten Sie zuerst einen passiven Scanner und setzen Sie die Abhöradresse auf: http://127.0.0.1:1234/

    Gehen Sie als nächstes davon aus, dass crawlergo sich auf demselben Rechner wie der Scanner befindet, starten Sie crawlergo und setzen Sie den Parameter:

    --push-to-proxy http://127.0.0.1:1234/

  • Host-Binding (nicht verfügbar für höhere Chrome-Versionen) (Beispiel)

  • Benutzerdefinierte Cookies (Beispiel)

  • Regelmäßige Bereinigung der von crawlergo erzeugten Zombie-Prozesse (Beispiel), beigetragen von @ring04h

Umgehung der Headless-Erkennung

crawlergo kann standardmäßig die Headless-Modus-Erkennung umgehen.

https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

Fehlerbehebung

  • 'Fetch.enable' wurde nicht gefunden

    Fetch ist eine Funktion, die von neueren Chrome-Versionen unterstützt wird. Wenn dieser Fehler auftritt, ist Ihre Version zu niedrig. Bitte aktualisieren Sie die Chrome-Version.

  • Chrom läuft mit fehlenden Abhängigkeiten wie xxx.so

    root@kitploit:~
    // Ubuntu
    apt-get install -yq --no-install-recommends \
         libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
         libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
         libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libgbm1 \
         libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3
    
    // CentOS 7
    sudo yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 \
         libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 \
         ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y
    
    sudo yum update nss -y
    
  • Ausführung meldet Navigation timeout / Browser nicht gefunden / korrekter Browser-Ausführungspfad unbekannt

    Stellen Sie sicher, dass der Ausführungspfad des Browsers korrekt konfiguriert ist. Geben Sie in der Adressleiste chrome://version ein und finden Sie den Pfad zur ausführbaren Datei:

Parameter

Erforderliche Parameter

  • --chromium-path Path, -c Path Der Pfad zur Chrome-Ausführungsdatei. (Erforderlich)

Basisparameter

  • --custom-headers Headers Benutzerdefinierte HTTP-Header. Übergeben Sie die Daten nach der JSON-Serialisierung. Dies ist global definiert und wird für alle Anfragen verwendet. (Standard: null)
  • --post-data PostData, -d PostData POST-Daten. (Standard: null)
  • --max-crawled-count Number, -m Number Die maximale Anzahl von Aufgaben für Crawler, um lange Crawl-Zeiten aufgrund von Pseudo-Statik zu vermeiden. (Standard: 200)
  • --filter-mode Mode, -f Mode Filtermodus, simple: nur statische Ressourcen und doppelte Anfragen werden herausgefiltert. smart: mit der Fähigkeit, Pseudo-Statik zu filtern. strict: strengere Pseudo-Statik-Filterregeln. (Standard: smart)
  • --output-mode value, -o value Ergebnisausgabemodus, console: druckt die formatierten Ergebnisse direkt auf den Bildschirm. json: druckt den JSON-serialisierten String aller Ergebnisse. none: keine Ausgabe drucken. (Standard: console)

Erweiterung der Eingabe-URL

  • --fuzz-path Verwendet das eingebaute Wörterbuch für Pfad-Fuzzing. (Standard: false)
  • --fuzz-path-dict Benutzerdefiniertes Fuzz-Pfad-Wörterbuch durch Angabe eines Dateipfads, z.B. /home/user/fuzz_dir.txt, jede Zeile der Datei repräsentiert einen zu fuzzenden Pfad. (Standard: null)
  • --robots-path Löst Pfade aus der /robots.txt-Datei auf. (Standard: false)

Automatisches Ausfüllen von Formularen

  • --ignore-url-keywords, -iuk URL-Keyword, das nicht besucht werden soll, normalerweise zum Ausschließen von Logout-Links bei der Verwendung benutzerdefinierter Cookies. Verwendung: -iuk logout -iuk exit. (Standard: "logout", "quit", "exit")
  • --form-values, -fv Benutzerdefinierte Werte für das Ausfüllen von Formularen, eingestellt nach Texttyp. Unterstützte Definitionstypen: default, mail, code, phone, username, password, qq, id_card, url, date und number. Texttypen werden durch die vier Attributwert-Keywords id, name, class, type des Eingabefeld-Labels identifiziert. Zum Beispiel definieren Sie, dass das Mail-Eingabefeld automatisch mit A und das Passwort-Eingabefeld automatisch mit B gefüllt wird: -fv mail=A -fv password=B. Wobei default den Füllwert darstellt, wenn der Texttyp nicht erkannt wird, als "Cralwergo". (Standard: Cralwergo)
  • --form-keyword-values, -fkv Benutzerdefinierte Werte für das Ausfüllen von Formularen, eingestellt durch Keyword-Fuzzy-Matching. Das Keyword matcht die vier Attributwerte id, name, , des Eingabefeld-Labels. Zum Beispiel Fuzzy-Match des pass-Keywords, um 123456 zu füllen, und des user-Keywords, um admin zu füllen: . (Standard: Cralwergo)

Erweiterte Einstellungen für den Crawl-Vorgang

  • --max-tab-count Number, -t Number Die maximale Anzahl von Tabs, die der Crawler gleichzeitig öffnen kann. (Standard: 8)
  • --tab-run-timeout Timeout Maximale Laufzeit für einen einzelnen Tab. (Standard: 20s)
  • --wait-dom-content-loaded-timeout Timeout Die maximale Wartezeit auf das vollständige Laden der Seite. (Standard: 5s)
  • --event-trigger-interval Interval Das Intervall bei automatischer Ereignisauslösung, wird im Allgemeinen bei langsamen Zielnetzwerken und DOM-Updates-Konflikten verwendet, die zu verpassten URL-Erfassungen führen. (Standard: 100ms)
  • --event-trigger-mode Value DOM-Ereignis-Auto-Trigger-Modus, mit async und sync, für verpasste URL-Erfassungen durch DOM-Update-Konflikte. (Standard: async)
  • --before-exit-delay Verzögerung zum Schließen von Chrome am Ende einer einzelnen Tab-Aufgabe. Wird verwendet, um auf teilweise DOM-Updates und XHR-Anfragen zu warten, die erfasst werden sollen. (Standard: 1s)

Sonstiges

  • --push-to-proxy Die Abhöradresse des Crawler-Ergebnisses, das empfangen werden soll, normalerweise die Abhöradresse des passiven Scanners. (Standard: null)
  • --push-pool-max Die maximale Anzahl gleichzeitiger Verbindungen beim Senden von Crawler-Ergebnissen an die Abhöradresse. (Standard: 10)
  • --log-level Logging-Stufen, debug, info, warn, error und fatal. (Standard: info)
  • --no-headless Deaktiviert den Chrome-Headless-Modus, um den Crawl-Vorgang zu visualisieren. (Standard: false)

Folge mir

Weibo:@9ian1i Twitter: @9ian1i

Verwandte Artikel:Eine Browser-Crawler-Praxis für Web-Schwachstellenscans

Tool herunterladen
  • --output-json filepath Schreibt das Ergebnis nach der JSON-Serialisierung in die angegebene Datei. (Standard: null)
  • --request-proxy proxyAddress socks5-Proxy-Adresse, alle Netzwerkanfragen von crawlergo und dem Chrome-Browser werden über den Proxy gesendet. (Standard: null)
  • class
    type
    -fkv user=admin -fkv pass=123456