Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
urless — Filtra e deduplica grandi elenchi di URL rimuovendo estensioni statiche, parole chiave indesiderate, ID, varianti linguistiche e parametri, producendo set di endpoint puliti per la ricognizione web. | Kitploit
Strumenti/GitHubGitHub/xnl-h4ck3r/urless
RicognizioneRaccolta InformazioniSicurezza WebPenetration TestingUtilità e Framework
GitHubxnl-h4ck3r/urless

urless

Filtra e deduplica grandi elenchi di URL rimuovendo estensioni statiche, parole chiave indesiderate, ID, varianti linguistiche e parametri, producendo set di endpoint puliti per la ricognizione web.

Vedi Repository
391415 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Informazioni - v2.7

Questo è uno strumento usato per ripulire una lista di URL. Come punto di partenza, ho preso il fantastico strumento uro di Somdev Sangwan. Ma volevo cambiare alcune cose, fare alcuni miglioramenti (come gestire i GUID) e renderlo più personalizzabile.

Installazione

urless supporta Python 3.

Installa urless nell'ambiente python predefinito (globale).

root@kitploit:~
pip install urless

OPPURE

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

Puoi aggiornare con

root@kitploit:~
pip install --upgrade urless

pipx

Configurazione rapida in un ambiente python isolato usando pipx

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

Utilizzo

Cosa fa esattamente?

In pratica passi una lista di URL (da un file o tramite pipe da STDIN) e ottieni un file o un elenco di URL ripuliti. Ma in che modo vengono ripuliti? Lo spiego qui sotto, ma prima ecco alcuni termini che verranno usati:

  • FILTER-EXTENSIONS: si riferisce all'elenco di estensioni che possono essere passate con -fe, specificate con FILTER_EXTENSIONS nel config.yml, o, se nessuna delle due cose esiste, un elenco predefinito di .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: si riferisce all'elenco di parole chiave che possono essere passate con -fk, specificate con FILTER_KEYWORDS nel config.yml, o, se nessuna delle due cose esiste, un elenco predefinito di blog,article,news,bootstrap,jquery,captcha,node_modules
  • LANGUAGE: si riferisce all'elenco di codici lingua che possono essere specificati con LANGUAGE nel config.yml o, se non esiste, un elenco predefinito dei codici più comuni en,en-us,en-gb,fr,de,pl,nl,fi,sv,it,es,pt,ru,pt-br,es-mx,zh-tw,js.ko

Ecco cosa succede:

  • Se un URL ha la porta 80 o 443 specificata esplicitamente, viene rimossa dall'URL (es. http://example.com:80/test -> http://example.com/test)
  • Se l'URL ha una qualsiasi FILTER-EXTENSIONS, verrà rimosso dall'output.
  • Se l'URL non ha parametri OPPURE è stato passato l'argomento -dp/--disregard-params:
    • Se l'URL contiene una FILTER-KEYWORDS o UNWANTED-CONTENT, verrà rimosso.
    • Se la query string dell'URL contiene parametri indesiderati specificati nella configurazione REMOVE_PARAMS (o sovrascritti con l'argomento -rp/--remove-params), verranno rimossi da tutti gli URL prima dell'elaborazione.
    • Se viene passato -rcid/--regex-custom-id e il percorso dell'URL contiene un ID personalizzato, verrà inclusa solo una corrispondenza con la regex dell'ID personalizzato se ci sono più URL in cui questa è l'unica differenza.
    • Se il percorso dell'URL contiene un GUID, verrà incluso solo uno dei GUID se ci sono più URL in cui il GUID è l'unica differenza.
    • Se il percorso dell'URL contiene un ID intero, verrà incluso solo uno degli ID interi se ci sono più URL in cui l'ID intero è l'unica differenza.
    • Se viene passato l'argomento -lang e l'URL contiene un codice lingua (es. ), verrà incluso solo uno dei codici lingua se ci sono più URL in cui il codice lingua è diverso.

Esempi

Uso base

root@kitploit:~
cat target_urls.txt | urless

oppure

root@kitploit:~
urless -i target_urls.txt

Catturare l'output

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

oppure

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

config.yml

