1. 引言
这个程序的适用面不是很广,但对于域名爱好者,我想这会是一个不错的工具。
查询一个域名的Whois,这样的工具有很多。但是显示的数据却是有点差强人意,一次偶然的机会发现了 who.cx 这个whois工具,不得不说界面很好看。
于是,抱着学习的态度借鉴了该网站的前端页面。
前几天,有网友在我的博客留言说想要源码,这中间也有哥们说给我发红包买源码。我很惭愧,因为这不是我自主开发的工具,更多的是一种借鉴。
所以,今天就把这个工具在Github上开源。
2. 后端的探索
2.1 阶段一
一开始的时候并没有想太多,主要是想套个壳,就直接反代了 who.cx 的接口,然后当请求量稍微大一点后,ip就被限额了。
我有考虑过加代理,但这样的成本就有点高了。于是,不得不换个法子。
2.2 阶段二
我在查看js文件的时候,发现了 tian.hu 这个whois查询网站,不得不说也非常的强大,就是界面可能比起 who.cx 要逊色一点。
于是,我决定将它的api作为我的数据来源,并对其数据进行适当的处理。
不得不说,这个方法持续了好久。
2.3 阶段三
就在发布本篇文章的前一天,我发现查不了域名了。于是,我在本地运行了一下代码。发现其接口中数据的某些键发生了变化。
OK~本地跑的结果又正常了,于是便将代码放到了服务器,但是呢,还是出错。
我在服务器进行了调试,哦~原来也被限额了。
这时我便在想,难道真的要加代理吗?说实话,代理的成本比较高,免费代理又没什么能用的。
于是乎,我便想着,那就不调用别人的接口了,我自己手搓一下。于是去网上找了一下相关信息与教程,最终发现 whois21 这个库所能查询的域名类型比较多一点。
所以,真正直接查询whois的后端有了,而不是调用他人的接口。
3. 程序介绍
3.1 运行环境
Flask
Gunicorn
Python3.10(参考)
3.2 源码
Github:https://github.com/WuSuoV/SkyQianWhois
3.3 功能和实现原理
因为后端是我自己进行仿写的,所以并没有做到跟 who.cx 完全一致,或许你可以当做是二次开发。
显示Whois原始信息
对信息进行格式化,获取域名、服务商、注册时间、更新时间、到期时间、IANA_ID、域名状态、DNS、DNSSEC、数据库更新时间
域名存在的时间进行高亮展示
支持查询备案信息
……
其中,
Whois信息的获取:通过Python的一个库,叫 whois21,是直接拉取whois根数据库,非调用第三方接口
ICP备案信息的获取:通过 夏柔免费API 进行获取。
价格查询:通过 tian.hu 的API进行获取
3.4 部署
可以进行傻瓜式操作,用宝塔里的Python项目管理,部署起来倒也没什么复杂的。
在这里简单贴一下我的配置: