前言
由于之前用github作为第三方图床,为Typora快速上传了不少图片,以前一直用科技与狠活,访问都很正常。然而由于不知名原因,暂时用不了科技上网,再访问Github上的图片,问题就出来了。最直观的感感受就是:Github 图片都加载不出来了,情况如下:
这是这前测试的时候就成功了的图片,一旦失去科技的力量,访问github立马就出问题了。就是以前上传的图片都加载失败,显示一个裂开的图片。
谷歌浏览器F12
测试,发现一堆红字错误提示,如Failed to load resource: net::ERR_CERT_COMMON_NAME_INVALID
,不止是图片无法显示,就连 assets js等文件都一样加载不出来。如图:
搞笑的是,因为Picgo上传图片是会自动套CDN的,因此带CDN的地址是能访问的,但直接在github上访问却是失败的,加载不出来。
一、图片不显示原因分析
Github 多种文件加载失败的原因很简单,肯定是和“墙”有关系了。出现但不紧限于以下情况:
加载图片丢失(图片裂开)图片有时能显示,有时又不能显示出来
打开调试后台,发现github相关的子域名,很多文件不能被加载
以上这几种情况,都是DNS解析出问题了,墙哥发力。
因为之前有科技与狠活的时候,可是访问得好好的,不存在像这种加载不出来,或者文件加载中一直转圈圈的情况。
二、解决图片显示不出来的办法
知道了是 墙哥
的问题,那肯定就是DNS污染这块的事了。知道原因,问题解决思路就非常清晰了,无非就两点:
- 1.解决DNS污染问题,Windows用户 可通过hosts文件直接指定ip 与域名。
- 2.修复或整个新的
科技
,把github 被墙的子域名加入强制走代理访问列表。
两种方法,因为博主的工作机,是专门搭配的旁路由上网,因此旁路由固件肯定有代理插件的。
直接在插件中的强制走代理的域名
中,分别添加github相关的域名,就全都强制走代理访问,直接把所有问题解决,一了百了。
因为以前长期积累下来的操作,强制走代理对博主来说是最简单的解决办法,只需要提供一个可用的v2ray服务器即可。
1. 强制走代理访问
在强制走代理的域名
选项卡中,添加
github.io
github.com
raw.githubusercontent.com
最后旁路由,开启科学上网即可修复 Github 上面的图片无法加载/显示问题。
如果没设置旁路由,Windows 10 的话,代理软件上网模式要改为“全局”上网(博主这里使用的软件是V2rayN,不同软件设置不一样,但都大差不差),才能正常访问github图片而不报错。
但这最直接的问题就是,全部软件或网页都要走代理通道向外访问,有时候访问国内的网站,速度慢得让你吐了。
2. 修改hosts文件
Windows 通过修改hosts文件来解决github图片加载出错的问题。
主要思路就是跳过运营商的dns解析,直接在本地的hosts文件对github的所有被污染子域名进行解析。
关于dns被污染的问题,以前文章有深入探讨过,可参考阅读
一般这类DNS被污染的问题,都能通过修改hosts文件来解决,只要找到域名对应的ip即可。
Windows 10 中, hosts文件所在位置:
C:\Windows\System32\drivers\etc\hosts
打开hosts文件
,在文件结尾添加以下代码
# GitHub Start
140.82.113.3 github.com
140.82.113.3 gist.github.com
185.199.108.153 assets-cdn.github.com
185.199.109.153 assets-cdn.github.com
185.199.110.153 assets-cdn.github.com
185.199.111.153 assets-cdn.github.com
185.199.108.153 raw.githubusercontent.com
185.199.109.153 raw.githubusercontent.com
185.199.110.153 raw.githubusercontent.com
185.199.111.153 raw.githubusercontent.com
185.199.108.133 gist.githubusercontent.com
185.199.109.133 gist.githubusercontent.com
185.199.110.133 gist.githubusercontent.com
185.199.111.133 gist.githubusercontent.com
185.199.108.133 cloud.githubusercontent.com
185.199.109.133 cloud.githubusercontent.com
185.199.110.133 cloud.githubusercontent.com
185.199.111.133 cloud.githubusercontent.com
185.199.108.133 camo.githubusercontent.com
185.199.109.133 camo.githubusercontent.com
185.199.110.133 camo.githubusercontent.com
185.199.111.133 camo.githubusercontent.com
185.199.108.133 avatars0.githubusercontent.com
185.199.108.133 avatars1.githubusercontent.com
185.199.108.133 avatars2.githubusercontent.com
185.199.108.133 avatars3.githubusercontent.com
185.199.108.133 avatars4.githubusercontent.com
185.199.108.133 avatars5.githubusercontent.com
185.199.108.133 avatars6.githubusercontent.com
185.199.108.133 avatars7.githubusercontent.com
185.199.108.133 avatars8.githubusercontent.com
# GitHub End
添加完,正常情况就可以加载github被污染的资源了,不会再出现图片或文件加载错误的情况。
修改hosts文件的方式好处是不用配置代理。
坏处是域名对应的ip是会变的,什么时候失效是个未知数,时间久了以后,可能失效的IP越来越多,到时候又要修改。
此种情况只适合喜欢折腾的朋友用,或者临时用一下的人。
如何更新github 子域名解释 ip
要一直通过修改hosts文件的方法来解决github图片文件显示不出来的问题,也许你还得掌握自己更新hosts文件中对应ip的方法。
你需要一个查域名对应IP的网址:https://www.ipaddress.com/
在网站中依次检查上面的ip是否有变化:
如输入:avatars2.githubusercontent.com
,
可以看到,现在有4个可用于解释avatars2.githubusercontent.com
的ip,往下翻即可找到。
找到对应的IP后,将其更新或追加到 hosts文件中即可完成任务。
三、踩过的坑
如果按上面2种方法设置过后,过种一切正常,还是出现github资源加载失败的情况,可能是缓存误的事。
Windows的话, 可以在cmd中
用 ipconfig /flushdns
更新缓存后再重新测试。
还是不行的话,可能是你浏览器的缓存问题,换个浏览器测试或者清除浏览器的缓存,或者开匿名模式。
几个ipconfig命令
解释:
ipconfig /displaydns # 显示dns缓存
ipconfig /flushdns # 刷新DNS记录
ipconfig /renew # 重请从DHCP服务器获得IP
总结
其实引发 GitHub
资源加载失败的最主要原因就是墙在作妖了。
解决思路也就两种,要么强制走代理,要么本地hosts解析,文中已有详细记录。
后续还出现这种图片不显示,assets文件加载失败,读图一直转圈圈的问题,请检查代理或都 hosts文件的ip是否失效。