Il file config.yml ha le chiavi che possono essere aggiornate in base alle tue esigenze:

  • FILTER_KEYWORDS - Un elenco separato da virgole di parole chiave (es. blog,article,news ecc.) con cui gli URL vengono confrontati in determinate circostanze.
  • FILTER_EXTENSIONS - Un elenco separato da virgole di estensioni di file (es. .css,.jpg,.jpeg ecc.) con cui vengono confrontati tutti gli URL. Se un URL include una qualsiasi di queste stringhe, verrà escluso dall'output.
  • LANGUAGE - Un elenco separato da virgole di codici lingua (es. en-gb,fr,nl ecc.) con cui vengono confrontati tutti gli URL quando viene passato l'argomento -lang. Se ci sono più URL con codici lingua diversi, verrà restituita solo una versione dell'URL.
  • REMOVE_PARAMS - Un elenco separato da virgole di nomi di parametri case sensitive (es. cachebuster,cacheBuster) che verranno rimossi da tutti gli URL prima dell'elaborazione.

Regex personalizzata

Attualmente ci sono controlli automatici tramite regex per identificare una parte del percorso come Globally Unique ID (GUID) o ID intero, ma l'argomento -rcid / --regex-custom-id ti permette di fornire un'espressione regolare per identificare un ID personalizzato. Ad esempio, se un target ha un formato di ID specifico (che non è un GUID o un intero), puoi specificare un'espressione regex per esso, e quindi verrà restituito solo uno di questi nell'output se il resto dell'URL è lo stesso. Per esempio:

  • Supponiamo che il target abbia un ID utente in un formato come U-65241X
  • E ci siano più URL come i seguenti:
    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
    
  • Puoi chiamare urless e passare -rcid 'U-[0-9]{5}[A-Z]', quindi l'output sarà:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    

NOTE IMPORTANTI SULLA REGEX:

  • Scrivere espressioni regex corrette può essere difficile e, se non è corretta, potresti ottenere un output imprevedibile e errato.
  • Racchiudi sempre la tua espressione regex tra virgolette singole quando la passi all'argomento -rcid.
  • Non è necessario aggiungere una regex personalizzata per un GUID o un ID intero: questi sono già gestiti.
  • L'espressione regex dovrebbe evidenziare l'intera parte del percorso. Quindi, se la tua regex identifica solo l'inizio del percorso, aggiungi [^(\?|\/|#|$)]* alla fine della regex, il che significherà TUTTI gli altri caratteri fino alla fine della parte del percorso.
  • Puoi aggiungere ^ all'inizio e $ alla fine della tua regex per assicurarti che rappresenti l'intera parte di un percorso tra gli slash. Tuttavia, verranno aggiunti automaticamente se li ometti.
  • Assicurati che la regex identifichi solo le sezioni che ti interessano, altrimenti potresti avere risultati imprevisti. Per testare la tua regex, puoi prendere il tuo file di input ed eseguire, ad esempio, cat input.txt | grep -E 'U-[0-9]{5}[A-Z]' e vedere se la tua espressione sembra corretta (dovrebbe evidenziare solo ciò che ti interessa e l'intera parte del percorso che è l'ID personalizzato).
  • Puoi anche testare usando Regex101, inserendo URL di esempio nella sezione TEST STRING per verificare se è corretta. Assicurati che i REGEX FLAGS global e multiline siano selezionati.
  • Potrebbero esserci casi in cui semplicemente non puoi fornire una regex che identifichi correttamente l'ID personalizzato senza trattare altri valori come uguali. Ad esempio, se ci sono URL come https://target.com/blah/xnl/settings dove è un nome utente, non sarai in grado di creare una regex per il nome utente perché non è un formato abbastanza univoco da distinguerlo da altri possibili valori del percorso.

Problemi

Se incontri qualsiasi problema, o hai idee per miglioramenti, sentiti libero di aprire una issue su Github. Se c'è un problema, sarà utile se puoi fornire il comando esatto che hai eseguito e una descrizione dettagliata del problema. Se possibile, esegui con -v per riprodurre il problema e fammi sapere qualunque messaggio di errore venga mostrato.

TODO

Nessuno - sentiti libero di aprire una issue su Github per suggerire qualsiasi miglioramento.

E infine...

Buona fortuna e buona caccia! Se ami davvero lo strumento (o qualsiasi altro), o ti hanno aiutato a trovare una bounty fantastica, considera l'idea di OFFRIRMI UN CAFFÈ! ☕ (mi serve la caffeina!)

