用于检索和分析域的whois数据的模块。支持大多数域。没有依赖关系。

pythonwhois-alt的Python项目详细描述


蟒蛇alt

这是一个强大的叉子 sven slootweg的pythonwhois 不幸的是,图书馆似乎被遗弃了。我的变更日志是 这里

安装时使用:

pip install pythonwhois-alt

下面是原始描述。


蟒蛇

一个用于python的whois检索和解析库。

依赖关系

没有!您所需要的只是python标准库。

说明

手册(包括安装说明)可以在doc/目录中找到。HTML版本也可以在这里查看。

目标

  • 100%覆盖whois格式。
  • 准确完整的数据。
  • 始终如一的功能分析;不断的测试以确保分析器不会意外损坏。

功能

  • whois数据检索
    • 能够跟踪whois服务器重定向
    • 不会被来自verisign grs的多个结果响应所困扰
  • whois数据解析
    • 基本信息(注册等)
    • 日期/时间(注册、到期等)
    • 完整的注册人信息(!)
    • 名称服务器
  • 可选的whois数据规范化
    • 尝试智能地重新格式化whois数据,以获得更好的(人工)可读性
    • 将各种缩写类型转换为完整的地区名称
      • 机场代码
      • 国家名称(2个和3个字母的ISO代码)
      • 美国各州和地区
      • 加拿大各州和地区
      • 澳大利亚各州
  • pwhois,一个使用pythonwhois的简单whois工具
    • 易于阅读的输出格式
    • 也可以输出原始的whois数据
    • 以及json。
  • 自动化测试套件
    • 将检测并警告与以前的运行相比分析数据中的任何更改
    • 保证以前工作的whois解析不会在更改代码时无意中断

IP范围whois

pythonwhois还不支持whois对ip范围(包括单个ip)的查找,不过这将在将来的某个时候添加。同时,考虑使用ipwhois-它提供类似于pythonwhois的功能和api,但仅限于ips。它还支持委派的rwhois。

请注意,ipwhois不提供规范化功能,而且(还)没有命令行工具。另外,ipwhois由philip hane维护,而不是由我维护;请确保在ipwhois存储库中,而不是在pythonwhois存储库中,提交与之相关的错误。

重要更新说明

2.4.0和up:对规范化做了很多更改,python 2.x下的性能得到了显著提高。python 2.7下的平均解析时间减少了94%(!),在我的系统上平均为18ms。python 3.x下的性能是不变的pythonwhis现在将在规范化模式下扩展许多缩写,如机场代码、ISO国家代码和US/CA/AU州缩写。这样做的结果是,这个库现在更大了(因为它提供了这些缩写的列表)。还要注意的是,可能会产生许可后果,特别是关于机场代码数据库。有关这方面的更多信息,请参见下文。

2.3.0及以上版本:python 3支持已修复。已修复联系人的创建日期解析;如果应用程序依赖于损坏的vari,则现在将返回正确的时间戳,而不是未格式化的时间戳。蚂蚁,你需要修改你的代码。在netparse方法中添加了一些附加参数,以方便nic句柄查找;默认值是向后兼容的,这些更改不会对代码产生任何影响。Thai whois解析已实现,但有点不稳定-有时可能会错误地拆分数据。如果遇到任何问题,请提交错误报告。

2.2.0和up:已更改了get-whois-raw的内部工作方式,以便更好地解析来自注册表的whois数据,这些注册表可能返回多个查询部分匹配项,例如whois.verisign grs.com。此更改意味着,默认情况下,get_whois_raw将删除此类响应中与请求域不直接相关的部分。如果您的应用程序需要未经修改的raw whois响应,并且正在直接调用getwhois\uraw,则应该使用新的never\u cut参数来阻止pythonwhois执行此后处理。由于这是一个潜在的破坏性行为更改,次要版本已被取消。

它不起作用!

  • 一点用都没有?
  • 它不解析特定域的数据?
  • 在解析一个域的数据时会有不准确的地方,哪怕只是一个很小的域?

如果其中任何一个适用,不要犹豫提出一个问题!目标是100%覆盖,我们需要您的反馈来实现这一目标。

许可证

此库可以在wtfpl下使用,如果您对此有异议,请将其视为在cc0下使用。

数据源

此库使用许多第三方数据集进行规范化:

  • airports.dat:OpenFlights机场数据库数据库内容许可证1.0
  • countries.dat国家列表(麻省理工学院许可证)
  • countries3.datISO国家列表(未指定许可证)
  • 状态数据:蟒蛇的一部分(wtfpl/cc0)
  • states\u us.dat状态表(未指定许可证,鼓励免费重用)
  • 状态ca.dat状态表(未指定许可证,鼓励自由重用)

请注意,openflights数据库尤其具有潜在的许可后果;如果您不希望受到这些潜在后果的约束,您只需从您的发行版中删除airports.dat文件。pythonwhis将假定没有可用的数据库,并且不会执行机场代码转换(但仍然正常工作,否则)。这也适用于其他包含的数据集。

贡献

请随意分叉并提交拉取请求(到development分支)!如果更改了任何解析或规范化逻辑,请确保在打开拉取请求之前运行完整的测试套件。相关说明如下。

请注意,此项目使用制表符缩进。

所有命令都与存储库的根目录相关。

不包含test.py输出的拉取请求将被拒绝!

向测试集中添加新的whois数据

pwhois --raw thedomain.com > test/data/thedomain.com

检查当前分析的数据(在编辑解析器时)

./pwhois -f test/data/thedomain.com/ .

(别忘了结尾的那个点!)

将当前分析的数据标记为域的正确数据

确保进行验证(使用PWHOISde>或其他)在将域的whois数据标记为正确之前,正在正确解析它!

./test.py update thedomain.com

运行所有测试

./test.py run all

测试特定域

./test.py run thedomain.com

运行完整的测试套件,包括对多个python版本的支持

tox

生成文档

您需要zippydoc(可通过pip install zippydoc安装)。

zpy2html doc/*.zpy

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
有没有一种方法可以将不同的java web应用程序组合到一个web应用程序(war)中而不相互影响?   java一次屏蔽两位   java如何在多个类上初始化元素?   java在后台服务中处理通知或使用GCM(或其他推送通知服务)   java从const方法调用JNI函数   javascript如何使用函数/方法返回?   Java优化:声明类变量与使用临时变量   java字符算术基数8 vs基数10   Java流收集要存储的对象列表   swing我正在用Java中的keyListener制作一个精灵移动器   在Gradle构建脚本中使用Scala(或java)方法   java Android Mediaplayer下一步按钮不起作用   Java Sound API在播放音频文件后将其锁定   java将变量从外部类传递到内部类的最佳方法   使用play framework的博客web应用程序出现java逻辑错误   java我们可以在Spring批处理中处理大型zip文件吗?   java如何检查JTable的选定行的特定列中的值是否已经在JList中?