利用免费的 Cloudflare Worker 代理 DoH 请求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jqknono

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

  •  1
     
  •   jqknono 2025 年 3 月 12 日 2455 次点击
    这是一个创建于 408 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    Cloudflare DoH 转发代理

    使用演示

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

    功能特点

    • 基于路径的请求转发:根据请求路径将请求转发到对应的 DoH 服务提供商
    • 自定义路径映射:可以通过 Cloudflare Worker 的环境变量配置路径映射
    • 保留查询参数:转发时会保留原始请求中的查询参数
    • 轻量级实现:简单高效的实现方式,易于部署和维护

    工作原理

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

    默认路径映射

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

    • /google/query-dnsdns.google/dns-query( Google 的 DoH 服务)
    • /cloudflare/query-dnsone.one.one.one/dns-query( Cloudflare 的 DoH 服务)

    配置说明

    基础配置

    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,您可以通过以下方式使用:

    • 使用 Google 的 DoH 服务:

      https://doh-proxy.workers.dev/google/query-dns?name=example.com 
    • 使用 Cloudflare 的 DoH 服务:

      https://doh-proxy.workers.dev/cloudflare/query-dns?name=example.com 

    注意事项

    • 该服务仅转发请求,不会修改或存储您的 DNS 查询内容
    • 请确保遵守各 DoH 服务提供商的使用政策
    • 此服务适合个人或小规模使用,对于大规模部署,请考虑各提供商的使用限制
    • Cloudflare 免费版用户每日的免费请求数量为 10w 次, 仅够个人使用, 注意避免暴漏 DoH 连接
    • 关闭 Cloudflare 代理可以大幅降低延迟, DoH 服务通常不需要代理

    许可协议

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

    4 条回复    2025-03-14 09:49:38 +08:00
    itechify
        1
    itechify  
    PRO
       2025 年 3 月 12 日
    打开网站,查询 dns 会慢很多吧,个人观感体验有影响吗?
    jqknono
        2
    jqknono  
    OP
       2025 年 3 月 12 日
    @oneisall8955 http3 协议下 500ms 上下, 具体要看 cloudflare 使用了哪个节点. 这是解决一些域名无正确解析的问题, 客户端最好做个分流.
    molezznet
        3
    molezznet  
       2025 年 3 月 14 日
    手机上用 doh 还不成熟, 系统只支持 dot
    jqknono
        4
    jqknono  
    OP
       2025 年 3 月 14 日
    @molezznet 是的, 安卓系统目前原生只支持 DoT, 主要是分流时使用.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2805 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 14:20 PVG 22:20 LAX 07:20 JFK 10:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86