Git Product home page Git Product logo

cf2dns's Introduction

增加dddb/cf2dns docker镜像 --update 2024.6.4

使用方法

  1. 拉取cf2dns docker镜像 docker pull dddb/cf2dns

  2. 新建cf2dns_docker工作路径 cd ~ && mkdir -p cf2dns_docker/logs && cd cf2dns_docker

  3. 下载所需配置文件 wget --no-check-certificate -qO ./config.ini https://raw.githubusercontent.com/ddgth/cf2dns/master/docker/src/config.ini

  4. 根据注释修改config.ini配置文件

  5. 运行docker镜像 docker run -d -v ~/cf2dns_docker/config.ini:/cf2dns/src/config.ini -v ~/cf2dns_docker/logs:/cf2dns/logs dddb/cf2dns

  6. 查看运行日志 tail -100f ~/cf2dns_docker/logs/cf2dns.log

修复腾讯云 DNS 无法调用 --update 2023.1.3

API 2.0下线通知 By github@z0z0r4

新增支持Actions自选更新V4或V6 ——update 2022.12.19

使用方法

  1. 修改 .github/workflows/run.yml

  2. 新增secret DOMAINSV6

    新增支持华为云DNS ——update 2022.10.25

    使用方法

  3. 安装依赖 pip install -r requirements.txt

  4. 修改配置文件 DNS_SERVER SECRETID SECRETKEY REGION_HW

新增优选IPv6功能 ——update 2022.07.06

使用方法

​ 更新代码,修改脚本中的 TYPE 参数即可

新增默认线路记录 ——update 2021.12.15

如果需要使用默认线路,请将默认线路的cname记录移除或改为其他线路

默认:DEF

境外:AB

Faker GFW ——update 2021.08.08

最近有很多小伙伴正遭受假墙并伴随着被勒索的困扰,现在增加了预防假墙攻击的功能

实现方式

​ 之前不管您使用免费的key还是付费的key所筛选出来的Cloudflare IP都是多人共享的,如果其中有人的网站刚好被假墙,而您自选出来的IP刚好和他的相同,那么您的网站也有被假墙的风险,当然我也使用了各种手动去解决这个方法,比如增加接口返回IP数、随机获取优选IP等,但最总还是不能完全杜绝这情况的发现,所以现增加了一个优选IP池,只需在您的key后面加上 fgfw ,您就会每次执行脚本都能获取到最新的独享优选IP,由于这需要消耗更多的服务器硬件和带宽资源,那么每次调用获取最新的独享优选IP时,您只能获取到每个运营商的2条优选记录,并且每次调用您将消耗更多的key调用次数,执行频率建议与您DNS服务商的最小TTL保持一直(记得把脚本中的TTL参数也修改了)。

使用方法:

  1. 新用户:在您购买的KEY后面加上 fgfw ,并按照下面教程使用即可
  2. 新用户:每个运营商的2条优选记录,所以您需要删除目前已经存在的之前优选的A记录然后在您购买的KEY后面加上 fgfw 即可。

功能介绍

筛选出优质的Cloudflare IP(目前在暂不开源,以接口方式提供15分钟更新一次),并使用域名服务商提供的API解析到不同线路以达到网站加速的效果(目前只完成DNSPod和阿里云DNS,后续如果有需求将会加入其他运营商的)。

详细的使用场景请移步我的小站

适用人群

  1. 小站长,网站经常被打或网站放置在国外需要稳定且速度相对快的CDN
  2. 服务器在国外但是想建站的小伙伴
  3. 科学上网加速,拯救移动线路(未测试)

使用方法

必要条件:

★ Cloudflare自选IP并已接入到DNSPod或阿里云DNS,不知道怎么自选IP可以查看这个教程

★ Python3、pip环境

方法一:在自己的VPS或电脑中运行(推荐)

  1. 安装运行脚本所需依赖
