Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
urless — 通过移除静态扩展名、不需要的关键词、ID、语言变体和参数,过滤并去重大型 URL 列表,生成干净的网络侦察端点集合。 | Kitploit
工具/GitHubGitHub/xnl-h4ck3r/urless
侦察信息收集Web安全渗透测试实用工具与框架
GitHubxnl-h4ck3r/urless

urless

通过移除静态扩展名、不需要的关键词、ID、语言变体和参数,过滤并去重大型 URL 列表,生成干净的网络侦察端点集合。

查看仓库
391415个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

关于 - v2.7

这是一个用于清理(de-clutter)URL 列表的工具。 作为起点,我采用了 Somdev Sangwan 开发的出色工具 uro。但我想做一些改动、进行一些改进(比如处理 GUID),并让它更具可定制性。

安装

urless 支持 Python 3。

在默认(全局)Python 环境中安装 urless。

root@kitploit:~
pip install urless

或者

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

你可以通过以下命令升级:

root@kitploit:~
pip install --upgrade urless

pipx

使用 pipx 在隔离的 Python 环境中快速安装

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

用法

它具体做什么?

你基本上传入一个 URL 列表(来自文件,或通过 STDIN 管道输入),然后得到一个清理后的文件或 URL 列表。但它们是按什么方式被清理的呢? 下面我会解释这一点,但首先介绍一些将要使用的术语:

  • FILTER-EXTENSIONS:指可以通过 -fe 传递的扩展名列表,在 config.yml 中通过 FILTER_EXTENSIONS 指定;如果两者都不存在,则使用默认列表 .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:指可以通过 -fk 传递的关键字列表,在 config.yml 中通过 FILTER_KEYWORDS 指定;如果两者都不存在,则使用默认列表 blog,article,news,bootstrap,jquery,captcha,node_modules。
  • LANGUAGE:指可以在 config.yml 中通过 LANGUAGE 指定的语言代码列表;如果不存在,则使用最常见代码的默认列表 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:

