shirakun/phpwhois 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

shirakun/phpwhois

Composer 安装命令:

composer require shirakun/phpwhois

包简介

phpWhois - library for querying whois services and parsing results. Based on phpwhois.org

README 文档

README

This package contains a Whois (RFC954) library for PHP. It allows a PHP program to create a Whois object, and obtain the output of a whois query with the Lookup function.

The response is an array containing, at least, an element 'rawdata', containing the raw output from the whois request.

In addition, if the domain belongs to a registrar for which a special handler exists, the special handler will parse the output and make additional elements available in the response. The keys of these additional elements are described in the file HANDLERS.

It fully supports IDNA (internationalized) domains names as defined in RFC3490, RFC3491, RFC3492 and RFC3454.

It also supports ip/AS whois queries which are very useful to trace SPAM. You just only need to pass the doted quad ip address or the AS (Autonomus System) handle instead of the domain name. Limited, non-recursive support for Referral Whois (RFC 1714/2167) is also provided.

Requirements

phpWhois requires PHP 4.3.0 or better with OpenSSL support to work properly. Without SSL support you will not be able to query domains which do not have a whois server but that have a https based whois. Also, you can run it in lower PHP versions but without timeout control. phpWhois will not work with PHP versions below 4.1.0

Installation

Via composer

Stable version

php composer.phar require "phpwhois/phpwhois":"~4.0"

Latest development version

php composer.phar require "phpwhois/phpwhois":"dev-master"

Download package

Download latest release from Github: https://github.com/phpWhois/phpWhois/releases

Basically, untar the distribution somewhere outside your server's document root and make sure the directory is listed in include_path in your php.ini file, server configuration or in an .htaccess file. If you want to test it using a web browser just copy example.php , example.html and whois.icon.png anywhere on your server's document root and try it.

phpWhois is not a PHP aplication is a class that can be used in applications. There is no need to make the installation folder accesible to anyone but PHP, nevertheless you can install it inside your server's document root if you like, it will work without problems or security risks.

Example usage

(see example.php)

include('whois.main.php');

$whois = new Whois();
$query = 'example.com';
$result = $whois->Lookup($query,false);
echo "<pre>";
print_r($result);
echo "</pre>";

If you provide the domain name to query in UTF8, then you must use:

$result = $whois->Lookup($query);

If the query string is not in UTF8 then it must be in ISO-8859-1 or IDNA support will not work.

What you can query

You can use phpWhois to query domain names, ip addresses and other information like AS, i.e, both of the following examples work:

$whois = new Whois();
$result = $whois->Lookup('example.com');

$whois = new Whois();
$result = $whois->Lookup('62.97.102.115');

$whois = new Whois();
$result = $whois->Lookup('AS220');

Using special whois server

Some registrars can give special access to registered whois gateways in order to have more fine control against abusing the whois services. The currently known whois services that offer special acccess are:

ripe

The new ripe whois server software support some special parameters that allow to pass the real client ip address. This feature is only available to registered gateways. If you are registered you can use this service when querying ripe ip addresses that way:

$whois = new Whois();
$whois->UseServer('uk','whois.ripe.net?-V{version},{ip} {query}');
$result = $whois->Lookup('62.97.102.115');

whois.isoc.org.il

This server is also using the new ripe whois server software and thus works the same way. If you are registered you can use this service when querying .il domains that way:

$whois = new Whois();
$whois->UseServer('uk','whois.isoc.org.il?-V{version},{ip} {query}');
$result = $whois->Lookup('example.co.uk');

whois.nic.uk

They offer what they call WHOIS2 (see http://www.nominet.org.uk/go/whois2 ) to registered users (usually Nominet members) with a higher amount of permited queries by hour. If you are registered you can use this service when querying .uk domains that way:

$whois = new Whois();
$whois->UseServer('uk','whois.nic.uk:1043?{hname} {ip} {query}');
$result = $whois->Lookup('example.co.uk');

This new feature also allows you to use a different whois server than the preconfigured or discovered one by just calling whois->UseServer and passing the tld and the server and args to use for the named tld. For example you could use another whois server for .au domains that does not limit the number of requests (but provides no owner information) using this:

$whois = new Whois();
$whois->UseServer('au','whois-check.ausregistry.net.au');

or:

$whois = new Whois();
$whois->UseServer('be','whois.tucows.com');

to avoid the restrictions imposed by the .be whois server

or:

$whois = new Whois();
$whois->UseServer('ip','whois.apnic.net');

to lookup an ip address at specific whois server (but loosing the ability to get the results parsed by the appropiate handler)

UseServer can be called as many times as necessary. Please note that if there is a handler for that domain it will also be called but returned data from the whois server may be different than the data expected by the handler, and thus results could be different.

Getting results faster

If you just want to know if a domain is registered or not but do not care about getting the real owner information you can set:

$whois->deep_whois = false;

this will tell phpWhois to just query one whois server. For .com, .net and .tv domains and ip addresses this will prevent phpWhois to ask more than one whois server, you will just know if the donmain is registered or not and which is the registrar but not the owner information.

UTF-8

PHPWhois will assume that all whois servers return UTF-8 encoded output, if some whois server does not return UTF-8 data, you can include it in the NON_UTF8 array in whois.servers.php

Notes

There is an extended class called whois.utils.php which contains a debugging function called showObject(), if you showObject($result) it will output the total layout of the returned object to the web browser.

The latest version of the package and a demo script resides at https://github.com/phpWhois/phpWhois

Contributing

If you want to add support for new TLD, extend functionality or correct a bug, fill free to create a new pull request on Github's repository https://github.com/phpWhois/phpWhois

Credits

Mark Jeftovic markjr@easydns.com David Saez Padros david@ols.es Ross Golder ross@golder.org

Dmitry Lukashin dmitry@lukashin.ru

shirakun/phpwhois 适用场景与选型建议

shirakun/phpwhois 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 8 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 07 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「whois」 「phpwhois」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 shirakun/phpwhois 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 shirakun/phpwhois 我们能提供哪些服务?
定制开发 / 二次开发

基于 shirakun/phpwhois 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 8
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 8
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 199
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-2.0
  • 更新时间: 2021-07-20