前言

突然间 SM.MS图床 的图片访问不了,同时也发现 https://s2.loli.net/ 也访问不了。通过百度找到了这篇文章:【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法) ,从而解决了问题。

那么先进行排查,找出问题所在:

  • 先确认下我的电脑是具有外网能力的:很简单,因为我都可以访问百度等网页内容
  • 再用浏览器访问一下图片的URL地址,发现报错了,提示如下,错误是 对方关闭了链接,无法访问此网站
  • 有了上面的报错,我决定排查一下 s2.loli.net 的网络畅通情况,这里使用 ping 命令,却发现所返回来的 IP地址 是 127.0.0.1

有了以上几个简单排查,我基本确认了,问题可能出在 域名解析 上面;可能是我的路由器网络偶尔抽风了,导致 s2.loli.net 域名的解析出问题了,所以图片对应的URL就无法访问,自然图片也就无法加载出来了。

解决

有了上面的基础判断,基本思路就是想办法把 域名 s2.loli.net 解析到正确的IP上面。

这样就需要修改 C:\Windows\System32\drivers\etc\hosts 这个文件,而现在的关键点在于找到 s2.loli.net 这个域名解析的正确IP地址。

回到上一步的需求,如何找到 域名 s2.loli.net 对应的IP地址,这里推荐使用 Linux 下的 nslookup 命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$nslookup s2.loli.net
Server: 192.168.3.166
Address: 192.168.3.166#53

Non-authoritative answer:
s2.loli.net canonical name = s2.loli.net.cdn.cloudflare.net.
Name: s2.loli.net.cdn.cloudflare.net
Address: 172.67.69.40
Name: s2.loli.net.cdn.cloudflare.net
Address: 104.26.0.190
Name: s2.loli.net.cdn.cloudflare.net
Address: 104.26.1.190
Name: s2.loli.net.cdn.cloudflare.net
Address: 2606:4700:20::681a:be
Name: s2.loli.net.cdn.cloudflare.net
Address: 2606:4700:20::681a:1be
Name: s2.loli.net.cdn.cloudflare.net
Address: 2606:4700:20::ac43:4528

从上面的解析输出,我们可以知道,这个域名对应很多个IP地址,我们只需要选择一个就好了,比如 104.26.1.190

然后在 C:\Windows\System32\drivers\etc\hosts 文件的尾部,按这样加上解析规则即可。这里需要注意的是修改此文件需要管理员权限

1
2
3
4
5
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost

104.26.1.190 s2.loli.net

修改完了之后,可能不会马上就恢复,可以尝试把浏览器关闭,再打开,重新输入图片的地址,应该就可以解析到图片了。

总结

一般来说,遇到图片加载不出来,有两种情况:

  • 要么就是本地的网络问题:先确保本地网络畅通,再查浏览器图片的预览,从而判断是不是域名解析出了问题。
  • 要么就是服务器端图床限制:比如禁止外链加载、防盗;或者图传服务挂了,又或者是自建的图床云服务欠费了等等之类的原因。

但这里也有个问题,是否每次我都需要去修改hosts文件啊?改天如果网络的域名解析恢复正常了,那个hosts文件,我能恢复回去吗?