🤘 /XNL-h4ck3r

Buy Me a Coffee at ko-fi.com

Scarica lo strumento
ArgomentoArgomento lungoDescrizione
-i--inputUn file di URL da ripulire.
-o--outputIl file di output che conterrà l'elenco di URL ripuliti (predefinito: output.txt). Se l'output viene passato tramite pipe a un altro programma, verrà scritto su STDOUT.
-fk--filter-keywordsUn elenco separato da virgole di parole chiave per escludere i link (se non ci sono parametri). Questo sovrascriverà l'elenco FILTER_KEYWORDS specificato in config.yml
-fe--filter-extensionsUn elenco separato da virgole di estensioni di file da escludere. Questo sovrascriverà l'elenco FILTER_EXTENSIONS specificato in config.yml
-rp--remove-paramsUn elenco separato da virgole di parametri case sensitive da rimuovere da TUTTI gli URL. Questo sovrascriverà l'elenco REMOVE_PARAMS specificato in config.yml. Questo può essere utile per rimuovere, ad esempio, i parametri cache buster.**
-ks--keep-slashUno slash finale alla fine di un URL di input non verrà rimosso. Pertanto, potrebbero esserci URL identici in output, uno con e uno senza slash finale.
-khw--keep-human-writtenPer impostazione predefinita, qualsiasi URL con una parte di percorso che contiene più di 3 trattini (-) viene rimosso perché si presume sia contenuto scritto da umani (es. post di un blog) e non interessante. Passare questo argomento li manterrà nell'output.
-kym--keep-yyyymmPer impostazione predefinita, qualsiasi URL con un percorso contenente /YYYY/MM (dove YYYY è un anno e MM il mese) viene rimosso perché si presume sia contenuto di blog/notizie e non interessante. Passare questo argomento li manterrà nell'output.
-rcid--regex-custom-idUSARE CON CAUTELA! Espressione regex per un ID personalizzato utilizzato dal tuo target. Assicurati che il valore venga passato tra virgolette. Vedi la sezione seguente per maggiori dettagli.
-iq--ignore-querystringRimuovi la query string (inclusi i frammenti di URL #) così l'output contiene solo percorsi univoci.
-fnp--fragment-not-paramNon trattare i frammenti di URL # allo stesso modo dei parametri, es. se un link ha una parola chiave di filtro e un frammento (o parametro), il link viene solitamente mantenuto, ma se questo argomento viene passato e un link ha una parola di filtro e un frammento, il link verrà rimosso. Inoltre, se questo argomento viene passato e viene usato -iq / --ignore-querystring, il frammento NON verrà rimosso dai link se nel link non c'è una query string.
-lang--languageSe passato e ci sono più URL con diversi codici lingua come parte del percorso, verrà restituita solo una versione dell'URL. I codici sono specificati nella sezione LANGUAGE di config.yml.
-c--configPercorso del file di configurazione YML. Se non passato, cerca il file config.yml nella directory di configurazione predefinita, es. ~/.config/urless/.
-dp--disregard-paramsC'è un certo filtraggio che non viene eseguito se gli URL hanno parametri, perché per impostazione predefinita vogliamo vedere tutti i possibili parametri. Se questo argomento viene passato, il filtraggio verrà eseguito indipendentemente dall'esistenza di eventuali parametri.
-nb--no-bannerNasconde il banner dello strumento (è nascosto per impostazione predefinita se passi l'input a urless tramite pipe) nell'output.
--versionMostra il numero di versione corrente.
-v--verboseOutput dettagliato
  • UNWANTED-CONTENT:
    • Una sezione del percorso dell'URL contiene più di 3 trattini (-), MA non è un GUID. Questo implica contenuto scritto da umani, es. how-to-hack-the-planet. Se viene passato l'argomento -khw, non verrà rimosso.
    • L'URL contiene /YYYY/MM/, es. un anno, un mese. Questo è solitamente contenuto statico come un blog. Se viene passato l'argomento -kym, non verrà rimosso.
  • en-gb
  • Altrimenti l'URL ha parametri (o un frammento #) E l'argomento -dp/--disregard-params NON è stato passato:
    • Se ci sono più URL con gli stessi parametri, verranno inclusi solo gli URL con valori di parametro univoci.
    • Se ci sono URL con un parametro, ma senza valore (o un frammento), verrà incluso.
  • xnl