解决github访问失败
前言
Github作为全球最大的开源平台,有很多优秀的开源项目,可以在上面找到很多参考代码,是程序员学习交流平台。
为什么会时常访问失败呢?
主要是因为我们在请求GitHub的网址时,会先向DNS服务器发送一个请求,DNS服务器解析获取到对应的IP地址,然后发起连接。
被拦截主要原因也是Github属于国外站点,偶尔会被国内神秘怪圈吞噬;而为了减少解析次数,DNS会做缓存,将已有的IP直接返回,此时该IP可能已经被拦截,继续使用DNS缓存访问会一直异常,可以直接ping一下看看:
解决办法
绕过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地址:
- 手动获取IP地址也只是通过多台服务器获取到的DNS解析情况来选择最优解,可以使用Dns查询 - 站长工具 (chinaz.com)查找TTL值最小的响应IP
- 添加到对应的hosts文件即可:
- 如果出现权限问题无法保存,可以将
hosts
文件复制到个人文档,修改后覆盖回去即可
那么问题来了,如果每次都这么修改就有点麻烦了,有没有工具自动完成呢,同志们早已给了办法
自动修改hosts
按照上面方法修改后可以访问Github了,就可以体验下Github的强大之处了
感谢GitHub加速器,让你“爱”上 GitHub项目作者,实时获取有效IP并发布到https://raw.hellogithub.com/hosts
项目中还提到可以使用Switch hosts quickly!自动切换hosts
,添加如下规则开启即可
缓存刷新
如果使用方法一之后未能正常访问GitHub,还可以刷新一下系统DNS缓存和浏览器DNS缓存
刷新系统DNS缓存
$ ipconfig /flushdns |
清除浏览器DNS缓存
chrome内核浏览器为例,打开
chrome://net-internals/#dns
页面,点击Clear host cache即可
终极方案
上面说到原因是国内神秘怪圈吞噬导致访问失败,那么可以搭一个梯(也就是fq)到圈外进行访问,具体可以查看使用v2rayN免费科学上网 | Hackt0’s Blog