Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
urless — Filtra e deduplica grandes listas de URLs removendo extensões estáticas, palavras-chave indesejadas, IDs, variantes de idioma e parâmetros, produzindo conjuntos de endpoints limpos para reconhecimento web. | Kitploit
Ferramentas/GitHubGitHub/xnl-h4ck3r/urless
ReconhecimentoColeta de InformaçõesSegurança WebTestes de PenetraçãoUtilitários e Frameworks
GitHubxnl-h4ck3r/urless

urless

Filtra e deduplica grandes listas de URLs removendo extensões estáticas, palavras-chave indesejadas, IDs, variantes de idioma e parâmetros, produzindo conjuntos de endpoints limpos para reconhecimento web.

Ver Repositório
39141há 5 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Sobre - v2.7

Esta é uma ferramenta usada para limpar uma lista de URLs. Como ponto de partida, usei a incrível ferramenta uro de Somdev Sangwan. Mas queria mudar algumas coisas, fazer algumas melhorias (como lidar com GUIDs) e torná-la mais personalizável.

Instalação

urless suporta Python 3.

Instale o urless no ambiente python padrão (global).

root@kitploit:~
pip install urless

OU

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

Você pode atualizar com

root@kitploit:~
pip install --upgrade urless

pipx

Configuração rápida em ambiente python isolado usando pipx

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

Uso

O que exatamente ela faz?

Basicamente, você passa uma lista de URLs (de um arquivo ou canalizada do STDIN) e recebe um arquivo ou URLs limpas. Mas de que forma elas são limpas? Explicarei isso abaixo, mas primeiro aqui estão alguns termos que serão usados:

  • FILTER-EXTENSIONS: Refere-se à lista de extensões que podem ser passadas com -fe, especificadas com FILTER_EXTENSIONS no config.yml, ou, se nenhuma delas existir, uma lista padrão de .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: Refere-se à lista de palavras-chave que podem ser passadas com -fk, especificadas com FILTER_KEYWORDS no config.yml, ou, se nenhuma delas existir, uma lista padrão de blog,article,news,bootstrap,jquery,captcha,node_modules
  • LANGUAGE: Refere-se à lista de códigos de idioma que podem ser especificados com LANGUAGE no config.yml, ou, se não existir, uma lista padrão dos códigos mais comuns en,en-us,en-gb,fr,de,pl,nl,fi,sv,it,es,pt,ru,pt-br,es-mx,zh-tw,js.ko

