讓Github暢通無阻,FastGithub1.0.0釋出

jiulang發表於2021-06-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": "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 // 解除安裝並刪除服務

原始碼與軟體釋出

原始碼

github上的FastGithub

軟體釋出

gitee上的FastGithub

相關文章