pip install -r requirements.txt
  1. 登录腾讯云后台或者阿里云后台,获取 SecretId、SecretKey,如果使用阿里云DNS,注意需要添加DNS控制权限AliyunDNSFullAccess

  2. 将脚本下载到本地修改cf2dns.py中的SecretId、SecretKey

  3. 修改脚本中域名配置信息,可配置多个域名和多个子域名,注意选择DNS服务商

  4. (可选)从商店购买KEY,当然也可以用脚本中自带的,区别是脚本中自带的KEY是历史优选的Cloudflare IP(也可以从这个网站查到IP的信息),而购买的KEY是15分钟内获取到的最新的Cloudflare IP。

  5. 运行程序,如果能够正常运行可以选择cron定时执行(建议15分钟执行一次)

python cf2dns.py

方法二:GitHub Actions 运行

  1. 登录腾讯云后台或者阿里云后台,获取 SecretId、SecretKey,如果使用阿里云DNS,注意需要添加DNS控制权限AliyunDNSFullAccess

  2. Fork本项目到自己的仓库fork.png

  3. 进入第二步中Fork的项目,点击Settings->Secrets and variables-> Actions -> New repository secret,分别是DOMAINS,KEY,SECRETID,SECRETKEY。

    • DOMAINS 需改域名信息,填写时注意不要有换行 例如:{"hostmonit.com": {"@": ["CM","CU","CT"], "shop": ["CM", "CU", "CT"], "stock": ["CM","CU","CT"]},"4096.me": {"@": ["CM","CU","CT"], "vv":["CM","CU","CT"]}}
    • DOMAINSV6 如果需要更新AAA解析请增加此secrets,格式同DOMAINS。
    • KEY API密钥,从商店购买KEY,也可以使用这个KEY o1zrmHAF ,区别是 o1zrmHAF 是历史优选的Cloudflare IP(也可以从这个网站查到IP的信息),而购买的KEY是15分钟内获取到的对各运营商速度最优的的Cloudflare IP
    • SECRETID 第一部中从腾讯云后台或者阿里云后台,获取到的 SECRETID
    • SECRETKEY 第一部中从腾讯云后台或者阿里云后台,获取到的 SECRETKEY

    secret.png

  4. 修改您项目中的 cf2dns_actions.py文件中的AFFECT_NUMDNS_SERVER参数,继续修改.github/workflows/run.yml 文件,定时执行的时长(建议15分钟执行一次),最后点击 start commit 提交即可在Actions中的build查看到执行情况,如果看到 cf2dns 执行日志中有 CHANGE DNS SUCCESS 详情输出,即表示运行成功。需要注意观察下次定时是否能正确运行,有时候GitHub Actions 挺抽风的

    modify.png

    commit.png

    build.png

免责声明

1.网络环境错综复杂,适合我的不一定适合你,所以尽量先尝试免费的KEY或者购买试用版的KEY

2.有什么问题和建议请提issue或者Email我,不接受谩骂、扯皮、吐槽

3.为什么收费? 这个标价我也根本不指望赚钱,甚至不够我国内一台VDS的钱。

★ 如果当前DNSPod有移动、联通、电信线路的解析将会覆盖掉

cf2dns's People

Contributors

ddgth avatar dysf888 avatar z0z0r4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cf2dns's Issues

OMAINS 需改域名信息,能用二级域名吗?

我想用下cf.******.xyz

采用腾讯云,
运行结果如下:

CHANGE DNS ERROR: ----Time: 2021-03-09 08:42:29----MESSAGE: {'code': 5100, 'message': '(8)服务内部错误,请稍后重试或联系客服人员解决。', 'codeDesc': 'ResourceOpFailed'}

使用boce测试打开速度大部分移动线路是 *s

使用boce.com测试全国打开速度,很多线路测试结果一大片都是超时,000 *s的状态,基本都是移动线路,但是对应的解析 IP没有假墙,能打开。这是啥情况呀?我设置的是tll60秒,AFFECT_NUM = 2,脚本执行时间2分钟,用的是带fgfw的key。一直在被假墙!

地区差异过大

各地区CDN速度差异过大,建议提高收费,同时对多地区进行测速

可以返回ip 有一个报错

