讓Github暢通無阻,FastGithub1.0.0發布
- 2021 年 6 月 21 日
- 筆記
前言
我近半年來被github的抽風虐得沒脾氣了,雖然我有代理的方式來上網,但代理速度並不理想,而且有時代理服務一起跟著抽風。這時候,我會搜索「github訪問不了」相關題材,其中有「Github鏡像伺服器加速版」的,但這種是readonly的,不適合要提交程式碼到github的人群;也有「ipaddress.com」查找ip然後寫到host文件的,但查到的ip,並不是適合很有網路環境,或者這個ip一下子也抽風了。
FastGithub
如果拿到github的大量ip數據,我們可以寫程式來檢測哪些ip可用,哪些ip訪問速度最佳,然後編寫一個本地版的dns服務,當要解析github相關時,返回這個最佳ip,這就解決了github抽風的問題。
於是我根據這個原理,又閉關幾天不吃不喝,將老夫多年練就的網路通訊技術功力融入其中,100+的commits之後,終於寫出FastGithub這個軟體,好東西自然要分享,好程式碼也自然也開源。
功能介紹
超大量的IP資源
FastGithub從github、各家公共dns伺服器、ipaddress.com查找github相關的2w+個ip,這個查找工作,每間隔2小時之後重新進行一次。
快速的ip檢測
FastGithub使用並行IO非同步,快速檢測ip的443埠是否開放,在速度與系統資源佔用尋求一個平衡點,垃圾配置的電腦,cpu佔用也不超過1%,但每秒可檢測的ip至少為cpu核心數*2
微小的頻寬佔用
FastGithub的https掃描功能,會保持與復用http連接5分鐘,同時使用HEAD請求掃描,頻寬佔用幾乎不影響到系統。
智慧的DNS設置
FastGithub能在多網路介面的電腦上選擇用於上外網的一個網路介面,修改其dns地址為FastGithub提供的127.0.0.1,關閉FastGithub之後,dns地址恢復為原值。
多平台支援
FastGithub基於.net6編寫,支援win-x86、win-x64、linux-x64和osx-x64,同時在windows上,還支援以windows服務運行,自帶將自身安裝為windows服務安裝和卸載的啟動命令。
支援加速其它域名
默認配置是為github專門配置的,但可以修改配置,用於支援非github的其它域名的抽風病,實際上github也不僅僅使用github.com這個域名。
配置介紹
{
"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": "//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 // 卸載並刪除服務
源程式碼與軟體發布
源程式碼
軟體發布