无论如何,我正在开发一个小型 PHP 网站/脚本,作为功能之一,我希望能够在 PHP 脚本运行的当前域上运行 WHOIS 查找。
理想情况下,这将是我可以调用的一个函数,并且在该函数中它将运行 WHOIS,然后将结果回显到屏幕上。它将接受要运行 WHOIS 查找的网站的 URL,或者只在当前 URL/域上运行它(这就是我想要的),尽管如果需要,我可以为其提供网站域的变量.
我不太了解 WHOIS 查找(嗯,我知道它们的作用,我只是不知道如何在 PHP 中运行它们),但我也可以查询另一个网站(甚至是其中一个网站)我自己的,如果你能给我它的代码)。
无论什么有效,请告诉我!最主要的是,我希望它能适合所有功能,并且它绝对必须适合一个 PHP 文件/文档。
使用 php,您可以使用 shell_exec 来执行 whois 命令。
<?php
$whois = shell_exec("whois domain.net");
echo '<pre>';
print_r($whois);
?>
这应该完全符合您的要求...http://www.phpwhois.org/
我以前用过这个类,完全按照你想要的做!
为了让 Pavels 的答案更进一步 - 这会将其分解为一个数组:
$whois = shell_exec("whois 45.118.135.255");
$result = explode("\n",$whois);
$out = array();
foreach ($result as $line){
if (substr($line,0,1) == '%' || substr($line,0,1) == '#'){ continue; }
$ps = explode(':',$line);
$out[trim($ps[0])] = trim($ps[1]);
}
print '<pre>'; print_r($out); print '</pre>';
有一些第三方软件包:
composer require io-developer/php-whois
用途:
// How to get summary about domain:
<?php
use Iodev\Whois\Factory;
// Creating default configured client
$whois = Factory::get()->createWhois();
// Checking availability
if ($whois->isDomainAvailable("google.com")) {
print "Bingo! Domain is available! :)";
}
// Supports Unicode (converts to punycode)
if ($whois->isDomainAvailable("почта.рф")) {
print "Bingo! Domain is available! :)";
}
// Getting raw-text lookup
$response = $whois->lookupDomain("google.com");
print $response->text;
// Getting parsed domain info
$info = $whois->loadDomainInfo("google.com");
print_r([
'Domain created' => date("Y-m-d", $info->creationDate),
'Domain expires' => date("Y-m-d", $info->expirationDate),
'Domain owner' => $info->owner,
]);
// Exceptions on domain lookup:
<?php
use Iodev\Whois\Factory;
use Iodev\Whois\Exceptions\ConnectionException;
use Iodev\Whois\Exceptions\ServerMismatchException;
use Iodev\Whois\Exceptions\WhoisException;
try {
$whois = Factory::get()->createWhois();
$info = $whois->loadDomainInfo("google.com");
if (!$info) {
print "Null if domain available";
exit;
}
print $info->domainName . " expires at: " . date("d.m.Y H:i:s", $info->expirationDate);
} catch (ConnectionException $e) {
print "Disconnect or connection timeout";
} catch (ServerMismatchException $e) {
print "TLD server (.com for google.com) not found in current server hosts";
} catch (WhoisException $e) {
print "Whois server responded with error '{$e->getMessage()}'";
}
如果您使用 Laravel :laravel-whois
composer require larva/laravel-whois -vv
php artisan migrate
用途:
$info = \Larva\Whois\Whois::lookup('baidu.com', true);
$info = \Larva\Whois\Whois::lookupRaw('google.com');
最好的办法是使用 pywhois。虽然你在问题标题中提到了Python,但在帖子中没有提及。如果您确实需要 PHP,我确信有等效的东西。
我在这里找到它:https://whoisfreaks.com/documentation/api/whois-api.html。您可以通过以下代码片段使用 PHP 进行 Whoislook 查找:
'https://api.whoisfreaks.com/v1.0/whois?whois=live&domainName=jfreaks.com&apikey=Your API_Key',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
我希望它也对你有用。
进行 WHOIS 查找是通过 TCP 端口 43 发送请求字符串的简单考验,这可以使用简单的 PHP 套接字函数来完成,无需生成 shell 或使用任何外部工具/库。虽然查询本身很简单,但在如何执行查询方面需要考虑一些事情。
对于 IP 查找,您需要查询相关 IP 块所分配到的正确区域 WHOIS 服务器,这些服务器是:
对于域名查找,您需要查询给定 TLD 的正确 WHOIS 服务器。您还应该查询域名注册商的 WHOIS 服务器以获取域名本身的正确信息。
请参阅此简单示例了解基本 WHOIS 功能:whois.php(PHP >= 4.0)
它考虑了所有因素,因此始终会返回正确的结果。
特点:
&txt=1
) 结果whois.nic.$tld
范式之外,还可以配置为在 IANA 数据库中查找任何给定 TLD 的正确 WHOIS 服务器,但需要进行一次额外查询尝试一下
github
gist
中提供的功能
https://gist.github.com/ManojKiranA/4b034659e85fa02308ad9bdcdd05629c
有关
TLDs/Whois servers
的完整列表,请参阅 http://www.iana.org/domains/root/db/ 和 http://www.whois365.com/en/listtld/