要更好地了解全球各地的互联网使用情况,请使用 Cloudflare 的 URL 扫描器。利用 Cloudflare 的 URL 扫描器,您能够调查域名、IP、URL 或 ASN 的详细信息。Cloudflare 的 URL 扫描器可在 Cloudflare 仪表板的安全中心、Cloudflare Radar ↗ 和 Cloudflare API 中使用。
要使用 API 进行首次 URL 扫描,您必须获取一个特定于 URL 扫描器的 API 令牌。在 **Permissions(权限)**组中使用 Account(账户)> URL Scanner(URL 扫描器)创建自定义令牌,并选择 Edit(编辑)作为访问级别。
拥有令牌并知道 account_id 后,您即可准备向位于 https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/ 的 API 发出首次请求。
要提交要扫描的 URL,POST 请求正文中唯一必需的信息是要扫描的 URL:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/v2/scan" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"url": "https://www.example.com"
}'默认情况下,报告的可见性级别为 Public,这意味着它将出现在最近扫描 ↗列表和搜索结果中。它还将包括一张桌面分辨率的单个屏幕截图。
成功的响应其状态代码将为 200,并且类似于以下内容:
{
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"api": "https://api.cloudflare.com/client/v4/accounts/<accountId>/urlscanner/v2/result/095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"visibility": "public",
"url": "https://www.example.com",
"message": "Submission successful"
}您可以通过 API 同时提交多达 100 个 URL。
上述响应中的 uuid 属性用于标识扫描,在获取扫描报告时是必需的。
以下是包含某些自定义配置选项的示例请求正文:
{
"url": "https://example.com",
"screenshotsResolutions": [
"desktop", "mobile", "tablet"
],
"customagent": "XXX-my-user-agent",
"referer": "example",
"customHeaders": {
"Authorization": "xxx-token"
},
"visibility": "Unlisted"
}在上面,可见性级别被设置为 Unlisted,这意味着扫描报告不会被包含在最近扫描 ↗列表或搜索结果中。实际上,只有知道扫描 ID 的用户才能访问它。
系统还会抓取该网页的三张屏幕截图,每种目标设备类型一张。User-Agent ↗ 将设置为“XXX-my-user-agent”。请注意,您可以设置任何自定义 HTTP 标头,包括 Authorization ↗。
完成 URL 扫描提交后,您可以通过调用 https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/v2/result/{scan_id} 来检查当前进度。scan_id 将是前一个响应中返回的 uuid 值。
在扫描进行中时,HTTP 状态代码将是 404;一旦完成,它将是 200。Cloudflare 建议您每 10-30 秒轮询一次。
响应中除了包含其他属性外,还将包含以下主要属性:
task- 关于扫描提交的信息。page- 有关主响应的信息,例如 IP 地址、ASN、服务器和页面重定向历史记录。data.requests- 页面加载中涉及的请求链。data.cookies- 页面设置的 Cookie。data.globals- 非标准 JavaScript 全局变量。data.console- 控制台日志。data.performance- 由PerformanceNavigationTiming↗ 接口给出的时间。meta- 元处理器的输出,包括检测到的技术、域名和 URL 类别、排名、地理位置信息等。lists.ips- 联系的 IP。lists.asns- 联系的 AS 编号。lists.domains- 联系的主机名,包括dns记录信息。lists.hashes- 响应主体、主页 HTML 结构、屏幕截图和网站图标的哈希值。lists.certificates- HTTP 响应的 TLS 证书。verdicts- 有关恶意内容的裁决。
一些更具体的属性的示例如下:
task.uuid- 扫描的 ID。task.url- 扫描中提交的 URL。如果有 HTTP 重定向,这可能与最终 URL (page.url) 不同。task.success- 扫描是否成功。扫描失败的原因可能有多种,包括 DNS 错误。task.status- 当前扫描状态,例如Queued、InProgress或Finished。meta.processors.domainCategories- 联系的主机名的 Cloudflare 类别。meta.processors.phishing- 侦测到的哪种网络钓鱼(如果有)。meta.processors.radarRank- 联系的主机名的 Cloudflare Radar 排名 ↗。meta.processors.wappa- 在 Wappalyzer ↗ 的帮助下,检测到的网站正在使用的技术类型。page.url- 在所有 HTTP 重定向后,主请求的 URL。page.country- 与所联系主 IP 地址关联的地理位置数据中的国家/地区名称。page.history- 主页历史,包括任何 HTTP 重定向。page.screenshot- 主屏幕截图的各种哈希值。可用于搜索具有类似屏幕截图的网站。page.domStructHash- HTML 结构哈希。使用它来搜索具有类似结构的网站。page.favicon.hash- 网站图标的 MD5 哈希。verdicts.overall.malicious- 网站在_扫描时_是否被认为是恶意的。请检查针对侦测到的特定威胁的每个子系统的其余属性。
获取 URL 扫描 API 端点文档包含了完整的响应架构。
要获取扫描的屏幕截图或完整的网络日志,请参阅相应的端点文档。
使用 ElasticSearch Query 语法的一个子集来过滤扫描。搜索结果将包含 Public 扫描和您自己的 Unlisted 扫描。
要搜索对主机名 google.com 的扫描,请使用查询参数 q=page.domain:"google.com":
curl 'https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/v2/search?q=page.domain:google.com' \
--header "Authorization: Bearer <API_TOKEN>"相反,如果您想要搜索向主机名 cdnjs.cloudflare.com 至少发起一次请求的扫描,例如使用托管在 cdnjs.cloudflare.com 上的 JavaScript 库的网站,请使用查询参数 hostname=cdnjs.cloudflare.com:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/urlscanner/v2/search?q=domain:cdnjs.cloudflare.com" \
--header "Authorization: Bearer <API_TOKEN>"其他查询示例:
task.url:"https://google.com" OR task.url:"https://www.google.com":搜索提交的 URL 是google.com或是www.google.com的扫描。URL 必须用双引号引起来。page.url:"https://google.com" AND NOT task.url:"https://google.com":搜索主请求 URL 是google.com且其提交的 URL 不是google.com的扫描(即重定向到 google.com 的站点)。page.domain:microsoft AND verdicts.malicious:true AND NOT page.domain:microsoft.com:主机名以microsoft开头的恶意扫描。将匹配像microsoft.phish.com这样的域名。apikey:me AND date:[2024-01 TO 2024-10]:您从 2024 年 1 月到 2024 年 10 月的扫描。page.domain:(blogspot OR www.blogspot):搜索其主域名以blogspot或www.blogspot开头的扫描。date:>now-7d AND path:okta-sign-in.min.js:过去七天中任何请求路径以okta-sign-in.min.js结尾的扫描。page.asn:AS24940 AND hash:-557369673:检索具有给定哈希的资源并且托管在 AS24940 中的网站。hash:8f662c2ce9472ba8d03bfeb8cdae112dbc0426f99da01c5d70c7eb4afd5893ca:使用page.domStructHash处的哈希值,搜索具有相同 HTML 结构哈希的其他扫描。
请转到 API 文档中的搜索 URL 扫描,获取可用选项的完整列表。
此外,您还可以在安全中心进行搜索:
-
在 Cloudflare 仪表板中,转到 **Investigate(调查)**页面。
Go to Investigate ↗ -
输入您的查询,然后选择 Search(搜索)。
您可以按位置扫描 URL。通过位置扫描 URL 允许您分析网站在不同位置可能呈现出哪些不同的内容。这有助于揭露并检查特定于区域的恶意活动。
要根据您的地理位置扫描 URL:
- 输入您的 URL。
- 转到 Location(位置)> 选择从哪个国家/地区扫描 URL。
- 选择 Scan now(立即扫描)。
您还可以使用 API 从特定位置扫描 URL。
在安全中心,您可以通过以下方式检索预过滤信息:
- Similar screenshot(类似的屏幕截图)
- Identical favicon(相同的网站图标)
- Similar favicon(类似的网站图标)
- Similar HTML structure(类似的 HTML 结构)
- Identical ASN(相同的 ASN)
- Identical IP(相同的 IP)
- Identical domain(相同的域名)
- Identical final URL(相同的最终 URL(所有重定向后))