logo NodeSeekbeta

使用Workers搭建反代加密DNS

只要思想不滑坡,办法总比困难多,之前的教程一AdGuard Home,教程二Caddy反代,现在教程三Workers反代,默认大家都会使用cf,而且有域名托管在上面,因为要设置自定义域名,代码中目标 DoH 服务器可以随意更改为 https://1.1.1.1/dns-query 或其它,最终 https://你的 Workers 子域/dns-query 成为DoH。

export default {
  async fetch(request) {
    let url = new URL(request.url);

    // 仅允许 /dns-query
    if (url.pathname !== "/dns-query") {
      return new Response("Not Found", { status: 404 });
    }

    // 目标 DoH 服务器
    let targetURL = "https://dns.google/dns-query" + url.search;

    let modifiedRequest = new Request(targetURL, {
      method: request.method,
      headers: new Headers(request.headers),
      body: request.body,
      redirect: "follow"
    });

    // 设置正确的 Host 头,避免 Google 拒绝请求
    modifiedRequest.headers.set("Host", "dns.google");
    modifiedRequest.headers.set("Accept", "application/dns-message");

    let response = await fetch(modifiedRequest);

    let newHeaders = new Headers(response.headers);
    newHeaders.set("Access-Control-Allow-Origin", "*"); // 允许 CORS

    return new Response(response.body, {
      status: response.status,
      headers: newHeaders
    });
  }
}



12
  • 512M 的 Lightsail 上放我的 Adguard Home

  • path 有 dns-query 直接关注,等候阻断 xhj023

  • 你直接把1.1.1.1添加到代理规则里不就行了

  • @Gaven #3 你了解下https,在 HTTPS 传输中,GFW 无法直接看到你访问的完整 URL,只有知名的国外dns才会被重点关注。

  • @hqycloud #6 没有百分百避免,不过个人使用应该问题不大。

  • @TongTong #5 固定特征的东西用自动脚本扫也没什么难度吧😅

  • 怎么修改path

  • /dns-query就是特征,而且则固定完全不会变。两会期间极度敏感。
    最好提起说一下,要是备案域名就别绑了,要不然到时候查的话绝对会被请去喝茶

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有59945位seeker

🎉欢迎新用户🎉