标题和作者
本文标题为《DNS Lookup》,作者为 Simon Willison。该文档主要介绍了作者发现 Cloudflare 的 1.1.1.1 DNS 服务及其安全变体(1.1.1.2 和 1.1.1.3)拥有一个支持跨域资源共享(CORS)的 JSON API,并利用这一特性,通过 Claude Code 构建了一个可视化的 DNS 查询工具。文档主题围绕 DNS 查询工具的开发与使用,背景涉及对 Cloudflare 公共 DNS 服务功能的探索与利用。
摘要
本文主要描述了作者发现 Cloudflare 的 1.1.1.1 DNS 服务(以及 1.1.1.2 和 1.1.1.3,分别用于阻止恶意软件和恶意软件及成人内容)具备一个启用了 CORS 的 JSON API。在此之前,虽然存在 DNS 查询功能,但针对这三个特定解析器的统一可视化查询工具并不存在。作者为了更方便地测试这些服务,利用 Claude Code 构建了一个用户界面(UI),允许用户通过该界面向这三个解析器发送 DNS 查询请求。该工具成功运行,为 DNS 查询提供了直观的操作方式。
术语解释:在此需要解释几个核心概念。DNS(Domain Name System)是域名系统,它将人类易读的域名(如 www.example.com)转换为机器可读的 IP 地址(如 192.0.2.1),是互联网通信的基础。CORS(Cross-Origin Resource Sharing,跨域资源共享)是一种浏览器安全机制,它允许服务器明确表示允许其他域名的网页访问其资源,这对于在浏览器端通过前端代码直接调用第三方 API 至关重要。JSON API 是一种使用 JSON 格式进行数据交换的接口,本文中指 Cloudflare 提供的用于接收和返回 DNS 查询结果的特定接口。
主要主题和概念
主题一:Cloudflare DNS 服务的多级防护
What:问题在于如何利用 Cloudflare 提供的不同安全级别的 DNS 解析服务进行查询。Cloudflare 提供了三个主要解析地址:1.1.1.1(基础公共 DNS)、1.1.1.2(过滤恶意软件)和 1.1.1.3(过滤恶意软件及成人内容)。
Why:不同的网络环境和用户需求可能需要不同级别的过滤服务。例如,普通用户可能只需要 1.1.1.1,而家庭用户或需要更高安全性的用户可能需要 1.1.1.2 或 1.1.1.3。因此,需要一个能够同时测试这三个解析器的工具。
How:通过调用这三个地址对应的 JSON API 接口来实现查询。作者构建的 UI 工具封装了这一过程,用户只需在界面上输入域名,系统即可向这三个地址发送请求并返回结果。
主题二:CORS 启用的 API 与工具构建
What:问题是如何在浏览器环境中直接调用 Cloudflare 的 DNS API,而不需要后端服务器作为代理。这涉及到了 CORS(跨域资源共享)技术的应用。
Why:由于浏览器的同源策略限制,前端网页通常不能直接向非同源的 API 发送请求。如果 Cloudflare 的 API 没有正确配置 CORS 头信息,前端代码将无法直接获取查询结果。作者发现该 API 支持 CORS,这意味着可以直接在浏览器端构建工具。
How:利用 JSON API 的无状态特性,配合 CORS 允许跨域访问的配置,作者使用 Claude Code 编写代码,生成了一个可以直接在浏览器中运行的 UI 界面,实现了前端直接查询 DNS 的功能。
术语解释:同源策略是浏览器的一种安全机制,它限制了一个源(协议、域名、端口)下的文档或脚本如何与另一个源的资源进行交互。如果没有 CORS 支持,前端 JavaScript 代码在默认情况下无法从其他域名(如 Cloudflare)获取数据,这通常是开发 Web 工具时的一大障碍。JSON API 则是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
重要引文
论点:Cloudflare 的 1.1.1.1 DNS 服务(及其安全变体 1.1.1.2 和 1.1.1.3)拥有一个启用了 CORS 的 JSON API,这使得构建基于浏览器的 DNS 查询工具成为可能。
论据:原文明确指出“Cloudflare's 1.1.1.1 DNS service (and 1.1.1.2 and 1.1.1.3, which block malware and malware + adult content respectively) has a CORS-enabled JSON API”。
论证:基于上述发现,作者利用 Claude Code 构建了一个名为“DNS Lookup”的用户界面(UI),该工具专门用于向这三个解析器运行 DNS 查询,验证了该 API 的可用性及其在工具开发中的价值。
术语解释:在此需要特别解释“CORS-enabled”(启用了 CORS)的含义。在 Web 开发中,当服务器响应头中包含 Access-Control-Allow-Origin 等信息时,表示该资源允许跨域访问。这对于本文作者来说至关重要,因为这意味着他可以在没有任何后端服务器的情况下,仅凭前端代码(通过 Claude Code 辅助)就能直接与 Cloudflare 的 DNS 服务进行交互,从而简化了工具的部署和开发流程。
总结
本文最吸引人的地方在于发现并利用了 Cloudflare 公共 DNS 服务鲜为人知的 API 功能。作者不仅发现 1.1.1.1、1.1.1.2 和 1.1.1.3 这三个解析器都支持 CORS 启用的 JSON API,还迅速将其转化为一个实用的在线工具。这个工具填补了针对这三个特定安全级别 DNS 服务进行统一可视化的空白,展示了如何利用现代 Web 技术(JSON API + CORS)快速解决实际问题。目前该工具已发布在 Simon Willison 的工具库中,为开发者和技术爱好者提供了一个便捷的 DNS 测试手段,未来可能还会扩展更多的查询功能或解析器支持。