無兄弟,不籃球;無github,不代碼。github和stackoverflow是程序員們的最愛,哪怕是github總是在抽瘋,虐了程序員們千百遍,但他們還是想各種辦法艱難地在github分享他們優秀的代碼,進行pull push操作,下面分享程序員小Code的故事。
小Code發明了hosts大法#
小Code是學習能力很強的同學,他通過網上搜索github抽瘋緣由,得到的結論是DNS解析的github時,返回了不理想的ip甚至是假ip,所以他決定用靠譜的平臺來檢索github的ip,然后寫入hosts文件。
Copy140.82.114.3 github.com
185.199.109.153 assets-cdn.github.com
185.199.110.153 documentcloud.github.com
140.82.114.4 gist.github.com
185.199.110.133 gist.githubusercontent.com
185.199.108.154 github.githubassets.com
185.199.111.154 help.github.com
140.82.113.9 nodeload.github.com
185.199.109.133 raw.github.com
140.82.114.17 status.github.com
185.199.108.153 training.github.com
140.82.113.10 codeload.github.com
小Code發現這樣子之后,感覺改善了一些,還來不及沉浸在喜悅中,他將自己的hosts文件分享給了千千萬萬個需要的其他程序員同伴,于是他的hosts大法成為了普及率最高的辦法。
小Code殺死了hosts大法#
小code發現,hosts文件里面的ip要經常更新,有時一天不更新,第二天就不能用了。更可怕的發現是,明明他用的hosts是可以的,可其他同伴用了他的成果之后,反饋說沒有效果,每天都有無數個同伴,質問小code,你的大法不行啊!!小code一直覺得不可思議,為什么一樣的配置就不行。直到有一天,小code出差了,來到了某省的某個酒店,小code拿出他心愛的筆記本電腦,準備打開每天都要上的github,這時小code傻眼了,瀏覽器小轉圈圈,然后顯示“連接已重置”,無論小Code怎么掙扎,還是無法上github。
小Code來不及多想,他覺得他的發明不不但沒有解決千千萬萬個同伴的問題,而且帶了深深的互相傷害,于是他決定放棄hosts大法。可難的是,還有是有很多在網上搜索到了他的hosts大法,繼續被傷害的路上。
小Code發明了鏡像大法#
出來回來之后,小Code不吃不喝,尋找新的解決方案。小Code遠程到在某省的一個朋友電腦,使用瀏覽器f12來分析github訪問資源的加載情況,最后總結到:github.com這個域名一般能訪問,雖然偶爾中斷那么幾分鐘;而github的css、js、用戶頭像、releases下的附件,都無法加載。于是小Code定使用github鏡像網站,來給替代github的資源的下傳,為此小Code開發了瀏覽器插件,當github不抽瘋的那些時間縫隙里,讓用戶可以刷新github,然后他的插件修改github頁面,多顯示了一個“加速Pull”的按鈕,點擊這個按鈕,就是用鏡像網站來拉取。
小Code明白,他的這套發明,只能解決一點點問題,解決了下傳,但像小Code這種牛逼程序員,更多的時候,是把自己牛逼的代碼分享給別人,還不是在享用別人的代碼。但他自己的發明,卻不能解決自己遇到的問題,慶幸的是小Code工作地,還能push代碼到github,還不然他的這個鏡像大法瀏覽器插件的代碼,都不知道怎么提交到github了。
小Code請大Code幫忙#
小Code想到了他的師傅大Code,師傅多年一直在網絡編程里耕耘,說不定他有好辦法。大Code決定為小Code寫一個工具,解決小Code和千千萬萬個同伴的問題,同時把代碼分享,讓小Code來學習和提高水平。
大Code使用PostMan和Wireshark兩個工具結合,開始忙碌的分析了數據,從DNS解析數據包開始,到TCP握手,到TLS握手,他發現了兩個主要問題:DNS響應問題和TLS握手問題。問題找到后,他點了一支煙,抽完接著又點了半支,這是他準備要露手的前奏。
大Code祭出了他的工具#
大Code不喜歡吹牛,也不喜歡討論非技術問題。只知道他的工具,100%解決小Code的問題,把他的工具分享了出來,下面是他的工具一些介紹:
加速原理#
- 修改本機的dns服務指向FastGithub自身
- 解析匹配的域名為FastGithub自身的ip
- 請求不受污染的dns服務(dnscrypt-proxy)獲取域名的ip
- 使用得到的ip進行無或有SNI的https反向代理
加速站點#
github
- github.com
- githubstatus.com
- *.github.com
- *.github.io
- *.githubApp.com
- *.githubassets.com
- *.githubusercontent.com
- *github*.s3.amazonaws.com
stackoverflow
- ajax.googleapis.com -> gapis.geekzu.org/ajax
- fonts.googleapis.com -> fonts.geekzu.org
- themes.googleusercontent.com -> gapis.geekzu.org/g-themes
- fonts.gstatic.com -> gapis.geekzu.org/g-fonts
- secure.gravatar.com -> sdn.geekzu.org
- *.gravatar.com -> fdn.geekzu.org
- i.stack.imgur.com => 404
- lh*.googleusercontent.com => 404
- www.google.com => 404
工具下載#
github的:
https://github.com/xljiulang/FastGithub/releases