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

评论

昵称
邮箱
网址
11 条

niubia

niubia

牛逼啊 cf大法好

  回复

niubia

niubia

牛逼啊 cf大法好

  回复

448798708

448798708

6666

  回复

Never7

Never7

试着找找verccel的优质ip

  回复

Hsukqi Lee

Hsukqi Lee 作者

应该会更好用

  回复

Hov

Hov

试试fofa

  回复

0verf1ow

0verf1ow

试试fofa

  回复

ASD123666

ASD123666

来看看

  回复

springwood

图片错误,台湾不可能变红。

  回复

Hsukqi Lee

Hsukqi Lee 作者

你这个话有几层含义啊(
虽然但是,港澳台访问cf确实不可能这么慢。

  回复

STON

STON

来看看

  回复