用于查找 URL 并检查其有效性的库。
项目描述
urlfinderlib
这是一个 Python (3.6+) 库,用于在文档中查找 URL 并检查其有效性。
支持的文件
从以下类型的文档中提取 URL:
- 二进制文件(在字符串中查找 URL)
- CSV 文件
- HTML 文件
- iCalendar/vCalendar 文件
- PDF 文件
- 文本文件(ASCII 或 UTF-8)
- XML 文件
每个提取的 URL 都经过验证,以使其包含具有有效 TLD(或有效 IP 地址)的域并且不包含任何无效字符。
网址排列
这最初是为了找到恶意行为者使用的有效和混淆或轻微格式错误的 URL,并将它们用作危害指标 (IOC)。因此,提取的 URL 还将包括以下排列:
- 其域中包含任何 Unicode 字符的 URL
- 带有任何 Unicode 字符的 URL 转换为其 IDNA 等效项
对于这两种域变体,还返回以下排列:
- 带有路径 % 编码的 URL
- URL 及其路径 %-decoded
- 路径中包含编码 HTML 实体的 URL
- 路径中包含解码的 HTML 实体的 URL
- 具有路径 %-decoded 和 HTML 实体已解码的 URL
子 URL
该库还尝试提取或解码在 URL 路径中找到的子 URL。支持以下格式:
- 梭子鱼保护的 URL
- 在 URL 的路径中找到 Base64 编码的 URL
- 谷歌重定向网址
- Mandrill/Mailchimp 重定向 URL
- Outlook 安全链接 URL
- Proofpoint 受保护的 URL
- 在 URL 的路径查询参数中找到的 URL
基本用法
from urlfinderlib import find_urls
with open('/path/to/file', 'rb') as f:
print(find_urls(f.read())
base_url 参数
如果您尝试在 HTML 文件中查找 URL,则 URL 中的路径通常与其在托管 HTML 的服务器上的位置相关。在这种情况下,您可以使用base_url参数来提取这些“相对”URL。
from urlfinderlib import find_urls
with open('/path/to/file', 'rb') as f:
print(find_urls(f.read(), base_url='http://example.com')