CDN 调教指南(三)优选 Cloudflare IP

0、前言

Cloudflare 的优势不必再次赘述,然而 Cloudflare 在中国大陆的访问速度堪忧:

速度对比

通过 优选 IP寻找反代 IP 两种方式,可以极大地提升 Cloudflare 的大陆访问速度。

1、优选 IP

网站:

CloudFlare优质IP
https://stock.hostmonit.com/CloudFlareYes

开源仓库:

GitHub CloudFlare优质IP自动切换
https://github.com/ddgth/cf2dns

原作者已有详细教程,此处仅简要说明部署过程。

1.1、安装

在想要放置程序文件的目录(如:~/cf/)执行:

Bash
1
2
3
4
mkdir ~/cf/
cd ~/cf/
git clone https://github.com/ddgth/cf2dns
mv ./cf2dns/* ./

安装依赖:

Bash
1
pip3 install -r requirements.txt

如果没有pip3可以尝试:

Bash
1
pip install -r requirements.txt

1.2、配置

我使用的程序已自行修改成从config.json加载(后文有修改方法),原程序为在cf2dns.py中配置,配置可以参考我的config.json

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  "cf_api_key": "o1zrmHAF",
  "domains": {
    "tsinbei.com": {
      "test": [
        "CM",
        "CU",
        "CT"
      ]
    }
  },
  "affect_num": 2,
  "dns_server": 1,
  "region_hw": "",
  "region_ali": "",
  "ttl": 600,
  "record_type": "A",
  "secret_id": "YOUR_DNSPOD_ID",
  "secret_key": "YOUR_DNSPOD_SECRET"
}

注意:

  1. cf_api_key 请到 商店 购买,第一次购买需先购买 试用 Key,拥有唯一key之后,充值点数再购买 Key 充值
  2. domains 要在同一个账号下,可以为多个根域名;CMCUCTABDEF分别代表移动、联通、电信、境外、默认线路。
  3. affect_num 为一次性设置条数,DNSPod 免费版只有 2 条,个人专业版有 5 条。
  4. ttl DNSPod 免费版最低 600,个人专业版最多 60。

1.3、修改

如果域名分布在多个账号,可以参考以下方式修改源码:

cf2dns.py第 13-46 行:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#可以从https://shop.hostmonit.com获取
KEY = "o1zrmHAF"

#CM:移动 CU:联通 CT:电信  AB:境外 DEF:默认
#修改需要更改的dnspod域名和子域名
DOMAINS = {
    "hostxxnit.com": {"@": ["CM","CU","CT"], "shop": ["CM", "CU", "CT"], "stock": ["CM","CU","CT"]},
    "484848.xyz": {"@": ["CM","CU","CT"], "shop": ["CM","CU","CT"]}
}

#解析生效条数 免费的DNSPod相同线路最多支持2条解析
AFFECT_NUM = 2

#DNS服务商 如果使用DNSPod改为1 如果使用阿里云解析改成2  如果使用华为云解析改成3
DNS_SERVER = 1

#如果使用华为云解析 需要从API凭证-项目列表中获取
REGION_HW = 'cn-east-3'

#如果使用阿里云解析 REGION出现错误再修改 默认不需要修改 https://help.aliyun.com/document_detail/198326.html
REGION_ALI = 'cn-hongkong'

#解析生效时间,默认为600秒 如果不是DNS付费版用户 不要修改!!!
TTL = 600

#v4为筛选出IPv4的IP  v6为筛选出IPv6的IP
TYPE = 'v4'

#API 密钥
#腾讯云后台获取 https://console.cloud.tencent.com/cam/capi
#阿里云后台获取 https://help.aliyun.com/document_detail/53045.html?spm=a2c4g.11186623.2.11.2c6a2fbdh13O53  注意需要添加DNS控制权限 AliyunDNSFullAccess
#华为云后台获取 https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html
SECRETID = 'WTTCWxxxxxxxxxxxxxxxxxxxxx84O0V'
SECRETKEY = 'GXkG6D4X1Nxxxxxxxxxxxxxxxxxxxxx4lRg6lT'

修改为:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
default_conf = {
    "cf_api_key": "CF_API_KEY",
    "domains": {"YOUR_DOMAIN":
                {"YOUR_SUBDOMAIN": ["CM", "CU", "CT"]}
                },
    "affect_num": 2,
    "dns_server": 1,
    "region_hw": "",
    "region_ali": "",
    "ttl": 600,
    "record_type": "A",
    "secret_id": "YOUR_DNSPOD_ID",
    "secret_key": "YOUR_DNSPOD_SECRET"
}

if len(sys.argv) == 2:
    conf_name = sys.argv[1]
else:
    conf_name = "config.json"

# 添加配置文件
if not os.path.exists(conf_name):
    with open(conf_name, "w") as f:
        json.dump(default_conf, f)
        log_error("已初始化配置文件,请修改 config.json")
        exit()
else:
    with open(conf_name) as f:
        conf = json.load(f)
        log_info("成功加载 "+conf_name)



# 可以从 https://shop.hostmonit.com 获取
KEY = conf["cf_api_key"]

# CM:移动 CU:联通 CT:电信  AB:境外 DEF:默认
# 修改需要更改的 DNSPod域名和子域名
DOMAINS = conf["domains"]

# 解析生效条数 免费的DNSPod相同线路最多支持2条解析
AFFECT_NUM = conf["affect_num"]

# DNS服务商 如果使用DNSPod改为1 如果使用阿里云解析改成2  如果使用华为云解析改成3
DNS_SERVER = conf["dns_server"]

# 如果使用华为云解析 需要从API凭证-项目列表中获取
REGION_HW = conf["region_hw"]

# 如果使用阿里云解析 REGION出现错误再修改 默认不需要修改 https://help.aliyun.com/document_detail/198326.html
REGION_ALI = conf["region_ali"]

# 解析生效时间,默认为600秒 如果不是DNS付费版用户 不要修改!!!
TTL = conf["ttl"]

# A为筛选出IPv4的IP  AAAA为筛选出IPv6的IP
RECORD_TYPE = conf["record_type"]

# API 密钥
# 腾讯云后台获取 https://console.cloud.tencent.com/cam/capi
# 阿里云后台获取 https://help.aliyun.com/document_detail/53045.html?spm=a2c4g.11186623.2.11.2c6a2fbdh13O53  注意需要添加DNS控制权限 AliyunDNSFullAccess
# 华为云后台获取 https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html
SECRETID = conf["secret_id"]
SECRETKEY = conf["secret_key"]

即可支持从配置文件加载,指定配置文件名称,后文将详细说明。

1.4、使用

无论是否修改,都可以使用:

Bash
1
2
cd ~/cf/
python3 cf2dns.py

启动程序,建议在命令行中测试启动,确认无误后再设置为 Cron 任务。

修改后,使用相同命令将从同目录下 config.json加载,如果指定配置文件:

Bash
1
2
cd ~/cf/
python3 cf2dns.py my_conf.json

将加载同目录的my_conf.json

测试正常后只需将命令内容放入 Cron 任务即可。

另外,每次消耗 1 点(0.01元),API 更新频率 15 分钟,因此 Cron 间隔最低 15 分钟,每年约需要 30 余元。经过观察,设置频率为 1 至 2 小时不影响优选效果。

优选效果:全国三网拨测平均时间 1.2~1.5s。

2、寻找反代 IP

使用网站:

Fofa 搜索引擎
https://fofa.info

参考搜索语法(需要自行根据实际需求组合、修改后使用):

此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。

注意:搜索到的 IP 不一定有效,建议到拨测平台用自己 CNAME 接入的域名,指定用上述方法搜到的 IP,看看全国拨测结果。

另外,此方法搜到的域名大部分只有部分端口反代 Cloudflare,例如:80,8080,443,8443。因此建站的话可能导致只能 HTTP/HTTPS 访问等问题,谨慎选择;另外,一如既往地谴责使用 Cloudflare 进行国际联网,这是违反 TOS 的滥用行为。

优选效果:(香港)全国三网拨测平均时间 0.4~0.5s,如果是大陆可以更快。

CDN 调教指南(三)优选 Cloudflare IP

https://blog.tsinbei.com/archives/1349/

文章作者
Hsukqi Lee
发布于

2023-07-28

修改于

2023-11-19

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
21 条

Kevi

Kevi

学习学习!感谢大佬

  回复

aveshh

aveshh

好强

  回复

jp

jp

太6啦

  回复

aa

aa

看看拉

  回复

fofa

fofa

試試fofa

  回复

a

a

感谢分享

  回复

Le

Le

支持

  回复

code114514

code114514

牛逼啊 cf大法好

  回复

Ace

Ace

牛逼啊 cf大法好

  回复

huige

huige

牛逼啊 cf大法好

  回复