对于国内的同学来说,如果不挂代理,访问github是不太稳定,下载巨慢,网上也有很多的github加速方法,如果你也想拥有一个属于自己独享的github加速,可以按照此教程(基于开源项目gh-proxy)。

  1. 登陆你的cloudflare账号,点击左边侧栏的Workers,然后点击创建服务


服务名称填上你的,随便起,链接上会体现的,其他的默认不动,填完点击创建服务。


然后点击快速编辑。

复制下面的代码粘贴,保存并部署。

'use strict'/*** static files (404.html, sw.js, conf.js)*/
const ASSET_URL = 'https://hunshcn.github.io/gh-proxy/'
// 前缀,如果自定义路由为example.com/gh/*,将PREFIX改为 '/gh/',注意,少一个杠都会错!
const PREFIX = '/'
// git使用cnpmjs镜像、分支文件使用jsDelivr镜像的开关,0为关闭,默认开启
const Config = {jsdelivr: 1,cnpmjs: 1
}/** @type {RequestInit} */
const PREFLIGHT_INIT = {status: 204,headers: new Headers({'access-control-allow-origin': '*','access-control-allow-methods': 'GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS','access-control-max-age': '1728000',}),
}const exp1 = /^(?:https?:\/\/)?github\.com\/.+?\/.+?\/(?:releases|archive)\/.*$/i
const exp2 = /^(?:https?:\/\/)?github\.com\/.+?\/.+?\/(?:blob|raw)\/.*$/i
const exp3 = /^(?:https?:\/\/)?github\.com\/.+?\/.+?\/(?:info|git-).*$/i
const exp4 = /^(?:https?:\/\/)?raw\.(?:githubusercontent|github)\.com\/.+?\/.+?\/.+?\/.+$/i
const exp5 = /^(?:https?:\/\/)?gist\.(?:githubusercontent|github)\.com\/.+?\/.+?\/.+$/i
const exp6 = /^(?:https?:\/\/)?github\.com\/.+?\/.+?\/tags.*$/i/*** @param {any} body* @param {number} status* @param {Object<string, string>} headers*/
function makeRes(body, status = 200, headers = {}) {headers['access-control-allow-origin'] = '*'return new Response(body, {status, headers})
}/*** @param {string} urlStr*/
function newUrl(urlStr) {try {return new URL(urlStr)} catch (err) {return null}
}addEventListener('fetch', e => {const ret = fetchHandler(e).catch(err => makeRes('cfworker error:\n' + err.stack, 502))e.respondWith(ret)
})function checkUrl(u) {for (let i of [exp1, exp2, exp3, exp4, exp5, exp6 ]) {if (u.search(i) === 0) {return true}}return false
}/*** @param {FetchEvent} e*/
async function fetchHandler(e) {const req = e.requestconst urlStr = req.urlconst urlObj = new URL(urlStr)let path = urlObj.searchParams.get('q')if (path) {return Response.redirect('https://' + urlObj.host + PREFIX + path, 301)}// cfworker 会把路径中的 `//` 合并成 `/`path = urlObj.href.substr(urlObj.origin.length + PREFIX.length).replace(/^https?:\/+/, 'https://')if (path.search(exp1) === 0 || path.search(exp5) === 0 || path.search(exp6) === 0 || !Config.cnpmjs && (path.search(exp3) === 0 || path.search(exp4) === 0)) {return httpHandler(req, path)} else if (path.search(exp2) === 0) {if (Config.jsdelivr) {const newUrl = path.replace('/blob/', '@').replace(/^(?:https?:\/\/)?github\.com/, 'https://cdn.jsdelivr.net/gh')return Response.redirect(newUrl, 302)} else {path = path.replace('/blob/', '/raw/')return httpHandler(req, path)}} else if (path.search(exp3) === 0) {const newUrl = path.replace(/^(?:https?:\/\/)?github\.com/, 'https://github.com.cnpmjs.org')return Response.redirect(newUrl, 302)} else if (path.search(exp4) === 0) {const newUrl = path.replace(/(?<=com\/.+?\/.+?)\/(.+?\/)/, '@$1').replace(/^(?:https?:\/\/)?raw\.(?:githubusercontent|github)\.com/, 'https://cdn.jsdelivr.net/gh')return Response.redirect(newUrl, 302)} else {return fetch(ASSET_URL + path)}
}/*** @param {Request} req* @param {string} pathname*/
function httpHandler(req, pathname) {const reqHdrRaw = req.headers// preflightif (req.method === 'OPTIONS' &&reqHdrRaw.has('access-control-request-headers')) {return new Response(null, PREFLIGHT_INIT)}const reqHdrNew = new Headers(reqHdrRaw)let urlStr = pathnameif (urlStr.startsWith('github')) {urlStr = 'https://' + urlStr}const urlObj = newUrl(urlStr)/** @type {RequestInit} */const reqInit = {method: req.method,headers: reqHdrNew,redirect: 'manual',body: req.body}return proxy(urlObj, reqInit)
}/**** @param {URL} urlObj* @param {RequestInit} reqInit*/
async function proxy(urlObj, reqInit) {const res = await fetch(urlObj.href, reqInit)const resHdrOld = res.headersconst resHdrNew = new Headers(resHdrOld)const status = res.statusif (resHdrNew.has('location')) {let _location = resHdrNew.get('location')if (checkUrl(_location))resHdrNew.set('location', PREFIX + _location)else {reqInit.redirect = 'follow'return proxy(newUrl(_location), reqInit)}}resHdrNew.set('access-control-expose-headers', '*')resHdrNew.set('access-control-allow-origin', '*')resHdrNew.delete('content-security-policy')resHdrNew.delete('content-security-policy-report-only')resHdrNew.delete('clear-site-data')return new Response(res.body, {status,headers: resHdrNew,})
}

