前言

无兄弟,不篮球;无github,不代码。github和stackoverflow是程序员们的最爱,哪怕是github总是在抽疯,虐了程序员们千百遍,但他们还是想各种办法艰难地在github分享他们优秀的代码,进行pull push操作,下面分享程序员小Code的故事。

小Code发明了hosts大法

小Code是学习能力很强的同学,他通过网上搜索github抽疯缘由,得到的结论是dns解析的github时,返回了不理想的ip甚至是假ip,所以他决定用靠谱的平台来检索github的ip,然后写入hosts文件。

140.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的releases
  • qq群文件[307306673]

版权声明:本文为kewei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kewei/p/15047759.html