gh-proxy+TamperMonkey实现优雅的GitHub加速
gh-proxy+TamperMonkey实现优雅的GitHub加速
善用GitHub加速,码代码快人一步。
前言
由于众所周知的原因,在使用GitHub时常常会遇到图片无法加载、仓库克隆慢到只有几KB/s等问题。目前已经有许多方案可以实现加速访问。这篇文章除了简要列举已有的部分方法外,重点介绍通过gh-proxy项目搭配应用于GitHub的油猴脚本实现一种更为优雅的加速下载方案。
已有的一些加速方法
目前常见的加速方案有修改hosts文件、利用Gitee导入、国内GitHub全站镜像等,各有千秋。
查IP+修改host
直接查找真实IP地址,修改hosts文件以避开DNS污染。
步骤
使用https://www.ipaddress.com/来查找github的IP(主要是raw.githubusercontent.com)
修改本地hosts文件
刷新DNS缓存:
ipconfig /flushdns
缺陷
- 不稳定,IP地址可能变化
- 修改hosts文件较为麻烦且有风险
- 整体操作对新手不友好
Gitee仓库导入
Gitee是国内的git仓库托管服务,最近更是被工信部钦定用于建设中国独立的开源托管平台。同时它也贴心地提供了从github仓库导入gitee的功能,导入过程在服务器端进行只需稍稍等待,而导入完成之后即可用gitee的仓库地址下载/克隆,速度可以达到国内正常访问水平。
步骤
- 注册Gitee帐号并登录
- 打开导入页面:https://gitee.com/projects/import/url
- 填入要导入的github仓库地址,导入仓库
- 从gitee下载/克隆
缺陷
- 需要跳转到gitee网站以及登录,大大增加了操作所需工作量
- gitee上的仓库不能同步更新,每次需要手动同步(不过gitee有一键同步的按钮)
- 导入无法导入Releases,对于只想下载使用并无帮助
站点镜像
目前已经有许多国内的GitHub镜像网站,完整同步github的内容和外观,可以像在GitHub上一样浏览,但是访问速度更快。
警告:请不要在镜像网站登录或者输入帐号密码,否则后果自负。
缺陷
- 无法登录,许多操作受限
- 平时的浏览过程中遇到的链接基本全部都是github,需要二次跳转
- 镜像网站中的许多链接(例如仓库地址)也仍然采用github的链接,在进行克隆等操作时仍然要手动替换链接
gh-proxy+油猴脚本
实际上,目前大部分的情况属于GitHub网站可以正常访问,但是图片、文件的加载、release文件的下载和仓库克隆的速度较慢。
接下来介绍的两种方式便是针对这些情况的解决方案,也是这篇文章介绍的重点。
gh-proxy
首先要介绍的是gh-proxy项目。
gh-proxy是一个通过镜像站点和CDN,或者cloudflare Worker来加速GitHub的项目。
Demo页面:https://gh.api.99988866.xyz/
项目地址:https://github.com/hunshcn/gh-proxy
有两种使用方法:
- 在Demo页面输入github的文件、releases等链接,点击下载即可加速下载。
- 也可以直接在复制的GitHub链接前加上这个Demo页面的地址(注意不要忘记最后的斜杠),然后使用各种下载工具等直接下载,速度更快。例如我想要下载Powershell的源代码,原始链接为https://github.com/PowerShell/PowerShell/archive/v7.0.3.zip,那么加上前缀后就是https://gh.api.99988866.xyz/https://github.com/PowerShell/PowerShell/archive/v7.0.3.zip,将这个拼接的链接直接粘贴到IDM、FDM或者迅雷等下载工具即可加速下载。
显然这个方法较为简洁, 但是仍然需要手动复制或者修改url。
既然已经有了这么方便的接口,那么实现一个更方便直观的入口应该并非难事。
似乎没有现成的轮子。本着自己动手丰衣足食的原则,我写了一个油猴脚本。
油猴脚本gh-proxy-buttons
项目地址:https://github.com/du33169/gh-proxy-buttons
这个油猴脚本利用gh-proxy,可以在GitHub网页实现如下的功能:
对于链接和文件,鼠标悬停时显示一个按钮,点击即可通过gh-proxy加速下载;
对于仓库地址(HTTPS),点击按钮后复制 带上加速前缀的 仓库地址,clone时可以直接粘贴使用。
效果图示如下:
Releases页面的下载按钮
悬停在文件下载链接时出现按钮,点击按钮可以通过代理下载或右键按钮复制链接用于下载器
代码页面的文件链接(不支持文件夹)
点击按钮通过代理下载或右键按钮复制链接
仓库地址的文本框
由于SSH形式的仓库地址不支持使用gh-proxy加速下载,所以只支持HTTPS的仓库地址。
悬停在HTTPS形式的仓库地址文本框时,点击可复制加上代理前缀的仓库链接(基于ClipboardJS)
完整仓库的压缩包下载
点击按钮通过代理下载或右键按钮复制链接
优点(开始吹牛)
- 不需要离开github原始页面或是进行打开其他网页等操作
- 不改变github原有页面的外观,在不使用时无存在感
- 鼠标悬浮时显示,移开后消失,操作简单直观
缺点
- 对于GitHub页面本身没有进行加速,但是大部分情况不影响正常使用。
- 如果使用Cloudflare Worker,免费版有10k每日请求数限制,但是目前绰绰有余;而且也可以自己注册创建Worker。
安装
- 无论如何,首先你需要为你的浏览器安装油猴脚本管理器。
- 在已经安装油猴的浏览器里点击此处链接,如果一切顺利,会跳转到油猴的脚本安装页面,点击“安装”即可。
- 如果有其他疑问,可以访问项目地址查看更多https://github.com/du33169/gh-proxy-buttons。
再见了,14KB/s的龟速!