Whois 信息是域名玩家每天必查的,看了很多查询 whois 信息的网站都不满意,干脆自己动手写一个。基本原理为:使用 Python,调用 Ubuntu 上的 whois 软件包,查询 whois 信息,并返回给 Flask,然后在前台进行展示。整个流程比较简单,下面看一下。
一、准备环境
安装 Flask,安装 whois:
apt install -y whois pip install flask
部署网站环境,比如 LAMP(使用 LAMP 一键包部署 Linux 建站环境)。
二、获取 Whois 信息
获取 whois 信息很简单,通过 Python 的 subprocess 调用系统的 whois 软件,就能得到 whois 信息,代码如下:
import subprocess as sp def get_whois(domain_name): try: whois_info = sp.check_output('whois %s' % domain_name, shell=True) return whois_info except sp.CalledProcessError, e: return e.output
比较简单,就是调用了一句 shell,就不细说了。
三、返回 whois 信息
代码如下:
@app.route('/whois', methods=['POST']) def whois_check(): domain_name = request.form['domain_name'] dn_info_str = get_whois(domain_name) dn_info = dn_info_str.replace('\n', ' ') return render_template('whois_info.html', dn_info=dn_info, dn_value=domain_name)
获取了 whois 信息之后,需要返回给 Flask,上面的代码先从 request.form
里获取要查询的域名,然后调用 get_whois()
进行查询 whois,查询到信息之后格式化一下后再返回给模板进行渲染。最上面的 @app.route()
是用来定义网站路径的。
四、渲染模板
使用 jinja2 写一个展示页的目标,最简单的方法就是直接把 whois 信息展示出来,代码如下。
{% autoescape false %} {{ dn_info }} {% endautoescape %}
具体的就自己看 jinja2 的文档吧,就是一些语法问题。
五、部署上线
推荐使用 CN2 GIA VPS 来部署网站:《好用性价比高的美国洛杉矶 CN2 GIA 便宜 VPS 推荐》
最简单的部署方法就是直接 nohup 后台运行。
nohup python -u pywhois.py > out.log 2>&1 &
网站的配置(以 LAMP 为例)如下:
<VirtualHost *:80> ServerName YOURDOMAIN.NAME ServerAlias YOURDOMAIN.NAME www.YOURDOMAIN.NAME ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/ ErrorLog /data/wwwlog/YOURDOMAIN.NAME/error.log TransferLog /data/wwwlog/YOURDOMAIN.NAME/access.log </VirtualHost>
主要就是把 localhost 的 5000 端口,也就是 Flask 的运行端口,映射到公网的 80 端口。
至此,整个 whois 网站就上线了,具体代码请前往我的 Github 查看: