不懂代码也会写Host!(三)如何查找某个域名的可用IP

转载请注明原始地址:http://wp.me/p3p7E3-JH

文章开始之前,说一个事:如果在文章中有某个方法我没讲到,那么可能是两个原因。一是这个方法众所周知,二是这个方法对于初级用户难度太高。如果你愿意分享,可以自己写一篇文章。就这样。

  • 通过域名查找IP

上两篇文章我们讲解了如何找到被封锁的域名,那么现在就得从域名中找出可用的IP地址,然后再写入Hosts表中。

一般来说,查找域名对应IP最简单的方法就是ping命令,可惜我们这么做似乎行不通……那么,就让别的地区来ping吧!以下提供若干网站:

https://cloudmonitor.ca.com/zh_cn/ping.php (默认IPv6,如果需要IPv4可以试试下面这个。)
https://cloudmonitor.ca.com/zh_cn/traceroute.php
http://www.webkaka.com/Ping.aspx
http://www.17ce.com/
http://www.super-ping.com/sc.html ( 无法加密,使用时可能因为关键字被Reset,因此建议先翻墙后使用。)

这类网站有很多很多很多,总之你能够通过越多的地区ping出一个被封锁域名的IP,那么最终成功率就越高。

那么我现在以 http://www.super-ping.com/sc.html 来做个示范(注意翻墙过去ping,否则可能会被关键字Reset),比如这里我们 ping google.com :

哇 ping 出来了好多IP,那么哪个是能用的呢?有人说我有专门的工具,有人说在本地ping一下就可以了。但如果我告诉你一个更简单的办法呢?

比如我们这里选了一个IP地址74.125.230.64,那么我们先让电脑回到墙内,再新开一个Chrome窗口,在地址栏输入:https://74.125.230.64/:

好吧,这个IP不能用,我们换一个https://173.194.41.41/:

证书错误页面的出现,说明这个IP地址能用,把它记录下来吧。

这个方法比起单纯ping来说最大的优势就是可以忽略针对端口的封锁(仅检测443端口),因此比单纯ping来验证IP可用性更靠谱。

  • 筛选最优IP地址

收集到了很多可用IP后,我会尝试从中选择一个速度较快的。一般来说大家在筛选速度更快的IP地址时使用的是ping,然后对比多个IP之间的延迟。但这不够,除了延迟,我们还应该更看看带宽。延迟和带宽两个指标结合才能判断一个IP是否健康。

打开这个网站(其它类似网站请自己发掘):http://www.webkaka.com/webCheck.aspx ,然后在网址栏中填入要测速的IP。这里仍然用刚才找到的一个 google.com 的IP 173.194.41.41 ,但请注意格式: https://173.194.41.41/

从图中可以看到这是一个很健康的IP。

我们可以关注以下栏目:

“状态”栏:有多少区域无法访问,但实际上可能并不是无法访问而是单纯的测速提供商故障了。如果无法访问的区域太多,那么就可能因为这属于随机封锁/局部封锁而需要考虑弃用这个IP。
“内容下载速度(KB/s)”栏:各个地区的下载速度,可以了解联通更快还是电信更快之类。
图表“下载速率”:可以看到并计算下载速度分布和平均指标,多个IP地址间比较速度也多使用这个指标

其它指标请自己发掘。

  • 所有可用IP都被封锁了!

当你手头所有工具都ping不出可用IP的时候,我们就得想办法找出其它IP了,这个时候运气成分比较重要。鉴我们不应该盲目地去寻找,也不应该随便就使用其它类似域名的IP地址。鉴于证书和服务器内容问题,这可能并不会让你更轻松,有的时候反而会增加后期维护的难度。比如之前有一个IP地址用于Gmail时,测试初期一切正常,但实际使用时才发现无法打开Gmail联系人,这就是一个典型的服务器内容问题,但当你遇到问题的时候,往往很难判断是哪里出故障了。

对于谷歌来说,当你看到 74.125.230.64 的时候,我们就应该会想到 74.125.231.64 是不是能用,那么 74.125.232.64 呢?然后你可以拿你联想到的IP挨个用以上方式测试。不过哪怕是测试通过,我们也应该谨慎使用这类IP,因为毕竟不是ping出来的,这样使用并不是被网站官方所希望的,很可能会出现严重后果,所以一定要严格测试。以下将官方ping出来的IP称为“官方IP”,其它IP为“非官方IP”。

我们可以轻松做到的测试方式:

1,对比官方和非官方IP的证书,方式在《不懂代码也会写HOST!(一)利用CHROME找出被屏蔽的网站域名》一文末尾有提到。若是证书完全相同,那么很大可能服务器内容也是相同的。另外,通过这种查看证书的方式,还可以看到该IP承载了哪些域名。
2,对于很多网站,包括但不限于谷歌、脸书、推特,IP越相似,那么服务器内容越可能相同,例如74.125.230.64、74.125.231.64、74.125.232.64等。
3,最保险的方法:把你的非官方IP部署进测试环境的Hosts,然后做尽可能多的测试。确认无误后,再部署进生产环境。

————————————————————我是萌萌哒分割线————————————————————

本期就到这里,下一期可能会攒一段时间,因为还不知道写点什么……总之先写点拾遗吧,或者大家还想看点什么,可以在评论区提出,我会尽量满足的。

————————————————————我是萌萌哒分割线————————————————————

推广:小巧稳定的Shadowsocks翻墙服务,点击这里

8 thoughts on “不懂代码也会写Host!(三)如何查找某个域名的可用IP

  1. 最简单的方法是cmd里telnet x.x.x.x 443
    对于只是DNS污染的这种,nslookup -vc facebook.com 8.8.8.8即可。
    Google那种丢弃数据包的,就得手动寻找了。

  2. 我想问~~你那个chrome的那个二维码是哪个app…….跪求~~~还有那个手机标志是直接发送到手机上是么……求~~各种求~~~大师球

  3. 非常感谢~请教一下,android上应该怎么处理?用过的一些host在PC上各种网页都正常,android上就会遇到gmail可用而google voice不可用之类问题
    另外,理论上可以做出像gogotest(一个给goagent客户端筛选IP的程序)那样,实现android上host的自动生成吗?

    • 1,见“我们可以轻松做到的测试方式”一节。这是证书或者服务器内容的问题。
      2,理论上可以,但我不会做,要考虑的东西太多了。

  4. Pingback: 不懂代码也会写HOST!(三)如何查找某个域名的可用IP | 细节的力量

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s