有一个报错
Exception: {'code': 5100, 'message': '(13)服务内部错误,请稍后重试或联系客服人员解决。', 'codeDesc': 'ResourceOpFailed'}
不知道有没有影响

无法自动更新

环境 ubuntu20.04LTS python3
原脚本没变,加了两个print,确认AKID跟密码没错

回显错误如下:

b'{"key": "o1zrmHAF"}' {'code': 200, 'info': [{'colo': 'FRA', 'ip': '104.20.55.231', 'latency': 207, 'line': 'CM', 'loss': 0, 'node': 'ZJBGP', 'speed': 2443, 'time': '2020-10-05 18:20:41'}, {'colo': 'FRA', 'ip': '104.20.53.252', 'latency': 204, 'line': 'CM', 'loss': 0, 'node': 'ZJBGP', 'speed': 679, 'time': '2020-10-05 18:20:20'}, {'colo': 'LAX', 'ip': '104.27.196.160', 'latency': 157, 'line': 'CM', 'loss': 0, 'node': 'ZJBGP', 'speed': 634, 'time': '2020-10-06 03:20:05'}, {'colo': 'LAX', 'ip': '104.27.202.98', 'latency': 166, 'line': 'CM', 'loss': 0, 'node': 'ZJBGP', 'speed': 490, 'time': '2020-10-06 04:20:21'}, {'colo': 'LAX', 'ip': '104.27.199.139', 'latency': 196, 'line': 'CM', 'loss': 0, 'node': 'ZJBGP', 'speed': 430, 'time': '2020-10-05 12:05:00'}, {'colo': 'SJC', 'ip': '172.67.66.59', 'latency': 149, 'line': 'CU', 'loss': 0, 'node': 'ZJBGP', 'speed': 3151, 'time': '2020-10-06 07:46:59'}, {'colo': 'SJC', 'ip': '104.26.11.247', 'latency': 153, 'line': 'CU', 'loss': 0, 'node': 'ZJBGP', 'speed': 3150, 'time': '2020-10-06 07:47:12'}, {'colo': 'SJC', 'ip': '172.67.3.114', 'latency': 156, 'line': 'CU', 'loss': 0, 'node': 'ZJBGP', 'speed': 3149, 'time': '2020-10-06 07:47:19'}, {'colo': 'SJC', 'ip': '172.67.66.50', 'latency': 150, 'line': 'CU', 'loss': 0, 'node': 'ZJBGP', 'speed': 3149, 'time': '2020-10-06 07:47:05'}, {'colo': 'FRA', 'ip': '172.67.17.70', 'latency': 159, 'line': 'CU', 'loss': 0, 'node': 'ZJBGP', 'speed': 3148, 'time': '2020-10-06 07:47:25'}, {'colo': 'LAX', 'ip': '104.27.105.75', 'latency': 206, 'line': 'CT', 'loss': 0, 'node': 'ZJBGP', 'speed': 3149, 'time': '2020-10-05 16:11:07'}, {'colo': 'LAX', 'ip': '104.27.108.145', 'latency': 211, 'line': 'CT', 'loss': 0, 'node': 'ZJBGP', 'speed': 3149, 'time': '2020-10-05 13:26:03'}, {'colo': 'LAX', 'ip': '104.25.130.154', 'latency': 209, 'line': 'CT', 'loss': 0, 'node': 'ZJBGP', 'speed': 3148, 'time': '2020-10-05 15:10:25'}, {'colo': 'LAX', 'ip': '104.27.108.114', 'latency': 203, 'line': 'CT', 'loss': 0, 'node': 'ZJBGP', 'speed': 2048, 'time': '2020-10-05 18:10:56'}, {'colo': 'LAX', 'ip': '104.27.70.102', 'latency': 215, 'line': 'CT', 'loss': 0, 'node': 'ZJBGP', 'speed': 978, 'time': '2020-10-05 14:10:48'}], 'total': 15} 2020-10-06 01:51:55,087 - cf1dns.py[line:183] - ERROR: CHANGE DNS ERROR: ----Time: 2020-10-06 01:51:55----MESSAGE: list indices must be integers or slices, not str

