讓Github暢通無阻,FastGithub1.0.0發佈

前言

我近半年來被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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章