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
Tools/GitHubGitHub/xnl-h4ck3r/urless
AufklärungInformationsbeschaffungWebsicherheitPenetrationstestsDienstprogramme & Frameworks
GitHubxnl-h4ck3r/urless

urless

Filtert und dedupliziert große URL-Listen, indem statische Erweiterungen, unerwünschte Schlüsselwörter, IDs, Sprachvarianten und Parameter entfernt werden, und erzeugt so saubere Endpunkt-Sets für die Web-Reconnaissance.

Repository anzeigen
39141vor 5 MonatenVon 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

Über - v2.7

Dies ist ein Tool zum Bereinigen einer Liste von URLs. Als Ausgangspunkt habe ich das erstaunliche Tool uro von Somdev Sangwan genommen. Aber ich wollte ein paar Dinge ändern, einige Verbesserungen vornehmen (wie den Umgang mit GUIDs) und es anpassbarer machen.

Installation

urless unterstützt Python 3.

Installiere urless in der Standard-Python-Umgebung (global).

root@kitploit:~
pip install urless

ODER

root@kitploit:~
pip install git+https://github.com/xnl-h4ck3r/urless.git -v

Du kannst mit folgendem Befehl aktualisieren:

root@kitploit:~
pip install --upgrade urless

pipx

Schnelle Einrichtung in einer isolierten Python-Umgebung mit pipx

root@kitploit:~
pipx install git+https://github.com/xnl-h4ck3r/urless.git

Verwendung

Was macht es genau?

Du übergibst im Grunde eine Liste von URLs (aus einer Datei oder per Pipe von STDIN) und erhältst eine bereinigte Datei oder URLs als Ausgabe. Aber auf welche Weise werden sie bereinigt? Ich erkläre das weiter unten, aber zuerst einige Begriffe, die verwendet werden:

  • FILTER-EXTENSIONS: Dies bezieht sich auf die Liste der Erweiterungen, die entweder mit -fe übergeben, mit FILTER_EXTENSIONS in der config.yml angegeben werden kann, oder, wenn keines von beiden existiert, eine Standardliste von .css,.ico,.jpg,.jpeg,.png,.bmp,.svg,.img,.gif,.mp4,.flv,.ogv,.webm,.webp,.mov,.mp3,.m4a,.m4p,.scss,.tif,.tiff,.ttf,.otf,.woff,.woff2,.bmp,.ico,.eot,.htc,.rtf,.swf,.image.
  • FILTER-KEYWORDS: Dies bezieht sich auf die Liste der Schlüsselwörter, die entweder mit -fk übergeben, mit FILTER_KEYWORDS in der config.yml angegeben werden kann, oder, wenn keines von beiden existiert, eine Standardliste von blog,article,news,bootstrap,jquery,captcha,node_modules
  • LANGUAGE: Dies bezieht sich auf die Liste der Sprachcodes, die mit LANGUAGE in der config.yml angegeben werden kann, oder, wenn sie nicht existiert, eine Standardliste der häufigsten Codes

