gh-proxy+TamperMonkey实现优雅的GitHub加速

gh-proxy+TamperMonkey实现优雅的GitHub加速

善用GitHub加速,码代码快人一步。

前言

由于众所周知的原因,在使用GitHub时常常会遇到图片无法加载、仓库克隆慢到只有几KB/s等问题。目前已经有许多方案可以实现加速访问。这篇文章除了简要列举已有的部分方法外,重点介绍通过gh-proxy项目搭配应用于GitHub的油猴脚本实现一种更为优雅的加速下载方案。

已有的一些加速方法

目前常见的加速方案有修改hosts文件、利用Gitee导入、国内GitHub全站镜像等,各有千秋。

查IP+修改host

直接查找真实IP地址,修改hosts文件以避开DNS污染。

步骤

  1. 使用https://www.ipaddress.com/来查找github的IP(主要是raw.githubusercontent.com)

  2. 修改本地hosts文件

  3. 刷新DNS缓存:ipconfig /flushdns

缺陷

  • 不稳定,IP地址可能变化
  • 修改hosts文件较为麻烦且有风险
  • 整体操作对新手不友好

Gitee仓库导入

Gitee是国内的git仓库托管服务,最近更是被工信部钦定用于建设中国独立的开源托管平台。同时它也贴心地提供了从github仓库导入gitee的功能,导入过程在服务器端进行只需稍稍等待,而导入完成之后即可用gitee的仓库地址下载/克隆,速度可以达到国内正常访问水平。

步骤

  1. 注册Gitee帐号并登录
  2. 打开导入页面:https://gitee.com/projects/import/url
  3. 填入要导入的github仓库地址,导入仓库
  4. 从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

有两种使用方法:

  1. 在Demo页面输入github的文件、releases等链接,点击下载即可加速下载。
  2. 也可以直接在复制的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。

安装

  1. 无论如何,首先你需要为你的浏览器安装油猴脚本管理器
  2. 已经安装油猴的浏览器里点击此处链接,如果一切顺利,会跳转到油猴的脚本安装页面,点击“安装”即可。
  3. 如果有其他疑问,可以访问项目地址查看更多https://github.com/du33169/gh-proxy-buttons

再见了,14KB/s的龟速!

0%