Python使用Whois协议查询域名、IP地址信息

14人阅读 评论(0) 收藏 举报

原文地址:http://shajunxing.tpddns.cn:8888/web/blog/2018-04-17-Python使用Whois协议查询域名、IP地址信息/index.html

问题由来

我想查询某个IP地址所属的运营商,于是在百度里搜索,得到了结果,而且告诉我是从http://www.ip138.com/获取的。进入该网站,得知最原始出处是https://www.apnic.net/,即亚太互联网络信息中心,世界五大因特网登记机构之一。

查看APNIC的帮助https://www.apnic.net/manage-ip/using-whois/得知它是提供Whois服务的。Whois是老牌因特网协议了,以前听说过,今天研究了一下发现非常简单:协议基于TCP,端口43,客户端连接服务器发送命令和CR、LF,然后服务器返回响应内容并关闭连接。命令和响应都是纯文本格式的,可以直接阅读。这也体现了因特网协议的可读性的设计原则(当然现在的Google之类的没有内涵的公司肯定是不遵循的啦)。

我在Windows下面用Telnet试了一下,貌似有些问题,命令总是发不完整,于是用Python试验,成功了。

Python代码

代码如下,注意接收的时候必须使用循环,哪怕缓冲区再大,也不一定能够一次收完。

import socket

if __name__ == '__main__':
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('whois.apnic.net', 43))
    # 江苏电信DNS地址
    s.send(b'222.191.251.125\r\n')
    result = bytearray()
    while True:
        data = s.recv(10000)
        if not len(data):
            break
        result.extend(data)
    s.close()
    print(bytes(result).decode('ascii'))

返回可读的信息如下,需要什么解析字符串就是了。

% [whois.apnic.net]
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

% Information related to '222.184.0.0 - 222.191.255.255'

% Abuse contact for '222.184.0.0 - 222.191.255.255' is 'anti-spam@ns.chinanet.cn.net'

inetnum:        222.184.0.0 - 222.191.255.255
netname:        CHINANET-JS
descr:          CHINANET jiangsu province network
descr:          China Telecom
descr:          A12,Xin-Jie-Kou-Wai Street
descr:          Beijing 100088
country:        CN
admin-c:        CH93-AP
tech-c:         CJ186-AP
mnt-by:         APNIC-HM
mnt-lower:      MAINT-CHINANET-JS
mnt-routes:     MAINT-CHINANET-JS
remarks:        This object can only modify by APNIC hostmaster
remarks:        If you wish to modify this object details please
remarks:        send email to hostmaster@apnic.net with your
remarks:        organisation account name in the subject line.
status:         ALLOCATED PORTABLE
last-modified:  2015-08-26T01:26:56Z
source:         APNIC
mnt-irt:        IRT-CHINANET-CN

irt:            IRT-CHINANET-CN
address:        No.31 ,jingrong street,beijing
address:        100032
e-mail:         anti-spam@ns.chinanet.cn.net
abuse-mailbox:  anti-spam@ns.chinanet.cn.net
admin-c:        CH93-AP
tech-c:         CH93-AP
auth:           # Filtered
mnt-by:         MAINT-CHINANET
last-modified:  2010-11-15T00:31:55Z
source:         APNIC

role:           CHINANET JIANGSU
address:        260 Zhongyang Road,Nanjing 210037
country:        CN
phone:          +86-25-86588231
phone:          +86-25-86588745
fax-no:         +86-25-86588104
e-mail:         ip@jsinfo.net
remarks:        send anti-spam reports to spam@jsinfo.net
remarks:        send abuse reports to abuse@jsinfo.net
remarks:        times in GMT+8
admin-c:        CH360-AP
tech-c:         CS306-AP
tech-c:         CN142-AP
nic-hdl:        CJ186-AP
remarks:        www.jsinfo.net
notify:         ip@jsinfo.net
mnt-by:         MAINT-CHINANET-JS
last-modified:  2011-12-06T02:58:51Z
source:         APNIC

