首页
归档
友链
关于
壁纸
直播
Search
1
电脑开机主板 CPU 故障灯亮,无法正常开关机
114 阅读
2
夏日小风扇,进来凉快一下叭!
61 阅读
3
破解 OpenWrite 微信导流
54 阅读
4
Windows11 5 月累计更新导致 .NET 无法使用
54 阅读
5
夏日小空调,进来凉快一下叭!
48 阅读
站点
好玩
其他
读书笔记
开发
登录
Search
标签搜索
总结
读书笔记
小工具
好玩分享
windows
Typecho
云空调
云风扇
github
git
Nginx
Firewall-cmd
Frp
VSCode
PowerShell
PC
SSH
JMeter
Redis
cdn
XiaoLu
累计撰写
37
篇文章
累计收到
3
条评论
首页
栏目
站点
好玩
其他
读书笔记
开发
页面
归档
友链
关于
壁纸
直播
搜索到
1
篇与
的结果
2022-05-20
jsDelivr CDN 切换到阿里云自建加速
问题简述jsdelivr 本来是个服务大众的好站,免费给大家提供加速服务。由于众所周知的原因,一些心怀不轨的人拿这个搞事情,建 TM 什么图床啊,托管什么站点啊,导致其丢失了中国区的备案。白嫖、真香,呵呵。言归正传啊,本站使用的主题有相当一部分的资源是挂在 jsdelivr 上的,事到如今不切换是不行了。通过 VSCode 打开主题目录搜索了一下,存在 170 多个引用。因此我通过一些网上搜索的 python 脚本实现了较为快速的迁移吧。操作步骤🍉 开启阿里 OSS 和 CDN 服务 网上的教程很多,我就不重复其他人的工作了。如果有时间的话,还是会写一篇详细的教程,讲清楚每一个步骤的作用,其中确实是有很多坑的,暂时就先默认大家已经开了服务了。🍉 提取主题所有 jsdelivr 引用🍉 批量下载 jsdelivr 引用 到本地🍉 上传文件到阿里 OSS🍉 修改主题相关引用的域名{message type="info" content="Chrome 插件 Clear Site Data 可以快速清除当前站点的缓存,调试时是必备之选。"/}{anote icon="chrome" href="https://chrome.google.com/webstore/detail/clear-site-data/aihgofjefdlhpnmeakpnjjeajofpcbhj" type="info" content="Clear Site Data 安装地址"/}提取 jsdelivr 引用首先通过 VSCode 打开站点主题目录,这里可以 clone 主题到本地修改后再上传或使用 VSCode SSH Remote 插件直接修改,推荐 第二种 方法。然后点击左侧图标,全局搜索 jsdelivr 关键字,选择 “ 在编辑器中打开 ”,按下 Ctrl + S 保存搜索记录到本地,命名为 links.txt新建如下内容的 python 脚本,修改 TAG1 和 TAG2 两处,TAG1是脚本要搜索的目录,新建一个空白文件夹,把上面的 links.txt 放进来;TAG2 是结果导出位置。这个脚本来自 csdn ayesawyerimport re import os # TAG 1 path=r'C:\\Users\\Nickel\\Desktop\\temp' file_path=[] for filename in os.listdir(path): file_path.append((os.path.join(path,filename))) print (file_path) for adress in file_path: file_object=open(adress,'rb') lines = file_object.readlines( ) file_object.close() new_lines=[] for x in lines: new_x = x.split( ) for i in new_x: try: data=i; data = data.decode('utf-8') match_obj=re.search(r"https://.*",data) if match_obj: new_lines.append(match_obj.group()) except: continue final=new_lines # TAG 2 file_2=open(r'D:\\result.txt','w+') for x in final: for k in range(len(x)): if (x[k]=="\""): x=x[:k] break; file_2.write(x) file_2.write('\n') file_2.close()上面导出的结果文件还需要二次简单修改,主要问题有:末尾可能会有单引号,逗号不包括 //cdn.hello.com/xxx 无协议头的链接不包括 http 协议链接批量下载{message type="info" content="由于原 jsdelivr cdn 的链接是有目录层次的,所以批量下载时的脚本要照顾到这一点"/}首先新建如下内容的 Python 脚本,这个脚本来自 csdn DarkAthenaimport urllib.request import requests import re, os # 基于 https://zhuanlan.zhihu.com/p/62876301 修改 def get_file(url): ''' 递归下载网站的文件 :param url: :return: ''' if isFile(url): print(url) try: download(url) except: pass else: urls = get_url(url) for u in urls: get_file(u) def isFile(url): ''' 判断一个链接是否是文件 :param url: :return: ''' if url.endswith('/'): return False else: return True hander=urllib.request.ProxyHandler({'http':'127.0.0.1:10809'}) opener=urllib.request.build_opener(hander) def download(url): ''' :param url:文件链接 :return: 下载文件,自动创建目录 ''' full_name = url.split('//')[-1] filename = full_name.split('/')[-1] dirname = "/".join(full_name.split('/')[:-1]) if os.path.exists(dirname): pass else: os.makedirs(dirname, exist_ok=True) urllib.request.urlretrieve(url, full_name) def get_url(base_url): ''' :param base_url:给定一个网址 :return: 获取给定网址中的所有链接 ''' text = '' try: text = requests.get(base_url).text except Exception as e: print("error - > ",base_url,e) pass reg = '<a href="(.*)">.*</a>' urls = [base_url + url for url in re.findall(reg, text) if url != '../'] return urls if __name__ == '__main__': with open('links.txt', 'r') as f: lines = f.readlines() url_list = [] for line in lines: get_file(line.strip('\n'))我在它的基础上添加了代理,因为不加代理没办法下载下来的hander=urllib.request.ProxyHandler({'http':'127.0.0.1:10809'}) opener=urllib.request.build_opener(hander)然后安装 requests 模块,通过 pip 或 conda 都可以pip install requests # 或者 conda install requests执行这个脚本会在当前目录下载 links.txt 中的链接,记得修改上述脚本中 links.txt 的路径后续到这里就很简单了:打开阿里云 OSS 控制台,选择上传目录,等待上传完毕测试 cdn 链接是否可用通过 VSCode 全局查找功能,批量修改 jsdelivr.net 域名为你的 cdn 加速域名小结不知道说啥,反正挺无语的。。。又是瞎折腾的一天
2022年05月20日
8 阅读
0 评论
0 点赞