地区差异过大

各地区CDN速度差异过大,建议提高收费,同时对多地区进行测速

DOMAINS是如何修改的?请大佬赐教!谢谢!

{"hostmonit.com": {"@": ["CM","CU","CT"], "shop": ["CM", "CU", "CT"], "stock": ["CM","CU","CT"]},"4096.me": {"@": ["CM","CU","CT"], "vv":["CM","CU","CT"]}}
这一段分别代表什么,如何修改,请大佬赐教!谢谢!

IP测试策略是什么

RT,请问大佬的这个项目是如何测试出最优IP的,是选ping值低的还是下载速率高的?或是其他策略

建议

请求增加个默认线路(三网合一起那种),不弄默认其他线路的人进不来,自己手动修改又不一定稳

line 134, in main for record in ret["data"]["records"]: KeyError: 'data'

大佬,运行报错,用默认的KEY和试用KEY都不行,ali的解析,怎么解决了

Run python cf2dns_actions.py
python cf2dns_actions.py
shell: /usr/bin/bash -e {0}
env:
pythonLocation: /opt/hostedtoolcache/Python/3.7.12/x64
LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.7.12/x64/lib
KEY: ***
DOMAINS: ***
SECRETID: ***
SECRETKEY: ***
Traceback (most recent call last):
CHANGE DNS ERROR: ----Time: 2021-11-02 17:53:03----MESSAGE: None
File "cf2dns_actions.py", line 134, in main
for record in ret["data"]["records"]:
KeyError: 'data'

筛选带宽建议

广东电信地区 测试了2天感觉筛选机制有欠妥,主要在于带宽不稳定,建议增加延迟与带宽区分选项,可以满足低延迟低带宽 高延迟高带宽使用环境 默认带宽满足20M就更好了

正常运行出现重复记录

正常运行action,dnspod却出现了重复的解析记录,没有删除老的解析而是直接添加了新解析

在自己VPS运行后 提示一个类型错误

Traceback (most recent call last):
  File "cf2dns.py", line 120, in main
    cf_cmips = cfips["info"]["CM"]
TypeError: list indices must be integers or slices, not str
2021-05-26 00:49:02,240 - cf2dns.py[line:170] - ERROR: CHANGE DNS ERROR: ----Time: 2021-05-26 00:49:02----MESSAGE: list indices must be integers or slices, not str

运行环境: Ubuntu Python3

请问这个要怎么解决呀

几个参数配置的问题,谢谢

大佬,使用key加上fgfw获取到的IP和不带fgfw获取的IP有什么实际区别呢?是加上fgfw获取的IP一定是没被假墙的吗还是什么?
还有,使用fgfw的话,AFFECT_NUM = 填写多少合适?我用的是负载均衡10条的dnspod专业版。
我的域名现在已经被记录,现在每天晚上都会被假墙搞。所以求给个合适的配置方案,谢谢大佬!

大佬用的那个python版本?

我用的Python 2.7.13
一直提示缺少模块,模块名:parse
实际这个模块已经安装了
Requirement already satisfied: parse in /usr/local/lib/python2.7/dist-packages

建议对参数进行详细描述

{"hostmonit.com": {"@": ["CM","CU","CT"], "shop": ["CM", "CU", "CT"], "stock": ["CM","CU","CT"]},"4096.me": {"@": ["CM","CU","CT"], "vv":["CM","CU","CT"]}}

可以增加ServerChan

可以考虑增加ServerChan作为可选功能,无论成功与否,微信推送信息,以便了解解析情况

建议子域名优选 跟随 主域名

设置中希望增加 子域名是否与主域名优选IP一致
程序在www @ 以及子域名中 设置的每个子域名都会再次测试
减少不必要次数浪费

建议

建议在解析失败的时候,GitHub设置为运行错误

刚刚发现解析的时候,貌似没连上腾讯的API,出错了,但是GitHub显示的是运行成功

希望可以改进下

电信炸了

没有电信线路,网站上的数据没有,脚本设置里key也没有

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.