`
vanadies10
  • 浏览: 82399 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过编程获取Whois的信息

    博客分类:
  • Java
阅读更多

近期帮助同事在处理从纯真网络上拿到的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被关闭。
    具体代码就不贴了,非常简单,需要的同学,分分钟就写好了。

分享到:
评论

相关推荐

    Python-检查一个域名列表的WHOIS信息

    在IT行业中,网络编程是至关重要的领域,而Python作为一种强大且易用的编程语言,常被用于处理网络相关的任务,包括获取域名的WHOIS信息。WHOIS是一种查询互联网上域名注册和所有者信息的标准协议。在这个场景下,...

    精彩编程与编程技巧-Whois 示例程序...

    通过本文提供的示例程序,读者可以学习到如何使用Winsock组件来实现对Whois服务器的连接,并获取相应的域名注册信息。 #### Whois查询原理 Whois查询的基本原理是通过TCP协议连接到特定的Whois服务器(如rs....

    域名 whois 信息查询

    通过上述步骤,你可以编写一个简单的VB程序来查询域名的Whois信息。然而,需要注意的是,Whois服务的使用可能会受到限制,特别是当频繁查询时,服务器可能会限制你的访问。此外,随着隐私保护政策的加强,某些信息...

    whois域名信息查询源码

    它通过连接到全球各地的Whois服务器,向用户提供域名的所有者、注册日期、到期日期、域名服务器等关键信息。在IT行业中,了解和使用Whois查询源码对于网络管理员、网站开发者、SEO专家以及知识产权律师等都是至关...

    whois(windows下安装)

    这意味着通过`whois`,用户可以获取到关于网站域名的注册详情,包括但不限于所有者身份、注册日期、到期日期、注册商信息和联系人详情。这些信息对于域名投资、知识产权保护、网络安全研究等领域都具有重要意义。 *...

    Whois 示例程序(2KB)...

    总结来说,这个"VB之网络精彩编程-Whois 示例程序"是一个很好的学习资源,可以帮助开发者了解如何在VB中实现网络通信,并且通过Whois查询来获取互联网域名和IP地址的详细信息。通过研究源代码,不仅可以学习到VB的...

    WHOIS查询检索,域名信息查询工具软件

    此外,如果查询结果显示多条记录(因为某些顶级域名的WHOIS信息可能分段返回),你还需要遍历`response.Records`集合来获取所有信息。 对于更复杂的WHOIS查询需求,例如处理不同的TLD(顶级域名)或自定义查询逻辑...

    Whois 示例程序

    通过学习和理解这些知识点,开发者能够创建出一个功能完善的Whois查询工具,帮助用户方便地获取域名的所有权和注册信息。在实际应用中,还可以考虑增加多线程查询、缓存结果、支持多种Whois服务器等功能,以提升用户...

    Whois查询工具

    7. **隐私保护**:由于Whois信息涉及个人隐私,工具可能需要遵循相关的隐私政策和法规,例如GDPR(欧洲通用数据保护条例),确保不滥用或泄露用户数据。 8. **国际化和本地化**:如果工具面向全球用户,可能需要...

    php 编写whois函数

    总的来说,编写PHP Whois函数是一项实用的技能,它能帮助开发者获取网络资源的重要信息,为网络安全分析、域名注册管理等工作提供便利。同时,理解Whois查询的底层原理,也有助于提升你在网络编程领域的专业素养。

    [主机域名]PHP+AJAX的whois查询程序_whois.zip

    在这个系统中,当用户输入域名并提交查询时,AJAX会向PHP后端发送异步请求,获取WHOIS信息,然后在用户界面上动态显示结果,提供流畅的用户体验。 【WHOIS查询】:WHOIS是一个用于查询互联网上域名注册和IP地址分配...

    [主机域名]PHP+AJAX的whois查询程序_whois.rar

    在whois查询中,用户可以在页面上输入域名,然后通过AJAX异步发送请求到服务器,获取whois信息,而无需刷新整个页面,提升了用户体验。 3. **Whois协议**:Whois是一种基于TCP协议的查询服务,用于查询域名的注册...

    Python库 | WhoisClient-1.0dev.tar.gz

    在Python开发过程中,WhoisClient-1.0dev不仅能够帮助我们快速获取Whois信息,还能够为网络研究、安全监控、域名投资等领域提供强大的数据支持。通过熟练掌握这个库,我们可以更高效地处理与域名相关的各种任务,...

    haovip.com域名Whois查询

    通过分析Whois信息,我们可以评估域名的潜在价值,监控竞争对手,甚至在必要时采取法律行动,例如在商标侵权的情况下。同时,学习和利用Whois查询的源代码,可以提升我们的编程技能,并帮助我们构建自定义的网络工具...

    无组件域名及whois查询

    总的来说,"无组件域名及Whois查询"是一种利用ASP和XMLHTTP技术,实现用户友好的在线域名查询和Whois信息获取的方式。通过这种技术,用户可以在不离开当前页面的情况下获取到域名的详细信息,为网站的交互性和用户...

    [工具查询]521yy 网站Whois查询 php版 1.0_whois.zip

    【标题】"521yy 网站Whois查询 php版 1.0_whois.zip" 是一个用于网站Whois查询的PHP程序,它允许用户通过编程方式获取关于域名的所有者、注册日期、到期日期等信息。Whois查询是网络上用于查找域名注册详情的常见...

    php获取访客IP和地理位置信息的类.zip

    - `getBrowser()`: 获取访客使用的浏览器类型和版本信息,这通过分析User-Agent头完成。 - `getOs()`: 识别访客的操作系统类型和版本,同样基于User-Agent头。 - `getLanguage()`: 检测访客浏览器设置的语言,这...

    主机域名PHP+AJAX的whois查询程序-whois

    这个系统允许用户在不刷新整个页面的情况下,通过输入域名来实时获取该域名的注册信息,提高了用户体验。在本文中,我们将详细探讨这个程序涉及的主要技术和知识点。 1. **Whois协议**: Whois是Internet上的一种...

    java_whois.rar

    WHOIS查询通常通过TCP连接发送特定格式的查询请求到WHOIS服务器,并接收包含域名信息的响应。你需要知道如何构造有效的WHOIS查询请求和解析返回的结果。 4. **Java网络编程**:这个Java_whois项目可能利用了Java的`...

Global site tag (gtag.js) - Google Analytics