So funktioniert es:

  • Wenn eine URL explizit Port 80 oder 443 angibt, wird er aus der URL entfernt (z. B. http://example.com:80/test -> http://example.com/test)
  • Wenn die URL eine der FILTER-EXTENSIONS enthält, wird sie aus der Ausgabe entfernt.
  • Wenn die URL KEINE Parameter hat ODER das Argument -dp/--disregard-params übergeben wurde:
    • Wenn die URL ein FILTER-KEYWORDS-Schlüsselwort oder UNWANTED-CONTENT enthält, wird sie entfernt.
    • Wenn der Query-String der URL unerwünschte Parameter enthält, die in der Konfiguration REMOVE_PARAMS angegeben sind (oder mit dem Argument -rp/--remove-params überschrieben wurden), werden sie vor der Verarbeitung aus allen URLs entfernt.
    • Wenn -rcid/--regex-custom-id übergeben wird und der URL-Pfad eine Custom ID enthält, wird nur eine Übereinstimmung mit der Custom-ID-Regex aufgenommen, wenn es mehrere URLs gibt, bei denen dies der einzige Unterschied ist.
    • Wenn der URL-Pfad eine GUID enthält, wird nur eine der GUIDs aufgenommen, wenn es mehrere URLs gibt, bei denen die GUID der einzige Unterschied ist.
    • Wenn der URL-Pfad eine Integer-ID enthält, wird nur eine der Integer-IDs aufgenommen, wenn es mehrere URLs gibt, bei denen die Integer-ID der einzige Unterschied ist.
    • Wenn das Argument -lang übergeben wird und die URL einen Sprachcode enthält (z. B. ), wird nur einer der Sprachcodes aufgenommen, wenn es mehrere URLs gibt, bei denen sich der Sprachcode unterscheidet.

Beispiele

Grundlegende Verwendung

root@kitploit:~
cat target_urls.txt | urless

oder

root@kitploit:~
urless -i target_urls.txt

Ausgabe speichern

root@kitploit:~
cat target_urls.txt | urless > output.txt

oder

root@kitploit:~
urless -i target_urls.txt -o output.txt

config.yml

Die Datei config.yml enthält die Schlüssel, die nach deinen Bedürfnissen angepasst werden können:

  • FILTER_KEYWORDS - Eine durch Kommas getrennte Liste von Schlüsselwörtern (z. B. blog,article,news usw.), gegen die URLs unter bestimmten Umständen geprüft werden.
  • FILTER_EXTENSIONS - Eine durch Kommas getrennte Liste von Dateierweiterungen (z. B. .css,.jpg,.jpeg usw.), gegen die alle URLs geprüft werden. Wenn eine URL eine der Zeichenketten enthält, wird sie von der Ausgabe ausgeschlossen.
  • LANGUAGE - Eine durch Kommas getrennte Liste von Sprachcodes (z. B. en-gb,fr,nl usw.), gegen die alle URLs geprüft werden, wenn das Argument -lang übergeben wird. Wenn es mehrere URLs mit unterschiedlichen Sprachcodes gibt, wird nur eine Version der URL ausgegeben.
  • REMOVE_PARAMS - Eine durch Kommas getrennte Liste von groß-/kleinschreibungsempfindlichen Parameternamen (z. B. cachebuster,cacheBuster), die vor der Verarbeitung aus allen URLs entfernt werden.

Benutzerdefinierte Regex

Es gibt derzeit automatische Regex-Prüfungen für einen Pfadteil, der eine global eindeutige ID (GUID) oder eine Integer-ID ist. Das Argument -rcid / --regex-custom-id ermöglicht es dir jedoch, einen regulären Ausdruck zur Identifizierung einer benutzerdefinierten ID (Custom ID) bereitzustellen. Wenn ein Ziel beispielsweise ein bestimmtes ID-Format hat (das keine GUID oder Integer ist), kannst du einen Regex-Ausdruck dafür angeben, und es wird dann nur eine davon in der Ausgabe zurückgegeben, wenn der Rest der URL gleich ist. Zum Beispiel:

  • Nimm an, das Ziel hat eine Benutzer-ID in einem Format wie U-65241X
  • Und es gibt mehrere URLs wie die folgenden:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-63352B/settings
    https://target.com/blah/U-61351A/profile
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    
  • Du kannst urless aufrufen und -rcid 'U-[0-9]{5}[A-Z]' übergeben, dann wäre die Ausgabe:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    

WICHTIGE HINWEISE ZUR REGEX:

  • Das Schreiben korrekter Regex-Ausdrücke kann schwierig sein, und wenn diese nicht korrekt sind, könntest du unvorhersehbare und falsche Ausgaben erhalten.
  • Setze deinen Regex-Ausdruck immer in einfache Anführungszeichen, wenn du ihn an das Argument -rcid übergibst.
  • Du musst keine benutzerdefinierte Regex für eine GUID oder Integer-ID hinzufügen - diese werden bereits behandelt.
  • Der Regex-Ausdruck sollte den gesamten Teil des Pfades markieren. Wenn deine Regex also nur den Anfang des Pfades identifiziert, füge [^(\?|\/|#|$)]* an das Ende deiner Regex hinzu, was ALLE anderen Zeichen bis zum Ende des Pfadteils bedeutet.
  • Du kannst ^ am Anfang und $ am Ende deiner Regex hinzufügen, um sicherzustellen, dass sie den gesamten Teil eines Pfades zwischen Schrägstrichen darstellt. Diese werden jedoch automatisch für dich hinzugefügt, wenn sie weggelassen werden.
  • Stelle sicher, dass die Regex nur die Abschnitte identifiziert, die dich interessieren, da du sonst unerwartete Ergebnisse erhalten könntest. Um deine Regex zu testen, kannst du deine Eingabedatei nehmen und zum Beispiel cat input.txt | grep -E 'U-[0-9]{5}[A-Z]' ausführen und prüfen, ob dein Ausdruck korrekt aussieht (er sollte nur das hervorheben, was dich interessiert, und den gesamten Teil des Pfades hervorheben, der die Custom ID ist).
  • Du kannst auch mit Regex101 testen, indem du Beispiel-URLs in den Abschnitt TEST STRING eingibst, um zu prüfen, ob er korrekt ist. Stelle sicher, dass die REGEX FLAGS global und multiline ausgewählt sind.
  • Es gibt möglicherweise Fälle, in denen du einfach keine Regex liefern kannst, die die Custom ID korrekt identifiziert, ohne andere Werte als gleich zu behandeln. Wenn es zum Beispiel URLs wie https://target.com/blah/xnl/settings gibt, wobei ein Benutzername ist, wirst du keine Regex für einen Benutzernamen erstellen können, da es kein ausreichend eindeutiges Format ist, um ihn von anderen möglichen Pfadwerten zu unterscheiden.

Probleme

Wenn du auf irgendwelche Probleme stößt oder Ideen für Verbesserungen hast, erstelle bitte gerne ein Issue auf Github. Wenn es ein Problem gibt, ist es hilfreich, wenn du den genauen Befehl, den du ausgeführt hast, und eine detaillierte Beschreibung des Problems bereitstellen kannst. Wenn möglich, führe den Befehl mit -v aus, um das Problem zu reproduzieren, und teile mir eventuelle Fehlermeldungen mit.

TODO

Keine - erstelle gerne ein Github-Issue, um Verbesserungen vorzuschlagen.

Und schließlich...

Viel Glück und viel Erfolg bei der Jagd! Wenn du das Tool (oder andere) wirklich liebst oder sie dir geholfen haben, ein tolles Bounty zu finden, denke über KAUF MIR EINEN KAFFEE! ☕ nach (Ich könnte das Koffein gebrauchen!)

🤘 /XNL-h4ck3r

Buy Me a Coffee at ko-fi.com

Tool herunterladen
ArgumentLanges ArgumentBeschreibung
-i--inputEine Datei mit URLs, die bereinigt werden sollen.
-o--outputDie Ausgabedatei, die die bereinigte Liste von URLs enthält (Standard: output.txt). Wenn an ein anderes Programm weitergeleitet wird, wird die Ausgabe stattdessen nach STDOUT geschrieben.
-fk--filter-keywordsEine durch Kommas getrennte Liste von Schlüsselwörtern zum Ausschließen von Links (wenn es keine Parameter gibt). Dies überschreibt die in config.yml angegebene Liste FILTER_KEYWORDS.
-fe--filter-extensionsEine durch Kommas getrennte Liste von Dateierweiterungen, die ausgeschlossen werden sollen. Dies überschreibt die in config.yml angegebene Liste FILTER_EXTENSIONS.
-rp--remove-paramsEine durch Kommas getrennte Liste von groß-/kleinschreibungsempfindlichen Parametern, die aus ALLEN URLs entfernt werden sollen. Dies überschreibt die in config.yml angegebene Liste REMOVE_PARAMS. Dies kann zum Beispiel nützlich sein, um Cache-Buster-Parameter zu entfernen.**
-ks--keep-slashEin abschließender Schrägstrich am Ende einer URL in der Eingabe wird nicht entfernt. Daher können identische URLs ausgegeben werden, eine mit und eine ohne abschließenden Schrägstrich.
-khw--keep-human-writtenStandardmäßig wird jede URL mit einem Pfadteil entfernt, der mehr als 3 Bindestriche (-) enthält, da angenommen wird, dass es sich um von Menschen geschriebenen Inhalt handelt (z. B. Blogbeitrag), der nicht interessant ist. Durch die Übergabe dieses Arguments bleiben sie in der Ausgabe erhalten.
-kym--keep-yyyymmStandardmäßig wird jede URL mit einem Pfad entfernt, der /YYYY/MM enthält (wobei YYYY ein Jahr und MM einen Monat darstellt), da angenommen wird, dass es sich um Blog-/Nachrichteninhalte handelt, die nicht interessant sind. Durch die Übergabe dieses Arguments bleiben sie in der Ausgabe erhalten.
-rcid--regex-custom-idMIT VORSICHT VERWENDEN! Regex für eine benutzerdefinierte ID (Custom ID), die dein Ziel verwendet. Stelle sicher, dass der Wert in Anführungszeichen übergeben wird. Weitere Details dazu findest du im Abschnitt unten.
-iq--ignore-querystringEntfernt den Query-String (einschließlich URL-Fragmenten #), sodass die Ausgabe nur eindeutige Pfade enthält.
-fnp--fragment-not-paramBehandelt URL-Fragmente # nicht auf die gleiche Weise wie Parameter, z. B. wird ein Link normalerweise behalten, wenn er ein Filter-Schlüsselwort und ein Fragment (oder einen Parameter) hat. Wenn dieses Argument jedoch übergeben wird und ein Link ein Filterwort und ein Fragment hat, wird der Link entfernt. Wenn dieses Argument außerdem übergeben wird und -iq / --ignore-querystring verwendet wird, wird das Fragment NICHT aus Links entfernt, wenn sich kein Query-String im Link befindet.
-lang--languageWenn übergeben und es mehrere URLs mit unterschiedlichen Sprachcodes als Teil des Pfades gibt, wird nur eine Version der URL ausgegeben. Die Codes sind im Abschnitt LANGUAGE der config.yml angegeben.
-c--configPfad zur YML-Konfigurationsdatei. Wenn nicht übergeben, sucht das Tool nach der Datei config.yml im Standard-Konfigurationsverzeichnis, z. B. ~/.config/urless/.
-dp--disregard-paramsEs gibt eine bestimmte Filterung, die nicht durchgeführt wird, wenn die URLs Parameter haben, da wir standardmäßig alle möglichen Parameter sehen wollen. Wenn dieses Argument übergeben wird, wird die Filterung unabhängig von der Existenz von Parametern durchgeführt.
-nb--no-bannerBlendet die Tool-Banner-Ausgabe aus (sie ist standardmäßig ausgeblendet, wenn du die Eingabe an urless weiterleitest).
--versionZeigt die aktuelle Versionsnummer an.
-v--verboseAusführliche Ausgabe
en,en-us,en-gb,fr,de,pl,nl,fi,sv,it,es,pt,ru,pt-br,es-mx,zh-tw,js.ko
  • UNWANTED-CONTENT:
    • Ein Abschnitt des URL-Pfads enthält mehr als 3 Bindestriche (-), ist aber KEINE GUID. Dies deutet auf von Menschen geschriebenen Inhalt hin, z. B. how-to-hack-the-planet. Wenn das Argument -khw übergeben wird, wird dies nicht entfernt.
    • Die URL enthält /YYYY/MM/, z. B. ein Jahr, einen Monat. Dies ist normalerweise statischer Inhalt wie ein Blog. Wenn das Argument -kym übergeben wird, wird dies nicht entfernt.
  • en-gb
  • Andernfalls hat die URL Parameter (oder ein Fragment #) UND das Argument -dp/--disregard-params wurde NICHT übergeben:
    • Wenn es mehrere URLs mit denselben Parametern gibt, werden nur URLs mit eindeutigen Parameterwerten aufgenommen.
    • Wenn es URLs mit einem Parameter, aber ohne Wert (oder mit einem Fragment) gibt, werden diese aufgenommen.
  • xnl