PHP

Whois, как получить данные IP-адреса и домена в PHP

Несколько примеров как в PHP получить информацию о домене и IP-адресе.

1

Информация о IP

Получить информацию об IP-адресе можно с помощью сервиса WHOIS REST API, отправив запрос на http://rest.db.ripe.net/search?query-string=xxx.xxx.xxx.xxx
Ответ будет в формате XML.

$ip = '213.180.193.1';
$xml = simplexml_load_string(file_get_contents('http://rest.db.ripe.net/search?query-string=' . $ip));
$array = json_decode(json_encode($xml), TRUE);        

$data = array();
foreach ($array['objects'] as $row) {
    foreach ($row as $row2) {
        foreach ($row2['attributes'] as $row3) {
            foreach ($row3 as $row4) {
                $data[$row4['@attributes']['name']][] = $row4['@attributes']['value'];
            }
        }
    }
}

print_r($data);

Результат:

Array(
    [inetnum] => Array(
        [0] => 213.180.193.0 - 213.180.193.255
    )
    [netname] => Array(
        [0] => YANDEX-213-180-193
    )
    [status] => Array(
        [0] => ASSIGNED PA
    )
    [country] => Array(
        [0] => RU
    )
    [descr] => Array(
        [0] => Yandex enterprise network
        [1] => Yandex enterprise network
    )
    [admin-c] => Array(
        [0] => YNDX1-RIPE
        [1] => PGR777-RIPE
    )
    [tech-c] => Array(
        [0] => YNDX1-RIPE
        [1] => EM3673-RIPE
        [2] => AUR2-RIPE
    )
    [remarks] => Array(
        [0] => INFRA-AW
        [1] => trouble: ------------------------------------------------------
        [2] => trouble: Points of contact for Yandex LLC Network Operations
        [3] => trouble: ------------------------------------------------------
        [4] => trouble: Routing and peering issues: noc@yandex.net
        [5] => trouble: SPAM issues: abuse@yandex.ru
        [6] => trouble: Network security issues: abuse@yandex.ru
        [7] => trouble: Mail issues: postmaster@yandex.ru
        [8] => trouble: General information: info@yandex.ru
        [9] => trouble: ------------------------------------------------------
    )
    [mnt-by] => Array(
        [0] => YANDEX-MNT
        [1] => YANDEX-MNT
        [2] => YANDEX-MNT
    )
    [created] => Array(
        [0] => 2011-08-30T09:34:57Z
        [1] => 2002-06-07T05:35:50Z
        [2] => 2012-02-09T15:59:56Z
    )
    [last-modified] => Array(
        [0] => 2014-03-26T08:38:45Z
        [1] => 2018-08-03T07:15:46Z
        [2] => 2012-02-09T15:59:56Z
    )
    [source] => Array(
        [0] => RIPE
        [1] => RIPE
        [2] => RIPE
    )
    [role] => Array(
        [0] => Yandex LLC Network Operations
    )
    [address] => Array(
        [0] => Yandex LLC
        [1] => 16, Leo Tolstoy St.
        [2] => 119021
        [3] => Moscow
        [4] => Russian Federation
    )
    [phone] => Array(
        [0] => +7 495 739 7000
    )
    [fax-no] => Array(
        [0] => +7 495 739 7070
    )
    [nic-hdl] => Array(
        [0] => YNDX1-RIPE
    )
    [abuse-mailbox] => Array(
        [0] => abuse@yandex.ru
    )
    [route] => Array(
        [0] => 213.180.193.0/24
    )
    [origin] => Array(
        [0] => AS13238
    )
)
2

Информация о домене

С доменами сложнее, т.к. нужно отправлять TCP запрос на WHIOS-сервер в зависимости от зоны домена. Полный список серверов на https://www.whois365.com/en/listtld/

Основные зоны

Зона Сервер
.ru, .su, .рф whois.tcinet.ru
.com, .net whois.verisign-grs.net
.org whois.pir.org
$server = 'whois.tcinet.ru';
$host = 'yandex.ru';

$socket = fsockopen($server, 43);
if ($socket) {
    fputs($socket, $host);

    $text = '';
    while (!feof($socket)) {
        $text .= fgets($socket, 128);
    }
    fclose($socket);
    echo $text;
}

Результат:

% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian) 
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).

domain:        YANDEX.RU
nserver:       ns1.yandex.ru. 213.180.193.1, 2a02:6b8::1
nserver:       ns2.yandex.ru. 93.158.134.1, 2a02:6b8:0:1::1
nserver:       ns9.z5h64q92x9.net.
state:         REGISTERED, DELEGATED, VERIFIED
org:           YANDEX, LLC.
registrar:     RU-CENTER-RU
admin-contact: https://www.nic.ru/whois
created:       1997-09-23T09:45:07Z
paid-till:     2019-09-30T21:00:00Z
free-date:     2019-11-01
source:        TCI

Last updated on 2019-04-10T13:26:32Z
3

Сервис для проверки IP и доменов

Есть хороший API сервис «ip-api», возвращает информацию о домене, IP-адресе + геолакацию. Не требует регистрации и ключей, ограничение 150 запросов в минуту с одного IP-адреса, но не для коммерческого использования.

$host = 'yandex.ru';
$json = file_get_contents('http://ip-api.com/json/' . $host . '?lang=ru');
$array = json_decode($json, TRUE);    
print_r($array);
Array
(
    [as] => AS13238 YANDEX LLC
    [city] => Москва
    [country] => Россия
    [countryCode] => RU
    [isp] => Yandex enterprise network
    [lat] => 55.734
    [lon] => 37.5883
    [org] => Yandex LLC
    [query] => 5.255.255.80
    [region] => MOW
    [regionName] => Москва
    [status] => success
    [timezone] => Europe/Moscow
    [zip] => 
)
10 апреля 2019
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают в спам или...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...