利用免费的 Cloudflare Worker 代理 DoH 请求

202 天前
 jqknono

开源地址: https://github.com/jqknono/cloudflare-doh

Cloudflare DoH 转发代理

这是一个基于 Cloudflare Workers 的 DNS over HTTPS (DoH) 转发代理服务。本服务可以根据路径将请求转发到不同的 DoH 提供商,同时保留查询参数。

功能特点

工作原理

该 Worker 根据请求的路径前缀确定转发目标,然后将请求转发到相应的 DoH 服务提供商。例如,当访问 doh.example.com/google/query-dns?name=example.com 时,该请求会被转发到 dns.google/dns-query?name=example.com

默认路径映射

Worker 内置了以下默认映射规则:

配置说明

基础配置

Worker 可以使用默认配置直接部署使用。

自定义配置

可以在 Cloudflare Workers 控制台中添加名为 DOMAIN_MAPPINGS 的环境变量来自定义路径映射规则。该变量接受符合以下格式的 JSON 字符串:

{
  "/path-prefix": {
    "targetDomain": "target.domain.com",
    "pathMapping": {
      "/source-path": "/target-path"
    }
  }
}

例如,若要添加对 Quad9 DoH 服务的支持,配置可能如下:

{
  "/google": {
    "targetDomain": "dns.google",
    "pathMapping": {
      "/query-dns": "/dns-query"
    }
  },
  "/cloudflare": {
    "targetDomain": "one.one.one.one",
    "pathMapping": {
      "/query-dns": "/dns-query"
    }
  },
  "/quad9": {
    "targetDomain": "dns.quad9.net",
    "pathMapping": {
      "/query-dns": "/dns-query"
    }
  }
}

部署方法

方法一:使用 Cloudflare Workers

  1. 登录到 Cloudflare 控制台
  2. 进入 Workers and Pages, 点击"创建"
  3. 选择 Worker, 输入服务名称并选择"Hello World"模板
  4. _worker.js 中的代码粘贴到编辑器中
  5. (可选) 在"变量和机密"部分添加 DOMAIN_MAPPINGS 变量来自定义路径映射
  6. 点击"部署"按钮

方法二:使用 Cloudflare Pages

  1. Fork 本库
  2. 登录到 Cloudflare 控制台
  3. 进入 Workers and Pages, 点击"创建"
  4. 选择 Pages, "连接到 Git",并连接到您的 Fork 库
  5. (可选)在"变量和机密"部分添加 DOMAIN_MAPPINGS 变量来自定义路径映射
  6. 点击"保存并部署"

部署完成后,Cloudflare Pages 会自动检测 _worker.js 文件并将其用作 Worker 函数。

使用示例

假设您已将此 Worker 部署到 doh-proxy.workers.dev,您可以通过以下方式使用:

注意事项

许可协议

本项目采用 MIT 许可协议。您可以自由地使用、修改和分发本代码,但需要在您的项目中包含原始许可证和版权声明。

1790 次点击
所在节点    分享创造
4 条回复
itechify
202 天前
打开网站,查询 dns 会慢很多吧,个人观感体验有影响吗?
jqknono
202 天前
@oneisall8955 http3 协议下 500ms 上下, 具体要看 cloudflare 使用了哪个节点. 这是解决一些域名无正确解析的问题, 客户端最好做个分流.
molezznet
200 天前
手机上用 doh 还不成熟, 系统只支持 dot
jqknono
200 天前
@molezznet 是的, 安卓系统目前原生只支持 DoT, 主要是分流时使用.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1117838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX