python3实现域名查询和whois查询功能


Posted in Python onJune 21, 2018

1. 域名查询

万网提供了域名查询接口,接口采用HTTP协议:

接口URL:http://panda.www.net.cn/cgi-bin/check.cgi

接口参数:area_domain,接口参数值为标准域名,例:doucube.com

调用举例:

http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=doucube.com

返回:

<?xml version="1.0" encoding="gb2312" ?> 
- <property>
 <returncode>200</returncode> 
 <key>doucube.com</key> 
 <original>211 : Domain name is not available</original> 
 </property>

返回结果说明:

<returncode>200</returncode> 返回码,200表示返回成功
<key>doucube.com</key> 表示当前查询的域名
<original>211 : Domain name is not available</original> 返回结果的原始信息,主要有以下几种

original=210 : Domain name is available  表示域名可以注册
original=211 : Domain name is not available 表示域名已经注册
original=212 : Domain name is invalid  表示查询的域名无效
original=213 : Time out 查询超时

用python3实现如下

1.1 查询已经被注册的域名

import urllib.request
req = urllib.request.urlopen('http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=doucube.com')
print(req.read().decode())

返回结果:不可用,已经被注册

<?xml version="1.0" encoding="gb2312" ?> 
- <property>
 <returncode>200</returncode> 
 <key>doucube.com</key> 
 <original>211 : Domain name is not available</original> 
 </property>

1.2 查询没有被注册的域名

req2 = urllib.request.urlopen('http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=doucube.net')
print(req2.read().decode())

返回结果:可用,未被注册

<?xml version="1.0" encoding="gb2312" ?> 
- <property>
 <returncode>200</returncode> 
 <key>doucube.net</key> 
 <original>210 : Domain name is available</original> 
 </property>

1.3 查询不存在的域名,使用不存在的后缀

req3 = urllib.request.urlopen('http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=doucube.net2')
print(req3.read().decode())

返回结果:域名无效

<?xml version="1.0" encoding="gb2312" ?> 
- <property>
 <returncode>200</returncode> 
 <key>doucube.net2</key> 
 <original>212 : Domain name is invalid</original> 
 </property>

.whois查询

由于没有找到像域名查询接口那样好的API,这里直接抓取站长之家的whois查询页面(http://whois.chinaz.com/)

req_whois = urllib.request.urlopen('http://whois.chinaz.com/doucube.com')
print(req_whois.read().decode())

在返回的结果中有这样一段html代码,这段信息就是查询的whois信息

<div style=" text-align:center;"> 
 <div class="div_whois">
  域名:doucube.com  
  <a href='http://www.doucube.com' target=_blank>访问此网站</a></div>
 <div id="whoisinfo" class="div_whois">
  注册商:GODADDY.COM, LLC<br/>
  域名服务器:whois.godaddy.com<br/>
  DNS服务器:DNS1.FREEHOSTIA.COM<br/>
  DNS服务器:DNS2.FREEHOSTIA.COM<br/>
  域名状态:运营商设置了客户禁止删除保护<br/>
  域名状态:运营商设置了客户禁止续费保护<br/>
  域名状态:运营商设置了客户禁止转移保护<br/>
  域名状态:运营商设置了客户禁止修改保护<br/>
  更新时间:2012年05月28日<br/>
  创建时间:2012年05月23日<br/>
  过期时间:2013年05月23日<br/>
  联系人:zhu, alice<br/>
  联系方式:<img src="/displayemail.aspx?email=M8N8oc1O|iQhqGCDHdpH9m77v2qrQfW8"/>
  <br/>
  <br/>
 </div>
</div>
Python 相关文章推荐
Python抓取京东图书评论数据
Aug 31 Python
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
Python实现完整的事务操作示例
Jun 20 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
Python验证文件是否可读写代码分享
Dec 11 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 Python
Python csv文件的读写操作实例详解
Nov 19 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
带你学习Python如何实现回归树模型
Jul 16 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 #Python
详解Python下ftp上传文件linux服务器
Jun 21 #Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 #Python
python实现黑客字幕雨效果
Jun 21 #Python
python实现内存监控系统
Mar 07 #Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 #Python
python 从csv读数据到mysql的实例
Jun 21 #Python
You might like
解析php file_exists无效的解决办法
2013/06/26 PHP
PHP写日志的实现方法
2014/11/05 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
JavaScript 特殊字符
2007/04/05 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
vue组件的写法汇总
2018/04/12 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
python元组拆包实现方法
2021/02/28 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
华为C++笔试题
2014/08/05 面试题
LINUX下线程,GDI类的解释
2012/04/17 面试题
学生无故旷课检讨书
2014/09/20 职场文书
护士医德考评自我评价
2015/03/03 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python