2024-04-28 04:46:39 发布
网友
我正试图使用python中的socket.gethostbyaddr()反向dns一个ip列表,该列表为某些值返回“未知主机”,但对同一ip使用dig返回主机名。另外,dig似乎比使用python模块快得多,这有什么具体原因吗?
import socket # This returns 'Unknown Host' name, alias, addresslist = socket.gethostbyaddr('114.143.51.197')
对不起,你弄错了。114.143.51.197没有PTR记录。。。因此socket.gethostbyaddr()应该抛出一个错误。。。你当然需要一个try/except子句来捕获socket.herror
socket.gethostbyaddr()
try
except
socket.herror
>>> def lookup(addr): ... try: ... return socket.gethostbyaddr(addr) ... except socket.herror: ... return None, None, None ... >>> name,alias,addresslist = lookup('4.2.2.2') >>> print name vnsc-bak.sys.gtei.net >>> name,alias,addresslist = lookup('114.143.51.197') >>> print name None >>>
114.143.51.197的DNS反向查找。。。请注意,它没有有效的PTR记录
PTR
[mpenning@Bucksnort ~]$ dig @8.8.8.8 -x 114.143.51.197 ; <<>> DiG 9.6-ESV-R4 <<>> @8.8.8.8 -x 114.143.51.197 ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 4735 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;197.51.143.114.in-addr.arpa. IN PTR ;; AUTHORITY SECTION: 114.in-addr.arpa. 1800 IN SOA ns1.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 17812 7200 1800 604800 172800 ;; Query time: 182 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Tue Nov 22 05:11:36 2011 ;; MSG SIZE rcvd: 134 [mpenning@Bucksnort ~]$ python Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> socket.gethostbyaddr('114.143.51.197') Traceback (most recent call last): File "<stdin>", line 1, in <module> socket.herror: (1, 'Unknown host') >>>
这就是有效的PTR记录应该是什么样子。。。
[mpenning@Bucksnort ~]$ dig -x 4.2.2.2 ; <<>> DiG 9.6-ESV-R4 <<>> -x 4.2.2.2 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61856 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1 ;; QUESTION SECTION: ;2.2.2.4.in-addr.arpa. IN PTR ;; ANSWER SECTION: 2.2.2.4.in-addr.arpa. 86400 IN PTR vnsc-bak.sys.gtei.net. ;; AUTHORITY SECTION: 2.4.in-addr.arpa. 86400 IN NS dnsauth2.sys.gtei.net. 2.4.in-addr.arpa. 86400 IN NS dnsauth1.sys.gtei.net. 2.4.in-addr.arpa. 86400 IN NS dnsauth3.sys.gtei.net. ;; ADDITIONAL SECTION: dnsauth1.sys.gtei.net. 1800 IN A 4.2.49.2 ;; Query time: 308 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Nov 22 05:10:16 2011 ;; MSG SIZE rcvd: 158 [mpenning@Bucksnort ~]$ python Python 2.5.2 (r252:60911, Jan 24 2010, 14:53:14) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> socket.gethostbyaddr('4.2.2.2') ('vnsc-bak.sys.gtei.net', [], ['4.2.2.2']) >>>
对不起,你弄错了。114.143.51.197没有PTR记录。。。因此
socket.gethostbyaddr()
应该抛出一个错误。。。你当然需要一个try
/except
子句来捕获socket.herror
114.143.51.197的DNS反向查找。。。请注意,它没有有效的
PTR
记录这就是有效的
PTR
记录应该是什么样子。。。相关问题 更多 >
编程相关推荐