python查询在查询_在python中使用域名查询

执行基本查询

最基本的查询就是正向查询,它根据一个主机名来查找ip地址。

getaddrinfo(...)

getaddrinfo(host, port [, family, socktype, proto, flags])

-> list of (family, socktype, proto, canonname, sockaddr)

Resolve host and port into addrinfo struct.

#根据给定的参数host/port,相应的转换成一个包含用于创建socket对象的五元组,

#参数host为域名,以字符串形式给出代表一个IPV4/IPV6地址或者None.

#参数port如果字符串形式就代表一个服务名,比如“http”"ftp""email"等,或者为数字,或者为None

#参数family为地主族,可以为AF_INET  ,AF_INET6 ,AF_UNIX.

#参数socketype可以为SOCK_STREAM(TCP)或者SOCK_DGRAM(UDP)

#参数proto通常为0可以直接忽略

#参数flags为AI_*的组合,比如AI_NUMERICHOST,它会影响函数的返回值

#附注:给参数host,port传递None时建立在C基础,通过传递NULL。

#该函数返回一个五元组(family, socktype, proto, canonname, sockaddr),同时第五个参数sockaddr也是一个二元组(address, port)

In [30]: m = socket.getaddrinfo("www.qq.com", None)

In [31]: m                 //函数返回一个由元组组成的列表

Out[31]:

[(2, 1, 6, '', ('14.17.32.211', 0)),

(2, 2, 17, '', ('14.17.32.211', 0)),

(2, 3, 0, '', ('14.17.32.211', 0)),

(2, 1, 6, '', ('59.37.96.63', 0)),

(2, 2, 17, '', ('59.37.96.63', 0)),

(2, 3, 0, '', ('59.37.96.63', 0)),

(2, 1, 6, '', ('14.17.42.40', 0)),

(2, 2, 17, '', ('14.17.42.40', 0)),

(2, 3, 0, '', ('14.17.42.40', 0)),

(10, 1, 6, '', ('240e:ff:f040:28::a', 0, 0, 0)),

(10, 2, 17, '', ('240e:ff:f040:28::a', 0, 0, 0)),

(10, 3, 0, '', ('240e:ff:f040:28::a', 0, 0, 0))]

In [32]: m[4][4]      //只选择ip地址

Out[32]: ('59.37.96.63', 0)

In [33]: m[4][4][0]      //注意这个ip时字符串

Out[33]: '59.37.96.63'

执行反向查询,有ip地址查找响应的主机名:

gethostbyaddr(...)

gethostbyaddr(host) -> (name, aliaslist, addresslist)

Return the true host name, a list of aliases, and a list of IP addresses,

for a host.  The host argument is a string giving a host name or IP number.

反向查找的真实性检查:

检查的方法就是首先根据ip查找出一个域名。

然后再根据这个域名查找出一个ip列表。

最后检查你所用ip是否再ip列表里面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值