ac5474012 发表于 2009-6-10 23:11:32

如何从ip判断可能存在的域名?

公司的软路由可以把网络的访问记录以日志的形式导出,但现在的问题是有些访问软路由会自动记录为域名。但有些就是ip。这些ip有些可以直接敲在ie的地址栏上引导到站点。有些则不能。我的问题就有没有什么办法能分析这些ip把这些ip可能能连接到的域名提取出来?在深一步有没有什么办法能分析这些域名的含义?

l4ever 发表于 2009-6-10 23:17:50

http://www.domaintools.com/reverse-ip/?hostname=218.93.127.246

读取他的结果

kn007 发表于 2009-6-11 00:58:53

不明白...留个名

lynfr8 发表于 2009-6-11 02:02:05

有点困难
因为,某服务器固定IP地址,但开设虚拟主机很多,每个用户绑定的域名不是唯一的
看一下谷歌所在的IP就知道了:http://www.114best.com/ip/114?w=64.233.189.99
另外
根据IP得到域名是一个反向解析的过程
需要DNS服务上提供这种服务,但现在的很多都没有
都是正向解析,也就是根据域名可得到IP
au3也有这个函数:
TCPNameToIP 转化一个因特网名称(域名)到一个 IP 地址.
搜索了一下
《IP 域名 互转DLL(附源码)》出自网管联盟
http://bbs.wglm.net/read.php?tid=88396&fpage=0&toread=&page=1
里面提到一段au3代码
Local $RemoteIP,$RemoteName
Local $LocaLIP,$LocalName
$dll = DllOpen("IPHOST.dll")
$sReturn = DllCall($dll, "string", "xbsiphost", "long", "0", "string", "192.168.1.220");返回机器名
$sReturn2 = DllCall($dll, "string", "xbsiphost", "long", "1", "string", "game");返回IP
$sReturn3 = DllCall($dll, "string", "xbsiphost", "long", "1", "string", "");返回本机机器名
$sReturn4 = DllCall($dll, "string", "xbsiphost", "long", "0", "string", "");返回本机IP
$RemoteName=$sreturn
$Remoteip=$sreturn2
$LocalName=$sreturn3
$LocaLIP=$sreturn4
MsgBox(4096, "测试", "192.168.1.220的机器名为:"&$RemoteName&Chr(13)&"game的IP为:"&$Remoteip&Chr(13)&"本机机器名为:"&$LocalName&Chr(13)&"本机IP为:"&$LocaLIP, 10)
DllClose($dll)

附IPHOST.dll文件

不过测试不如人意,无法实现
反而类似VB,VC等语言实现IP域名互转的代码网上挺多的
看看论坛其他人有否解决办法了

kn007 发表于 2009-6-11 07:37:11

学习下楼上的东东

ac5474012 发表于 2009-6-11 12:47:16

那麽,还有其他办法吗?比如这个ip 61.135.216.234 怎样查到它的域名?

lynfr8 发表于 2009-6-11 14:39:05

直接拿比较难,au3没相应的函数可以用,曲线救国吧
思路:
读取http://www.114best.com/ip/114?w=64.233.189.99的源代码,用正则匹配出网页中的域名结果

ac5474012 发表于 2009-6-11 16:41:06

看来只有这样了,还是原路有的事

lynfr8 发表于 2009-6-11 17:16:33

今天想起你这个问题,突然想起IEUDF好象有一个ip转域名的函数
找了找,在最后一个函数找到了:
_TCPIpToName
--------------------------------------------------------------------------------
转换IP地址到主机名
#include <iNet.au3>
_TCPIpToName ( $sIp [,$iOption = 0 [, $hDll_Ws2_32 = "Ws2_32.dll" ]] )
参数
$sIp Ip地址(v4)格式
$iOption [可选], 默认 = 0
0 = 返回字符串主机名
1 = 返回数组 (看备注)
$hDll_Ws2_32 [可选], Handle to Ws2_32.dll
返回值
成功: 主机名或者数组 (看备注)
失败: ""
@Error: 0 = 无错误.
1 = inet_addr DllCall失败
2 = inet_addr 失败
3 = gethostbyaddr DllCall 失败
4 = gethostbyaddr 失败, WSAGetLastError = @Extended
5 = gethostbyaddr 失败, WSAGetLastError 失败
6 = strlen/sZStringRead 失败
7 = 读取Aliases数组错误
例如查找一个google的IP64.233.189.99
http://www.114best.com/ip/114?w=64.233.189.99

#include <array.au3>
#include <inet.au3>
Dim $aResult, $sIp
TCPStartup()
$sIp = TCPNameToIP("64.233.189.99")
$aResult = _TCPIpToName ($sIp, 1)
If @error Then
    MsgBox(0, "_TCPIpToName()", "@error = " & @error & @LF & "@extended = " & @extended)
Else
    _ArrayDisplay($aResult, "Local Hostname(s)")
EndIf

成功返回了:


不过别高兴太早
问题也出现了
还是我4楼提到的
某服务器固定IP地址,但开设虚拟主机很多,每个用户绑定的域名不是唯一的

返回的值只有一个,这样就很难判断楼主所要的准确的网络访问记录了
只能说革命尚未成功,同志还需努力咯!
:face (10):

ac5474012 发表于 2009-6-12 17:42:23

已经做了搜索,但结果非常不尽如人意。哎 这个问题还是没有解决啊。
页: [1]
查看完整版本: 如何从ip判断可能存在的域名?