前言

我近半年来被github的抽风虐得没脾气了,虽然我有代理的方式来上网,但代理速度并不理想,而且有时代理服务一起跟着抽风。这时候,我会搜索“github访问不了”相关题材,其中有“Github镜像服务器加速版”的,但这种是readonly的,不适合要提交代码到github的人群;也有“ipaddress.com”查找ip然后写到host文件的,但查到的ip,并不是适合很有网络环境,或者这个ip一下子也抽风了。

FastGithub

如果拿到github的大量ip数据,我们可以写程序来检测哪些ip可用,哪些ip访问速度最佳,然后编写一个本地版的dns服务,当要解析github相关时,返回这个最佳ip,这就解决了github抽风的问题。
于是我根据这个原理,又闭关几天不吃不喝,将老夫多年练就的网络通讯技术功力融入其中,100+的commits之后,终于写出FastGithub这个软件,好东西自然要分享,好代码也自然也开源。

功能对比

方案 合法性 可靠性 完整性 共享性 无服务器 免费
FastGithub YES YES YES YES YES YES
hosts文件 YES NO NO NO YES YES
vpn代理 NO YES YES NO NO NO
github镜像插件 YES YES NO YES YES YES

名词解释:

  • 合法性:是否符合中华人民共和国的相关法律;

  • 可靠性:是否能稳定的访问到github;

  • 完整性:是否能双向的获取和提交github资源;

  • 共享性:是否能在局域网的一台设备部署其它设备也受益;

  • 无服务器:不需要直接或间接购买中转服务器,流量直达;

功能说明

google cdn替换

将 Google CDN 替换为国内的。类似的浏览器插件是ReplaceGoogleCDN,fastGithub轻松实现了可配置的类似功能,且是整个电脑全局生效(不仅仅是浏览器)。

github 100%加速

hosts文件方案不能解决tcp rst的问题,github镜像方案不能解决github登录和git push的问题,fastgithub可以做到原生的使用github的所有功能。

stackoverflow加速

stackoverflow除了引用google cdn资源,用户头像等还使用了其它cdn

codeproject加速

stackoverflow除了引用google cdn资源,用户头像等还使用了其它cdn

v2ex加速

可以无代理稳定访问v2ex

其它

你可以阅读源代码里面的其它配置样例,依葫芦画瓢配置其它站点。

配置介绍

{"Dns": {"UpStream": "114.114.114.114", // 上游dns"GithubTTL": "00:10:00", // github相关域名解析结果的存活时长"SetToLocalMachine": true // 是否设置本机使用此dns(仅支持windows)},"Github": {"Lookup": { // ip查找"Domains": [ // 查找的域名,下面是github最主要的域名"github.com","api.github.com","collector.githubapp.com","github.githubassets.com","raw.githubusercontent.com","avatars.githubusercontent.com","favicons.githubusercontent.com"],"IPAddressComProvider": {"Enable": true // 是从启用从address.com查找ip},"GithubMetaProvider": {"Enable": true, // 是否从github获取ip列表"MetaUri": "https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json"},"PublicDnsProvider": {"Enable": true, // 是否需要从dns服务器查找ip"Dnss": [ // dns服务器列表"1.2.4.8","8.8.8.8","223.5.5.5","123.125.81.6","180.76.76.76","119.29.29.29","208.67.220.220","114.114.114.114"]}},"Scan": {"FullScanInterval": "02:00:00", // 完整扫描时间间隔"ResultScanInterval": "00:01:00", // 结果扫描时间间隔"TcpScan": {"Timeout": "00:00:01", // tcp扫描超时时间"CacheExpiration": "00:30:00" // 扫描结果缓存时长},"HttpsScan": {"Timeout": "00:00:05", // https扫描超时时间"ConnectionClose": false, // 是否使用https短连接"Rules": { // 域名扫描规则,缺失的域名,将默认HEAD请求到域名的根路径"github.com": {"Method": "HEAD","Path": "/xljiulang/FastGithub"},"github.githubassets.com": {"Method": "HEAD","Path": "/favicons/favicon.png"},"raw.githubusercontent.com": {"Method": "HEAD","Path": "/xljiulang/FastGithub/master/README.md"},"avatars.githubusercontent.com": {"Method": "HEAD","Path": "/u/8308014?s=40&v=4"},"favicons.githubusercontent.com": {"Method": "HEAD","Path": "/github.com"}}}}},"Logging": {"LogLevel": {"Default": "Information","System": "Warning","Microsoft": "Warning"}}
}

使用方法

本机使用

  • 运行FastGithub程序,本机的网络适配器的dns会自动变成127.0.0.1

  • 如果网络适配器的dns没有变成127.0.0.1,请手工修改网络适配器的dns

局域网服务器使用(推荐)

  • 在局域网服务器运行FastGithub程序

  • 手工修改你电脑的网络适配器的dns,值为局域网服务器的ip

以windows服务运行

以管理员身份运行cmd,键入如下命令,其中D:\Softs为软件实际目录

  • D:\Softs\FastGithub.exe start // 安装并启动服务

  • D:\Softs\FastGithub.exe stop // 卸载并删除服务

源代码与软件发布

源代码

https://github.com/dotnetcore/FastGithub