以下是处理过程:

  • 如果 URL 明确给出了 80 或 443 端口,则将其从 URL 中移除(例如 http://example.com:80/test -> http://example.com/test)
  • 如果 URL 包含任何 FILTER-EXTENSIONS,它将从输出中移除。
  • 如果 URL 没有参数 或 传了 -dp/--disregard-params 参数:
    • 如果 URL 包含 FILTER-KEYWORDS 或 UNWANTED-CONTENT,它将从输出中移除。
    • 如果 URL 查询字符串包含配置 REMOVE_PARAMS 中指定的不需要的参数(或用 -rp/--remove-params 参数覆盖),它们将在处理前从所有 URL 中移除。
    • 如果传了 -rcid/--regex-custom-id 且 URL 路径包含自定义 ID,当存在多个仅此 ID 不同的 URL 时,将只包含一个匹配自定义 ID 正则表达式的 URL。
    • 如果 URL 路径包含 GUID,当存在多个仅 GUID 不同的 URL 时,将只包含其中一个 GUID。
    • 如果 URL 路径包含整数 ID,当存在多个仅整数 ID 不同的 URL 时,将只包含其中一个整数 ID。
    • 如果传了 -lang 参数且 URL 包含语言代码(例如 en-gb),当存在多个语言代码不同的 URL 时,将只包含其中一个语言代码。
  • 否则,URL 带有参数(或片段 #)且未传 -dp/ 参数:

示例

基本用法

root@kitploit:~
cat target_urls.txt | urless

或者

root@kitploit:~
urless -i target_urls.txt

捕获输出

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

或者

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

config.yml

config.yml 文件包含以下键,你可以根据自己的需要进行更新:

  • FILTER_KEYWORDS - 以逗号分隔的关键字列表(例如 blog,article,news 等),在某些情况下会用它们检查 URL。
  • FILTER_EXTENSIONS - 以逗号分隔的文件扩展名列表(例如 .css,.jpg,.jpeg 等),所有 URL 都会用它们进行检查。如果 URL 包含其中任何字符串,则将从输出中排除。
  • LANGUAGE - 以逗号分隔的语言代码列表(例如 en-gb,fr,nl 等),当传 -lang 参数时,所有 URL 都会用它们进行检查。如果存在多个具有不同语言代码的 URL,则只会输出一个版本的 URL。
  • REMOVE_PARAMS - 以逗号分隔的区分大小写参数名称列表(例如 cachebuster,cacheBuster),它们将在处理前从所有 URL 中移除。

自定义正则表达式

目前已有自动正则检查,用于判断路径部分是否为全局唯一 ID(GUID)或整数 ID,但 -rcid / --regex-custom-id 参数允许你提供正则表达式来识别自定义 ID。例如,如果目标有特定的 ID 格式(不是 GUID 或整数),你可以为其指定正则表达式;当 URL 的其余部分相同时,输出中将只返回其中一个。例如:

  • 假设目标的用户 ID 格式类似 U-65241X
  • 并且有多个类似如下的 URL:
    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
    
  • 你可以调用 urless 并传 -rcid 'U-[0-9]{5}[A-Z]',那么输出将是:
    root@kitploit:~
    https://target.com/blah/U-61723A/settings
    https://target.com/blah/U-64135C/profile
    

重要正则说明:

  • 编写正确的正则表达式可能很困难,如果表达式不正确,你可能会得到不可预测且错误的输出。
  • 在将正则表达式传给 -rcid 参数时,请始终用单引号将其括起来。
  • 你不需要为 GUID 或整数 ID 添加自定义正则——这些已经处理好了。
  • 正则表达式应突出路径的整个部分。因此,如果你的正则只识别路径的开头,请在正则末尾添加 [^(\?|\/|#|$)]*,这将匹配直到该路径部分末尾的所有其他字符。
  • 你可以在正则的开头添加 ^,在末尾添加 $,以确保它表示斜杠之间路径的整个部分。不过,如果省略它们,系统会自动为你添加。
  • 确保正则只识别你感兴趣的部分,否则你可能会得到意外的结果。要测试你的正则,你可以对输入文件执行 cat input.txt | grep -E 'U-[0-9]{5}[A-Z]' 之类的命令,看看你的表达式是否正确(它应该只突出你感兴趣的内容,并突出作为自定义 ID 的路径的整个部分)。
  • 你也可以使用 Regex101 进行测试,在 TEST STRING 部分输入示例 URL 以检查是否正确。确保选择了 REGEX FLAGS 中的 global(全局)和 multiline(多行)。
  • 在某些情况下,你可能就是无法提供一个既能正确识别自定义 ID、又不会把其他值也当作同一值的正则。例如,如果存在像 https://target.com/blah/xnl/settings 这样的 URL,其中 xnl 是用户名,你将无法为用户名创建正则,因为它的格式不够独特,无法与其他可能的路径值区分开来。

问题

如果你遇到任何问题,或有改进的想法,请随时在 Github 上提出 issue。如果出现问题,请提供你运行的确切命令和问题的详细描述,这将很有帮助。如果可能,请使用 -v 运行以重现问题,并告知我出现的任何错误消息。

TODO

无——欢迎在 Github 上提出 issue 以建议任何增强功能。

最后……

祝你好运,狩猎愉快! 如果你真的很喜欢这个工具(或其他任何工具),或者它们帮你找到了丰厚的赏金,不妨请我喝杯咖啡! ☕(我正需要咖啡因!)

🤘 /XNL-h4ck3r

在 ko-fi.com 请我喝杯咖啡

下载工具
参数长参数描述
-i--input要清理(de-clutter)的 URL 文件。
-o--output包含清理后 URL 列表的输出文件(默认:output.txt)。如果通过管道传给另一个程序,输出将写入 STDOUT。
-fk--filter-keywords以逗号分隔的关键字列表,用于排除链接(如果没有参数)。这将覆盖 config.yml 中指定的 FILTER_KEYWORDS 列表
-fe--filter-extensions以逗号分隔的要排除的文件扩展名列表。这将覆盖 config.yml 中指定的 FILTER_EXTENSIONS 列表
-rp--remove-params以逗号分隔的区分大小写参数列表,将从所有 URL 中移除。这将覆盖 config.yml 中指定的 REMOVE_PARAMS 列表。例如,这可用于移除缓存破坏(cache buster)参数。**
-ks--keep-slash输入中 URL 末尾的尾随斜杠不会被移除。因此输出中可能存在相同的 URL,一个有尾随斜杠,一个没有。
-khw--keep-human-written默认情况下,任何路径部分包含超过 3 个连字符 (-) 的 URL 都会被移除,因为假定这是人工编写的内容(例如博客文章),不感兴趣。传递此参数将把它们保留在输出中。
-kym--keep-yyyymm默认情况下,任何路径中包含 /YYYY/MM(其中 YYYY 是年份,MM 是月份)的 URL 都会被移除,因为假定这是博客/新闻内容,不感兴趣。传递此参数将把它们保留在输出中。
-rcid--regex-custom-id请谨慎使用! 你的目标使用的自定义 ID 的正则表达式。请确保该值用引号传入。有关更多详细信息,请参阅下面的章节。
-iq--ignore-querystring移除查询字符串(包括 URL 片段 #),因此输出只包含唯一路径。
-fnp--fragment-not-param不要以与参数相同的方式处理 URL 片段 #,例如,如果链接包含过滤关键字和片段(或参数),通常该链接会被保留;但如果传了此参数且链接包含过滤词和片段,该链接将被移除。此外,如果传了此参数并使用 -iq / --ignore-querystring,当链接中没有查询字符串时,片段将不会被移除。
-lang--language如果传此参数,且存在多个 URL 的路径中包含不同的语言代码,则只会输出一个版本的 URL。代码在 config.yml 的 LANGUAGE 部分中指定。
-c--configYML 配置文件的路径。如果未传递,它将在默认配置目录中查找 config.yml 文件,例如 ~/.config/urless/。
-dp--disregard-params如果 URL 带有参数,则不会进行某些过滤,因为默认情况下我们希望看到所有可能的参数。如果传递此参数,则无论是否存在任何参数,都会执行过滤。
-nb--no-banner隐藏工具横幅(tool banner)输出(如果你通过管道将输入传给 urless,默认情况下它是隐藏的)。
--version显示当前版本号。
-v--verbose详细输出
  • URL 路径的某个部分包含超过 3 个连字符(-),但不是 GUID。这表示人工编写的内容,例如 how-to-hack-the-planet。如果传了 -khw 参数,则不会将其移除。
  • URL 包含 /YYYY/MM/,例如年份和月份。这通常是静态内容,如博客。如果传了 -kym 参数,则不会将其移除。
--disregard-params
  • 如果存在多个具有相同参数的 URL,则只包含具有唯一参数值的 URL。
  • 如果 URL 有参数但没有值(或只有片段),则会被包含。