奇迹 发表于 2025-3-19 22:57:20

嫖阿里云私人安全加密接入 (HTTP(s)、DoH、DoT、DoQ) 同步进AdGuard Home ...

本帖最后由 奇迹 于 2025-3-19 23:10 编辑

> 问:为什么要这么干?
答:阿里云解析中时间戳有效期为1天 所以生成的链接不能一直使用
!(https://t.jscz.de/1742395419821.png)
相关链接:https://help.aliyun.com/zh/dns/adguard-home-how-to-set-up-alibaba-public-dns-server


**step1**
进入控制台
https://dnsnext.console.aliyun.com/pubDNS
**友情提示:记得设置预警金额阈值 不然 一套房没了**
拿到对应的key 记得打开状态
!(https://t.jscz.de/1742394755007.png)

把key填入 py脚本里 保存一下例如dns.py 如果你号多 你就自己魔改一下

```
#!/usr/bin/python
# -*- coding:utf-8 -*-
import hashlib
import time

# 定义常量
# 移动138
AccessKeyID_m = "填入对应key"
AccessKeySecret_m = "填入对应key"

# 移动182
AccessKeyID_y = "填入对应key填入对应key"
AccessKeySecret_y = "填入对应key"

# 电信189
AccessKeyID_t = "填入对应key"
AccessKeySecret_t = "填入对应key"

# 联通166
AccessKeyID_l = "填入对应key"
AccessKeySecret_l = "填入对应key"

# 联通166-2
AccessKeyID_l2 = "填入对应key"
AccessKeySecret_l2 = "填入对应key"

# 获取当前时间戳(秒)
ts = int(time.time())
# 计算 ts' = ts / 3600,确保定长为7个字符(前面补0)
ts_ = str(ts // 3600).zfill(7)

# 定义生成 URL 的函数
def generate_urls(AccessKeyID, AccessKeySecret):
    # 计算 key = sha1(AccessKeySecret + ts' * 3600 + AccessKeyID)
    key_input = AccessKeySecret + str(int(ts_) * 3600) + AccessKeyID
    key = hashlib.sha1(key_input.encode()).hexdigest()[:40]
    # 获取 AccessKeyID' = AccessKeyID 的前16个字符
    AccessKeyID_ = AccessKeyID[:16]
    # 拼接 label
    label = key + ts_ + AccessKeyID_
    # 拼接不同的协议格式
    url_https = "https://{}.alidns.com/dns-query".format(label)
    url_tls = "tls://{}.alidns.com".format(label)
    url_quic = "quic://{}.alidns.com".format(label)
    url_h3 = "h3://{}.alidns.com/dns-query".format(label)
    return

# 生成所有提供商的 URL
urls_m = generate_urls(AccessKeyID_m, AccessKeySecret_m)
urls_y = generate_urls(AccessKeyID_y, AccessKeySecret_y)
urls_t = generate_urls(AccessKeyID_t, AccessKeySecret_t)
urls_l = generate_urls(AccessKeyID_l, AccessKeySecret_l)
urls_l2 = generate_urls(AccessKeyID_l2, AccessKeySecret_l2)

# 将生成的 URL 保存到文件
with open('dns.txt', 'w') as f:
    all_urls = urls_m + urls_y + urls_t + urls_l + urls_l2
    for i, url in enumerate(all_urls):
      if i == len(all_urls) - 1:# 如果是最后一行
            f.write("    - " + url)# 不加换行
      else:
            f.write("    - " + url + '\n')# 其他行加换行

print("保存成功dns.txt.")



```



---

**step2**
获取到了以后 找到 AdGuard Home的yaml 配置文件绝对路径
例如我的
/usr/local/bin/AdGuardHome/AdGuardHome.yaml
然后保存下列的代码为dns.sh
然后设置10个小时自动执行一次

```
#!/bin/bash

# 执行 /root/dns.py 脚本
python3 /root/dns.py

# 等待 5 秒钟
sleep 5

# 配置文件路径
config_file="/usr/local/bin/AdGuardHome/AdGuardHome.yaml"

# 读取 /root/dns.txt 文件的内容
dns_content=$(cat /root/dns.txt)

# 使用 awk 替换第26到第28行的内容
awk -v dns_content="$dns_content" '
BEGIN {split(dns_content, arr, "\n")}
NR==26 {$0=arr}
NR==27 {$0=arr}
NR==28 {$0=arr}
NR==29 {$0=arr}
NR==30 {$0=arr}
NR==31 {$0=arr}
NR==32 {$0=arr}
NR==33 {$0=arr}
NR==34 {$0=arr}
NR==35 {$0=arr}
NR==36 {$0=arr}
NR==37 {$0=arr}
NR==38 {$0=arr}
NR==39 {$0=arr}
NR==40 {$0=arr}
NR==41 {$0=arr}
NR==42 {$0=arr}
NR==43 {$0=arr}
NR==44 {$0=arr}
NR==45 {$0=arr}

{print}
' $config_file > temp_file && mv temp_file $config_file

echo "配置文件已更新。"

# 等待 3 秒钟
sleep 3

# 重启 AdGuardHome
sudo systemctl restart AdGuardHome

echo "AdGuardHome 已重启。"
sleep 1
echo "更新完毕"
```


---
**step3**
ADG HOME里设置负载均衡
!(https://t.jscz.de/1742395504126.png)

问:为什么不设置并行请求
答:因为并行的话所有的请求都会经过key对应的账户,因为一个月1000W的免费配额,完全支撑不了,再者国内的阿里云的服务器响应速度都是个位数ms的,所以才选择负载均衡

---
效果

!(https://t.jscz.de/1742395334813.png)
!(https://t.jscz.de/1742395723063.png)

nyarime 发表于 2025-3-19 22:59:37

能用api获取新的label吗

candy 发表于 2025-3-19 23:00:50

其实阿里云DNS是有DoQ的,你去看看这个吧 https://help.aliyun.com/zh/dns/adguard-home-how-to-set-up-alibaba-public-dns-server
Doq比DoH更安全且更快,能用DoQ就用DoQ吧
//DNS-over-HTTPS设置如下:
https://label.alidns.com/dns-query
//DNS-over-TLS设置如下:
tls://label.alidns.com
//DNS-over-QUIC设置如下:
quic://label.alidns.com

奇迹 发表于 2025-3-19 23:01:28

nyarime 发表于 2025-3-19 22:59
能用api获取新的label吗

可以啊
脚本都放着了
另外球球支持markdown 哈哈

奇迹 发表于 2025-3-19 23:02:14

本帖最后由 奇迹 于 2025-3-19 23:06 编辑

candy 发表于 2025-3-19 23:00
其实阿里云DNS是有DoQ的,你去看看这个吧 https://help.aliyun.com/zh/dns/adguard-home-how-to-set-up-ali ...

帖子里有支持DOQ 自己修改一下脚本就行了

c919 发表于 2025-3-20 09:09:53

感谢分享

naxi2233 发表于 2025-3-26 10:32:01

感谢分享
页: [1]
查看完整版本: 嫖阿里云私人安全加密接入 (HTTP(s)、DoH、DoT、DoQ) 同步进AdGuard Home ...