我近半年来被github的抽风虐得没脾气了,虽然我有代理的方式来上网,但代理速度并不理想,而且有时代理服务一起跟着抽风。这时候,我会搜索“github访问不了”相关题材,其中有“Github镜像服务器加速版”的,但这种是readonly的,不适合要提交代码到github的人群;也有“ipaddress.com”查找ip然后写到host文件的,但查到的ip,并不是适合很有网络环境,或者这个ip一下子也抽风了。
如果拿到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 替换为国内的。类似的浏览器插件是ReplaceGoogleCDN,fastGithub轻松实现了可配置的类似功能,且是整个电脑全局生效(不仅仅是浏览器)。
hosts文件方案不能解决tcp rst的问题,github镜像方案不能解决github登录和git push的问题,fastgithub可以做到原生的使用github的所有功能。
stackoverflow除了引用google cdn资源,用户头像等还使用了其它cdn
stackoverflow除了引用google cdn资源,用户头像等还使用了其它cdn
可以无代理稳定访问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
以管理员身份运行cmd,键入如下命令,其中D:\Softs为软件实际目录
D:\Softs\FastGithub.exe start // 安装并启动服务
D:\Softs\FastGithub.exe stop // 卸载并删除服务
源代码
https://github.com/dotnetcore/FastGithub