前言

Github作为全球最大的开源平台,有很多优秀的开源项目,可以在上面找到很多参考代码,是程序员学习交流平台。

为什么会时常访问失败呢?

主要是因为我们在请求GitHub的网址时,会先向DNS服务器发送一个请求,DNS服务器解析获取到对应的IP地址,然后发起连接。

被拦截主要原因也是Github属于国外站点,偶尔会被国内神秘怪圈吞噬;而为了减少解析次数,DNS会做缓存,将已有的IP直接返回,此时该IP可能已经被拦截,继续使用DNS缓存访问会一直异常,可以直接ping一下看看:

ping.png

解决办法

绕过DNS解析

最简单的办法当然是既然DNS解析会出错,那我们自己解析好然后访问就好了,那怎么自己添加解析呢?

那就是修改hosts文件,hosts文件是记录常用域名与对应的IP,也是用来做域名解析,且优先级高于DNS解析。常见的用法也包括修改hosts文件达到测试环境和线上环境切换的效果,就是测试的时候添加规则将域名指向内网;还有就是恶意软件常修改hosts来劫持域名,比如将正常导航网页的IP填成到某数字导航IP。

常用的hosts文件位置:

Windows 系统:C:\Windows\System32\drivers\etc\hosts

linux 系统: /etc/hosts

mac/ios 系统: /etc/hosts

手动获取IP地址:

dns.png

  • 添加到对应的hosts文件即可:

addhost.png

  • 如果出现权限问题无法保存,可以将hosts文件复制到个人文档,修改后覆盖回去即可

那么问题来了,如果每次都这么修改就有点麻烦了,有没有工具自动完成呢,同志们早已给了办法

自动修改hosts

按照上面方法修改后可以访问Github了,就可以体验下Github的强大之处了

感谢GitHub加速器,让你“爱”上 GitHub项目作者,实时获取有效IP并发布到https://raw.hellogithub.com/hosts

项目中还提到可以使用Switch hosts quickly!自动切换hosts,添加如下规则开启即可

switch hosts.png

缓存刷新

如果使用方法一之后未能正常访问GitHub,还可以刷新一下系统DNS缓存和浏览器DNS缓存

刷新系统DNS缓存

$ ipconfig /flushdns

清除浏览器DNS缓存

chrome内核浏览器为例,打开chrome://net-internals/#dns页面,点击Clear host cache即可

终极方案

上面说到原因是国内神秘怪圈吞噬导致访问失败,那么可以搭一个梯(也就是fq)到圈外进行访问,具体可以查看使用v2rayN免费科学上网 | Hackt0’s Blog