cloudflare作为cdn的应用合集
Some magical effects of cloudflare partern.
–来自:pixiv 画师(MORNCOLOUR)–
一些示例
大体上分为俩种,应用于代理,应用于网站。
-
最简单的应用:隐藏源ip
-
应用cfp:自定义加速ip
-
应用cfp同步给dnspod:防假墙攻击
隐藏源ip
这应该是使用cdn的最基本功能了,也是cloudflare被广泛应用的起点。
只需将域名托管到cloudflare下,在dns设置中,将服务器源ip指向域名的同时打开cdn开关(小云朵)即可。亦或是通过cname解析的方式。
一般地,科学上网使用A记录,网站使用CNAME记录。
自定义加速ip
一些海外的线路比较差的的服务器,网站访问或是科学上网体验很差。通常都要使用中转服务器或是cdn来中转已达到加速访问的效果。cloudflare提供的免费cdn自然是被不少人用来中转。因为是免费的套餐,cdn的ip每次也是随机的,这使得加速效果时好时坏。渐渐的出现了自动筛选cf ip的脚本,对速度和延时进行筛选获得优质的ip。一般地,将其成为优选ip脚本。
–优选ip项目地址:https://github.com/XIU2/CloudflareSpeedTest–
通过对脚本的二次修改,每个人根据自身网络环境的条件,设置值获得适合自己的优选ip。将优选ip写人本地hosts文件中,就瞬间完成了对自己客户机的加速。再对服务端或客户端设置定时任务,间隔时间段自动执行。如此可以长期获得加速效果。
def quick_CFST(): print("请确保在'CloudflareST.exe'目录下\n\n") mm=input("默认筛选低于200ms高于10M/s的4个ip地址(y默认/n自定义):") if mm.strip(" ").strip("y")=="": t1=200 s1=10 dn=4 tp=443 n=500 elif mm.strip(" ")=="n": t1=input("请输入最高延时[ms]:") s1=input("请输入最低速度[M/s]:") dn=input("请输入筛选个数:") tp=input("请输入测速端口:") n=input("测速线程数量500-1000:") else: print("输入错误.") os.system('pause') subprocess.Popen("CloudflareST.exe -tl %s -sl %s -dn %s -tp %s -n %s " %(t1,s1,dn,tp,n),shell=True) if __name__ == '__main__': quick_CFST()
–脚本二改:设置值–
#pandas打包太大,弃 # cfst_ip=pandas.read_csv("result.csv").iloc[-1]["IP 地址"] excel=open("result.csv","r",encoding='utf8') opened_file = excel.readlines() cfst_ip=opened_file[1].split(',')[0] print("获取优选ip("+cfst_ip+")成功.\n") change_dns=cfst_ip+" " def clearline(): # 删除旧记录 host_path="C:\WINDOWS\system32\drivers\etc\HOSTS" lines=open(host_path,'r').readlines() hosts= open(host_path, 'w') for i in lines: if 'cdnets.cyou' not in i: hosts.write(i) print("已清除旧的dns记录.\n") clearline() def addline(change_dns): #插入新的dns记录 host_path="C:\WINDOWS\system32\drivers\etc\HOSTS" hosts=open(host_path,'a') hosts.write(change_dns) hosts.close() print("新增dns记录成功.\n") addline(change_dns+"cdn1.com\n"+change_dns+"cdn2.com\n") os.system('pause')
–写入hosts脚本–
将上述代码打包成exe文件,创建定时任务即可。
–windows计划任务–
当然了,对于网站而言,是让所有人来访问的,仅加速自己有点掩耳盗铃了。往下看
防假墙攻击
几年之前,只需简单应用cdn即可获得加速/“被墙复活”的效果。但近日出现了一种针对网站的假墙攻击模式,当你使用的cdn ip被攻击时,即便是源ip没有被墙,你的网站也无法从大陆访问。
在上述的基础上,优选ip脚本被优化,使得结果重复率降低;将自选的结果传递给域名解析商(如dnspod),使其自动更换,则为最佳。实现起来的话,可以在本地写个脚本,定期获得优选ip,再通过对dnspod API的操作,对对应记录条进行修改,即可对多个网站通过更换cdn ip。以防止网站被假墙。
当然了,将域名托管到dnspod还想使用cloudflare的cdn,只能通过CFP平台(cloudflare partern)来实现接入解析。2021.11cloudflare已经禁用了很多被滥用CFP的hot key,结果导致新的域名无法再接入CFP。对此我只能说,我手里还有不限hot key的CFP,需要的请付费上车wanxve@gmail.com
–某cfp操作界面–
–cfp添加记录界面–
–接入解析方式–
–dnspod自选ip–
def getip(): excel=open("result.csv","r",encoding='utf8') opened_file = excel.readlines() cfst_ip=opened_file[1].split(',')[0] print("获取优选ip("+cfst_ip+")成功.\n") return cfst_ip #修改jefggw.top优选ip change_jefggw_top='curl -X POST https://dnsapi.cn/Batch.Record.Modify -d "login_token=LOGIN_TOKEN&format=json&record_id=RECORD_ID&change=record_type&change_to=A&value='+getip()+'"' def change_dnspod(cmds): os.popen(cmds) if __name__ == '__main__': change_dnspod(change_jefggw_top) print('修改dnspod记录完毕!')
–调用dnspod API修改记录–
curl -X POST https://dnsapi.cn/Batch.Record.Modify -d "login_token=LOGIN_TOKEN&format=json &record_id=RECORD_ID&change=record_type&change_to=A&value=104.27.198.160"
–curl版本的–
如何获取相关参数请参考官方API文档…
更多的
使用CFP后可以解锁更多的玩法(如源加速),研究明白了再开文。