把复制的代码粘贴到左边处替换所有代码,先点保存部署,然后再点到发送。如果显示200 OK的话就成算成功了,你可以复制你的链接分享给你的朋友或者自己做github加速用了。

输入连接打开就可以进行加速下载了,如下:

本教程基于开源项目gh-proxy:https://github.com/hunshcn/gh-proxy。

基于Cloudflare搭建属于自己的GitHub加速站,github下载无忧相关推荐

  1. github加速-解决GitHub访问速度很慢的问题

    第一步 网站链接 输入 github.com 选择TIL值最小的,即延迟最小相应速度最快. 第二步 修改hosts文件,路径: C:\Windows\System32\drivers\etc 在hos ...

  2. Windows基于Nginx搭建RTMP流媒体服务器(附带所有组件下载地址及验证方法)

    RTMP服务时常用于直播时提供拉流推流传输数据的一种服务.前段时间由于朋友想搭建一套直播时提供稳定数据传输的服务器,所以就研究了一下如何搭建及使用. 1.下载nginx 首先我们要知道一般nginx不 ...

  3. 加速国内 Github 访问,下载的9种方案!

    1.GitHub 镜像访问 ​​​​​​​这里提供两个最常用的镜像地址: https://github.com.cnpmjs.org https://hub.fastgit.org 也就是说上面的镜像 ...

  4. 加速国内 Github 访问,下载,的9种方案!

    原文参考 https://mp.weixin.qq.com/s/ptFBjWXj88fsI3Oh6PghRA 1. GitHub 镜像访问 这里提供两个最常用的镜像地址: https://github ...

  5. GitHub加速插件

    GitHub加速插件 GitHub加速插件背景简介 GitHub加速插件简介 GitHub加速插件使用方法 GitHub加速插件背景简介 作为一名开发者那就没有不知道Github的,因为它是一个巨大的 ...

  6. 国内GitHub加速clone方法

    GitHub加速 在github上下载clone源码过慢的问题,甚至失败问题.加速解决方案如下: 方法一.使用"码云"中转下载. 使用'码云'平台做中转,先将项目导入'码云',再从 ...

  7. 2022目前三种有效加速国内Github

    前言 利用镜像下载 通过代理网站下载 Gitee中转fork仓库下载 修改 HOSTS 文件进行加速 梯子(略) 利用镜像下载 第一种 安装油猴插件和脚本 油猴插件 https://chrome.go ...

  8. github 加速(基于gitee)

    github 加速(基于gitee) 思路 将github上的代码挪到码云gitee上,从码云上克隆到本地会快很多.若想将本地修改推送到github,可以修改本地git的config文件,将远端地址改 ...

  9. 利用Github+jsDelivr搭建自己的免费CDN加速

    利用Github+jsDelivr搭建自己的免费CDN加速 一.CDN百度百科: ​ CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智 ...

最新文章

  1. urllib使用cookies(下载,提取)
  2. Go语言 命令行解析(二)
  3. 3D游戏引擎设计 实时计算机图形学的应用方法 第2版 pdf 带索引书签目录
  4. [Pku 2774] 字符串(六) {后缀数组的构造}
  5. .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示
  6. 337. 打家劫舍 III(JavaScript)
  7. h桥程序控制c语言,H桥电路原理及直流电机驱动编程
  8. python之单例模式
  9. 计算入瞳、出瞳位置及孔径大小
  10. 组合最优化——期中总结
  11. 在线文档转换接口 word,excel,ppt等在线文件转pdf、png
  12. SSRF---gopher和dict打redis
  13. [0CTF 2016]piapiapia
  14. 达叔的游戏框架(二) 得到其他模块的方式
  15. 亲密关系科学(03)夫妻相处的智慧
  16. 半同步/半异步模式,半同步半反应堆reactor模式
  17. 算法时间复杂度分析——大O、大Ω、大θ、小o,小ω
  18. hdfs配置文件(hdfs.site.xml)详解
  19. char型与int的相互转化
  20. 计算机魅力沈阳一日游教案,沈阳版小学信息技术教案五年级上册全册教案

热门文章

  1. 游戏编程入门(9):开发 Henway(小鸡过马路) 游戏
  2. 远程登陆 的相关问题 (windwos server )
  3. 研究生和本科生学习的差别
  4. Java 北大青鸟 第一学期 第二章 上机练习
  5. 干货|ACCA F2经济订货批量(EOQ)
  6. java 记录错误日志文件_java日志记录错误的文件_方法_行号_报错信息
  7. 下午尝试了php上床文件到服务器,终于搞定了。
  8. python开发面向对象基础:人狗大战学面向对象
  9. flink实时生产维度表
  10. 三元一次方程组计算机解法,math 三元一次方程组的解法