person:         Chinanet Hostmaster
nic-hdl:        CH93-AP
e-mail:         anti-spam@ns.chinanet.cn.net
address:        No.31 ,jingrong street,beijing
address:        100032
phone:          +86-10-58501724
fax-no:         +86-10-58501724
country:        CN
mnt-by:         MAINT-CHINANET
last-modified:  2014-02-27T03:37:38Z
source:         APNIC

% This query was served by the APNIC Whois Service version 1.88.15-46 (WHOIS-NODE3)

参考文献

查看评论

使用python-whois模块查询域名信息

一,简介通过域名注册信息,可以知道一个网站背后的公司信息,这个还是很厉害的,你用其他语言想查询这个,不好下手吧?Python直接提供了成熟的模块,就是这么锋利,它就是python-whois模块。二,...
  • woshisangsang
  • woshisangsang
  • 2017-08-10 16:02:35
  • 2202

Whois原理

RFC812定义了一个非常简单的Internet信息查询协议——WHOIS协议。其基本内容是,先向服务器的TCP端口43建立一个连接,发送查询关 键字并加上回车换行,然后接收服务器的查询结果。 ...
  • huang3838438
  • huang3838438
  • 2012-04-12 15:00:21
  • 4390

Python网络编程小例子:使用python获取网站域名信息

本文使用python,结合beautifulsoup,chardet,通过解析网页的方式,使用中国站长的接口,获取whois信息。...
  • xinxing__8185
  • xinxing__8185
  • 2015-05-13 19:18:30
  • 2781

Kali渗透(一)----信息收集之域名(WHOIS)

一、信息收集分类 信息收集的方法可归为两类: 1.主动式收集:主动式收集是通过直接发起与被测目标网络之间的互动来获取相关信息,例如,ICMP ping或者TCP端口扫描。 2.被动式收集:被动...
  • u011781521
  • u011781521
  • 2017-04-05 11:04:13
  • 3357

(信息搜集)通过DNS和IP地址挖掘目标网络信息:whois

whois域名注册信息查询 whois是一个用来查询域名注册信息数据库工具,一般的域名注册信息包括域名所有者,服务商,管理员邮件地址,域名注册日期和过期日期等等。这些信息往往是非常 有价值的。可以...
  • workerandgod
  • workerandgod
  • 2015-05-24 14:23:01
  • 373

使用python进行whois查询

使用python进行whois查询使用pip命令安装whois pip install python-whois Python 2.7.6 (default, Oct 26 2016, 20:3...
  • WU_DENG9495
  • WU_DENG9495
  • 2017-11-23 18:10:36
  • 419

(python)域名查询服务(whois)程序+检查5位以内域名到期时间邮件报警抢注域名

前言:这个程序写了挺长时间,主要的加‘-d’选项+域名(只支持.com域名)查询特定域名,不带任何参数后台运行(可以设定cron)脚本检查域名到期时间,发现域名还有5天以内到期报警提示,方便抢注呵呵!...
  • psm86609496
  • psm86609496
  • 2014-06-10 20:53:51
  • 898

linux下查询域名或IP注册信息的操作记录(whois)

转载自http://www.cnblogs.com/kevingrace/p/6264759.html在运维工作中,有时需要查询某些域名的注册信息(域名的NS,注册用户,注册邮箱等),可以使用whoi...
  • qq_36357820
  • qq_36357820
  • 2017-08-14 09:46:58
  • 146

万网whois查询接口代码

1、域名check 接口采用HTTP,POST,GET协议: 调用URL:http://panda.www.net.cn/cgi-bin/check.cgi 参数名称:area_domai...
  • esonbest1234
  • esonbest1234
  • 2016-02-24 11:31:01
  • 3042

python 自动采集域名whois 信息。

以前写了一个基于socket的,但是经常要连接不同whois服务器,有些信息还不全。 这次直接基于中国站长网,由于目标页面有js动态操作,所以只能使用pam模块了。 下面是介绍: ...
  • yatere
  • yatere
  • 2012-03-06 22:30:12
  • 1766
    个人资料
    等级:
    访问量: 5万+
    积分: 1086
    排名: 4万+
    最新评论