Aqui está o que acontece:

  • Se uma URL tiver a porta 80 ou 443 explicitamente fornecida, remova-a da URL (ex.: http://example.com:80/test -> http://example.com/test)
  • Se a URL tiver qualquer FILTER-EXTENSIONS, ela será removida da saída.
  • Se a URL NÃO tiver parâmetros OU o argumento -dp/--disregard-params foi passado:
    • Se a URL contiver uma FILTER-KEYWORDS ou UNWANTED-CONTENT, ela será removida.
    • se a query string da URL contiver parâmetros indesejados especificados no config REMOVE_PARAMS (ou substituídos pelo argumento -rp/--remove-params), eles serão removidos de todas as URLs antes do processamento.
    • Se -rcid/--regex-custom-id for passado e o caminho da URL contiver um ID Personalizado, apenas uma correspondência com o regex do ID Personalizado será incluída se houver múltiplas URLs em que essa é a única diferença.
    • Se o caminho da URL contiver um GUID, apenas um dos GUIDs será incluído se houver múltiplas URLs em que o GUID é a única diferença.
    • Se o caminho da URL contiver um ID Inteiro, apenas um dos IDs Inteiros será incluído se houver múltiplas URLs em que o ID Inteiro é a única diferença.
    • Se o argumento -lang for passado e a URL contiver um código de idioma (ex.: ), apenas um dos códigos de idioma será incluído se houver múltiplas URLs em que o código de idioma é diferente.

Exemplos

Uso básico

root@kitploit:~
cat target_urls.txt | urless

ou

root@kitploit:~
urless -i target_urls.txt

Capturar a saída

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

ou

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

config.yml

O arquivo config.yml tem as chaves que podem ser atualizadas para atender às suas necessidades:

  • FILTER_KEYWORDS - Uma lista separada por vírgulas de palavras-chave (ex.: blog,article,news etc.) contra as quais as URLs são verificadas em certas circunstâncias.
  • FILTER_EXTENSIONS - Uma lista separada por vírgulas de extensões de arquivo (ex.: .css,.jpg,.jpeg etc.) contra as quais todas as URLs são verificadas. Se uma URL incluir qualquer uma das strings, ela será excluída da saída.
  • LANGUAGE - Uma lista separada por vírgulas de códigos de idioma (ex.: en-gb,fr,nl etc.) contra os quais todas as URLs são verificadas quando o argumento -lang é passado. Se houver múltiplas URLs com diferentes códigos de idioma, apenas uma versão da URL será emitida.
  • REMOVE_PARAMS - Uma lista separada por vírgulas de nomes de parâmetros sensíveis a maiúsculas e minúsculas (ex.: cachebuster,cacheBuster) que serão removidos de todas as URLs antes do processamento.

Regex Personalizado

Atualmente, há verificações automáticas de regex para uma parte do caminho ser um Identificador Global Único (GUID) e um ID Inteiro, mas o argumento -rcid / --regex-custom-id permite que você forneça uma expressão regular para identificar um ID personalizado. Por exemplo, se um alvo tiver um formato de ID específico (que não seja um GUID ou Inteiro), você pode especificar uma expressão regex para ele, e então apenas um deles será retornado na saída se o restante da URL for o mesmo. Por exemplo:

  • Suponha que o alvo tenha um ID de usuário em um formato como U-65241X
  • E há múltiplas URLs como as seguintes:
    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
    
  • Você pode chamar urless e passar -rcid 'U-[0-9]{5}[A-Z]', então a saída seria:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    

NOTAS IMPORTANTES SOBRE REGEX:

  • Escrever expressões regex corretas pode ser difícil, e se não estiver correta, você pode acabar com uma saída imprevisível e incorreta.
  • Sempre coloque sua expressão regex entre aspas simples ao passá-la para o argumento -rcid.
  • Você não precisa adicionar um regex personalizado para um GUID ou ID Inteiro - eles já são tratados.
  • A expressão regex deve destacar toda a parte do caminho. Então, se seu regex apenas identificar o início do caminho, adicione [^(\?|\/|#|$)]* ao final do seu regex, o que significará TODOS os outros caracteres até o final da parte do caminho.
  • Você pode adicionar ^ no início e $ no final do seu regex para garantir que ele represente toda a parte de um caminho entre barras. No entanto, eles serão adicionados para você se forem omitidos.
  • Certifique-se de que o regex identifique apenas as seções nas quais você está interessado, caso contrário, você pode ter resultados inesperados. Para testar seu regex, você pode pegar seu arquivo de entrada e executar cat input.txt | grep -E 'U-[0-9]{5}[A-Z]', por exemplo, e ver se sua expressão parece correta (ela deve destacar apenas o que lhe interessa e destacar toda a parte do caminho que é o ID personalizado).
  • Você também pode testar usando Regex101, inserindo URLs de exemplo na seção TEST STRING para verificar se está correto. Certifique-se de que as REGEX FLAGS global e multiline estejam selecionadas.
  • Pode haver casos em que você simplesmente não consegue fornecer um regex que identifique corretamente o ID Personalizado sem tratar outros valores como os mesmos. Por exemplo, se houver URLs como https://target.com/blah/xnl/settings onde é um Nome de Usuário, você não conseguirá criar um regex para nome de usuário porque não é um formato único o suficiente para distingui-lo de outros valores possíveis de caminho.

Problemas

Se você encontrar qualquer problema, ou tiver ideias para melhorias, sinta-se à vontade para abrir uma issue no Github. Se houver um problema, será útil se você puder fornecer o comando exato que executou e uma descrição detalhada do problema. Se possível, execute com -v para reproduzir o problema e me informe sobre quaisquer mensagens de erro que forem exibidas.

TODO

Nenhum - sinta-se à vontade para abrir uma issue no Github para sugerir quaisquer melhorias.

E finalmente...

Boa sorte e boas caçadas! Se você realmente ama a ferramenta (ou qualquer outra), ou elas ajudaram você a encontrar uma recompensa incrível, considere ME PAGAR UM CAFÉ! ☕ (Eu poderia usar a cafeína!)

🤘 /XNL-h4ck3r

Me pague um café em ko-fi.com

Baixar ferramenta
ArgumentoArgumento LongoDescrição
-i--inputUm arquivo de URLs para limpar.
-o--outputO arquivo de saída que conterá a lista de URLs limpas (padrão: output.txt). Se for canalizado para outro programa, a saída será gravada no STDOUT.
-fk--filter-keywordsUma lista separada por vírgulas de palavras-chave para excluir links (se não houver parâmetros). Isso substituirá a lista FILTER_KEYWORDS especificada no config.yml
-fe--filter-extensionsUma lista separada por vírgulas de extensões de arquivo para excluir. Isso substituirá a lista FILTER_EXTENSIONS especificada no config.yml
-rp--remove-paramsUma lista separada por vírgulas de parâmetros sensíveis a maiúsculas e minúsculas para remover de TODAS as URLs. Isso substituirá a lista REMOVE_PARAMS especificada no config.yml. Isso pode ser útil para remover parâmetros de cache buster, por exemplo.**
-ks--keep-slashUma barra final no final de uma URL na entrada não será removida. Portanto, pode haver URLs idênticas na saída, uma com e outra sem barra final.
-khw--keep-human-writtenPor padrão, qualquer URL com uma parte do caminho que contenha mais de 3 hífens (-) é removida, pois presume-se que seja conteúdo escrito por humanos (ex.: post de blog) e não interessante. Passar este argumento as manterá na saída.
-kym--keep-yyyymmPor padrão, qualquer URL com um caminho contendo /YYYY/MM (onde YYYY é um ano e MM um mês) é removida, pois presume-se que seja conteúdo de blog/notícias e não interessante. Passar este argumento as manterá na saída.
-rcid--regex-custom-idUSE COM CUIDADO! Regex para um ID Personalizado que seu alvo usa. Certifique-se de que o valor seja passado entre aspas. Veja a seção abaixo para mais detalhes sobre isso.
-iq--ignore-querystringRemove a query string (incluindo fragmentos de URL #) para que a saída contenha apenas caminhos únicos.
-fnp--fragment-not-paramNão trate fragmentos de URL # da mesma forma que parâmetros, ex.: se um link tiver uma palavra-chave de filtro e um fragmento (ou parâmetro), o link geralmente é mantido, mas se este argumento for passado e um link tiver uma palavra de filtro e um fragmento, o link será removido. Além disso, se este argumento for passado e -iq / --ignore-querystring for usado, o fragmento NÃO será removido dos links se não houver query string no link.
-lang--languageSe passado e houver múltiplas URLs com diferentes códigos de idioma como parte do caminho, apenas uma versão da URL será emitida. Os códigos são especificados na seção LANGUAGE do config.yml.
-c--configCaminho para o arquivo de configuração YML. Se não for passado, ele procura o arquivo config.yml no diretório de configuração padrão, ex.: ~/.config/urless/.
-dp--disregard-paramsHá certa filtragem que não é feita se as URLs tiverem parâmetros, porque por padrão queremos ver todos os parâmetros possíveis. Se este argumento for passado, a filtragem será feita, independentemente da existência de quaisquer parâmetros.
-nb--no-bannerOculta a saída do banner da ferramenta (ele é ocultado por padrão se você canalizar a entrada para o urless).
--versionMostra o número da versão atual.
-v--verboseSaída detalhada (verbose)
  • UNWANTED-CONTENT:
    • Uma seção do caminho da URL contém mais de 3 hífens (-), MAS não é um GUID. Isso implica conteúdo escrito por humanos, ex.: how-to-hack-the-planet. Se o argumento -khw for passado, isso não será removido.
    • A URL contém /YYYY/MM/, ex.: um ano, mês. Isso geralmente é conteúdo estático, como um blog. Se o argumento -kym for passado, isso não será removido.
  • en-gb
  • Caso contrário, a URL tem Parâmetros (ou um fragmento #) E o argumento -dp/--disregard-params NÃO foi passado:
    • Se houver múltiplas URLs com os mesmos parâmetros, apenas URLs com valores de parâmetros únicos serão incluídas.
    • Se houver URLs com um Parâmetro, mas sem valor (ou um fragmento), isso será incluído.
  • xnl