|
|||
|
Whois сервис на PHPЧтобы организовать свой Whois сервис на PHP необходимо создать базу доменов и их Whois-серверов, с которых можно прочитать информацию по домену. Информацию для БД по доменам первого уровня ccTLD, gTLD, IDN (com, net, ru, ua и др) можно взять тут: База данных MySQL для доменов
CREATE TABLE `whois_service`.`table_domain_z` ( `id` INT UNSIGNED NOT NULL , `parent` INT UNSIGNED NOT NULL , `domain_name` CHAR( 50 ) NOT NULL , `whois_server` CHAR( 100 ) NOT NULL , PRIMARY KEY ( `id` ) , INDEX ( `parent` , `domain_name` ) ) ENGINE = MYISAM ; PHP-cкрипт извлечения информации для БД доменов первого уровня с www.iana.org
$file_cont = file_get_contents('http://www.iana.org/domains/root/db/'); $pattern = '!\<a href\=\"\/domains\/root\/db\/([a-z0-9а-я\-]{1,50})\.html\"\>\.(.*)\<\/a\>!i'; preg_match_all($pattern, $file_cont, $match); $mysql_insert = ''; foreach ($match[1] AS $val) { $domain_to_db = mysql_real_escape_string($val); $mysql_insert .= '(null, 1, "'.$domain_to_db.'"),'; } $mysql_insert = substr($mysql_insert, 0, strlen($mysql_insert) - 1); // ... // Строки подключения к БД MySQL // ... mysql_query('INSERT INTO table_domain_z (id, parent, domain_name) VALUES '.$mysql_insert); IDN-домены записываются скриптом в кодировке Punycode Теперь необходимо прописать в БД ссылки на whois-сервисы каждой доменной зоны первого уровня. Большую часть этой информации можно узнать тут: whois.iana.org. Для тех доменных зон, у которых остутствует собственный whois-сервер, записываем whois.iana.org. PHP-скрипт извлечения информации о whois-серверах доменов первого уровня
$query = 'SELECT id, name FROM table_domain_z WHERE whois_server = "" LIMIT 5'; $result = mysql_query($query); $whois_search_txt = 'whois:'; $whois_strlen = strlen($whois_search_txt); while ($row = mysql_fetch_assoc($result)) { $con = @fsockopen('whois.iana.org', 43, $errno, $errstr, 5); if ($con) { $whois_server = ''; fputs($con, $row['name']."\r\n"); while(!feof($con)) { $response = fgets($con, 128); if (strstr($response, $whois_search_txt)) $whois_server = trim(substr($response, $whois_strlen)); } $whois_server = (empty($whois_server))? 'whois.iana.org' : $whois_server; $query = 'UPDATE table_domain_z SET whois_server = "'.mysql_real_escape_string($whois_server).'", WHERE id = '.$row['id']; $result_upd = mysql_query($query); } } Поскольку каждый whois имеет свои ограничения по кол-ву запросов за определенное время, не стоит за 1 раз отсылать множество запросов. На момент написаня статьи существовало чуть более 300 доменов первого уровня, и если не спеша обновлять страницу, запускающую скрипт извлечения информации о whois-серверах доменов первого уровня, то за пару минут БД будет заполнена необходимой информацией. Конечно, если whois необходимо вермя от времени обновлять, то лучше всего запускать подобный скрипт с помощью журнала заданий (cron). Далее уже не составит труда написать клиентскую часть whois-сервиса. // ... // Проверка данных формы и whois-сервера для запрашиваемой зоны // ... $con = @fsockopen($row['whois_server'], 43, $errno, $errstr, 5); if ($con) { $response = ''; fputs($con, $_POST['domain_name']."\r\n"); while(!feof($con)) { $response .= fgets($con, 128); } } // ... // Вывод результатов // ... Опубликовано: 2011/06/18
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/php.php?txt=63" target="_blank">Whois сервис на PHP</a> 12317
Добавить комментарий
|