近期帮助同事在处理从纯真网络上拿到的IP信息,确定这些IP所在的城市、区县,以及这些IP属于哪些ISP。后来需要用到whois上查询的信息。
开始的几次,通过whois命令简单的查询了一下。后来同事看到http://blog.chinaunix.net/space.php?uid=9950859&do=blog&cuid=1300091这篇博客介绍的用法,把教育网、电信、铁通、网通(之前是网通,现在算联通)的信息都拿下来了。从这些ISP中提取各自负责的IP段,处理了很多IP信息所对应的ISP,不过还是有些没有能够得到处理。就像写程序去自动处理。
网上搜索了一下,发现其实whois的协议是非常简单的文本协议。whois服务器的端口,是43,可以直接telnet连接到whois服务器(比如 whois.apnic.net)的43端口,然后输入help,就可以查看支持的协议。
Trying 202.12.29.222...
Connected to whois.apnic.net (202.12.29.222).
Escape character is '^]'.
% [whois.apnic.net node-2]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html
help
% -l <ip-lookup> Returns first level less specific inetnum,
% inet6num or route objects, excluding exact matches.
% -L <ip-lookup> Returns all level less specific inetnum,
% inet6num or route objects, including exact matches.
% -m <ip-lookup> Returns first level more specific inetnum,
% inet6num or route objects, excluding exact matches.
% -M <ip-lookup> Returns all level more specific inetnum,
% inet6num or route objects, excluding exact matches.
% -x <ip-lookup> Requests that only an exact match on a prefix be
% performed. If no exact match is found no objects are
% returned.
% -c <ip-lookup> Requests first level less specific inetnum or inet6num
% objects with the "mnt-irt:" attribute.
% -b <ip-lookup> Requests first level less specific inetnum or inet6num
% objects with the "mnt-irt:" attribute. Only object keys
% and "abuse-mailbox:" attributes are visible.
% -d <ip-lookup> Enables use of the -m, -M, -l and -L flags for lookups on
% reverse delegation domains.
%
% -i <attribute-name> <inverse-key> Perform an inverse query.
%
% -F Produce output using short hand notation for attribute
% names.
% -K Requests that only the primary keys of an object to be
% returned. The exceptions are set objects, where the
% members attributes will also be returned. This flag does
% not apply to person and role objects.
% -k (optional normal query) Requests a persistent connection. After
% returning the result the connection will not be closed by
% the server and a client may issue multiple queries on the
% same connection.
% Note, that server implements 'stop-and-wait' protocol,
% when no next query can be sent before receiving a reply
% for the previous one. Use RIPE whois3 client to be able
% to send queries in batch mode.
% Except the first -k query, -k without an argument closes
% the persistent connection.
% -g (mirroring request) Request a NRTM stream from the server.
% See [REF], section 4. "Mirroring the RIPE Database" for
% more information".
% -G Disables the grouping of objects by relevance.
% -B Disables the filtering of "notify:", "changed:" and "e-mail:"
% attributes.
%
% -R Switches off use referral mechanism for domain lookups,
% so that the database returns an object in the RIPE
% database with the exact match with the lookup argument,
% rather than doing a referral lookup.
% -r Switches off recursion for contact information after
% retrieving the objects that match the lookup key.
% -T (comma separated list of object types, no white space is allowed)
% Restricts the types of objects to lookup in the query.
% -a Specifies that the server should perform lookups in all
% available sources. See also -q sources" query.
% -s (comma separated list of sources, no white space is allowed) Specifies
% which sources and in which order are to be looked up when
% performing a query.
%
% -q sources Returns the current set of sources along with the
% information required for mirroring. See [REF], section
% 2.9 "Other server features" for more information.
% -q version Displays the current version of the server.
% -t <object-type> Requests a template for the specified object type.
% -V<client-tag> Sends information about the client to the server.
% -v <object-type> Requests a verbose template for the specified object
% type.
%
% [REF] RIPE Database Reference Manual.
% http://www.ripe.net/ripe/docs/databaseref-manual.html
whois的每次请求结束后,服务器会自动断开连接。
有了上述的信息,我们就可以很简单去实现一个自己的whois查询功能了。比如,我这边针对单个ip的查询,就可以使用-l这个参数。
具体就是,先创建和服务端连接的socket,
然后通过socket发送"-l ip\r\n"给服务端
读取响应,直到socket被关闭。
具体代码就不贴了,非常简单,需要的同学,分分钟就写好了。
分享到:
相关推荐
在IT行业中,网络编程是至关重要的领域,而Python作为一种强大且易用的编程语言,常被用于处理网络相关的任务,包括获取域名的WHOIS信息。WHOIS是一种查询互联网上域名注册和所有者信息的标准协议。在这个场景下,...
通过本文提供的示例程序,读者可以学习到如何使用Winsock组件来实现对Whois服务器的连接,并获取相应的域名注册信息。 #### Whois查询原理 Whois查询的基本原理是通过TCP协议连接到特定的Whois服务器(如rs....
通过上述步骤,你可以编写一个简单的VB程序来查询域名的Whois信息。然而,需要注意的是,Whois服务的使用可能会受到限制,特别是当频繁查询时,服务器可能会限制你的访问。此外,随着隐私保护政策的加强,某些信息...
它通过连接到全球各地的Whois服务器,向用户提供域名的所有者、注册日期、到期日期、域名服务器等关键信息。在IT行业中,了解和使用Whois查询源码对于网络管理员、网站开发者、SEO专家以及知识产权律师等都是至关...
这意味着通过`whois`,用户可以获取到关于网站域名的注册详情,包括但不限于所有者身份、注册日期、到期日期、注册商信息和联系人详情。这些信息对于域名投资、知识产权保护、网络安全研究等领域都具有重要意义。 *...
总结来说,这个"VB之网络精彩编程-Whois 示例程序"是一个很好的学习资源,可以帮助开发者了解如何在VB中实现网络通信,并且通过Whois查询来获取互联网域名和IP地址的详细信息。通过研究源代码,不仅可以学习到VB的...
此外,如果查询结果显示多条记录(因为某些顶级域名的WHOIS信息可能分段返回),你还需要遍历`response.Records`集合来获取所有信息。 对于更复杂的WHOIS查询需求,例如处理不同的TLD(顶级域名)或自定义查询逻辑...
通过学习和理解这些知识点,开发者能够创建出一个功能完善的Whois查询工具,帮助用户方便地获取域名的所有权和注册信息。在实际应用中,还可以考虑增加多线程查询、缓存结果、支持多种Whois服务器等功能,以提升用户...
7. **隐私保护**:由于Whois信息涉及个人隐私,工具可能需要遵循相关的隐私政策和法规,例如GDPR(欧洲通用数据保护条例),确保不滥用或泄露用户数据。 8. **国际化和本地化**:如果工具面向全球用户,可能需要...
总的来说,编写PHP Whois函数是一项实用的技能,它能帮助开发者获取网络资源的重要信息,为网络安全分析、域名注册管理等工作提供便利。同时,理解Whois查询的底层原理,也有助于提升你在网络编程领域的专业素养。
在这个系统中,当用户输入域名并提交查询时,AJAX会向PHP后端发送异步请求,获取WHOIS信息,然后在用户界面上动态显示结果,提供流畅的用户体验。 【WHOIS查询】:WHOIS是一个用于查询互联网上域名注册和IP地址分配...
在whois查询中,用户可以在页面上输入域名,然后通过AJAX异步发送请求到服务器,获取whois信息,而无需刷新整个页面,提升了用户体验。 3. **Whois协议**:Whois是一种基于TCP协议的查询服务,用于查询域名的注册...
在Python开发过程中,WhoisClient-1.0dev不仅能够帮助我们快速获取Whois信息,还能够为网络研究、安全监控、域名投资等领域提供强大的数据支持。通过熟练掌握这个库,我们可以更高效地处理与域名相关的各种任务,...
通过分析Whois信息,我们可以评估域名的潜在价值,监控竞争对手,甚至在必要时采取法律行动,例如在商标侵权的情况下。同时,学习和利用Whois查询的源代码,可以提升我们的编程技能,并帮助我们构建自定义的网络工具...
总的来说,"无组件域名及Whois查询"是一种利用ASP和XMLHTTP技术,实现用户友好的在线域名查询和Whois信息获取的方式。通过这种技术,用户可以在不离开当前页面的情况下获取到域名的详细信息,为网站的交互性和用户...
【标题】"521yy 网站Whois查询 php版 1.0_whois.zip" 是一个用于网站Whois查询的PHP程序,它允许用户通过编程方式获取关于域名的所有者、注册日期、到期日期等信息。Whois查询是网络上用于查找域名注册详情的常见...
- `getBrowser()`: 获取访客使用的浏览器类型和版本信息,这通过分析User-Agent头完成。 - `getOs()`: 识别访客的操作系统类型和版本,同样基于User-Agent头。 - `getLanguage()`: 检测访客浏览器设置的语言,这...
这个系统允许用户在不刷新整个页面的情况下,通过输入域名来实时获取该域名的注册信息,提高了用户体验。在本文中,我们将详细探讨这个程序涉及的主要技术和知识点。 1. **Whois协议**: Whois是Internet上的一种...
WHOIS查询通常通过TCP连接发送特定格式的查询请求到WHOIS服务器,并接收包含域名信息的响应。你需要知道如何构造有效的WHOIS查询请求和解析返回的结果。 4. **Java网络编程**:这个Java_whois项目可能利用了Java的`...