01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
|
|
<?php
/******************************************************************************/
/* */
/* __ ____ */
/* ___ / / ___ / __/__ __ _____________ ___ */
/* / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-< */
/* / .__/_//_/ .__/___/\___/\_,_/_/ \__/\__/___/ */
/* /_/ /_/ */
/* */
/* */
/******************************************************************************/
/* */
/* Titre : Fonction de recherche whois (noms de domaine) */
/* */
/* URL : http://www.phpsources.org/scripts502-PHP.htm */
/* Auteur : johnstyle */
/* Date édition : 03 Avril 2009 */
/* Website auteur : http://www.johnstyle.fr */
/* */
/******************************************************************************/
// Informations spécifiques aux extenssions
$info = array(
'fr' => array(
'host' => 'whois.nic.fr',
'regexp' => 'No[\s]*entries[\s]*found',
'pending' => 'status[\s]*:[\s]*REDEMPTION'
),
'com' => array(
'host' => 'whois.crsnic.net',
'regexp' => 'No[\s]*match[\s]*for'
),
'net' => array(
'host' => 'whois.crsnic.net',
'regexp' => 'No[\s]*match[\s]*for'
),
);
function simpleWhois($domain, $tdl, $debug=false){
// Fonction de traitement
// -----------------------------------------------
// 0 => Info, le nom est pris
// 1 => Info, le nom est libre
// 2 => Info, le nom est en pending
// 3 => Avertissement, trop de requêtes
// 4 => Erreur, il faut spécifier une chaine à rechercher (regexp)
// 5 => Erreur, la requête retournée était vide
// -----------------------------------------------
global $info;
// Initialisation de la sortie
$output = '';
// Initialisation de la requête
$req = fsockopen($info[$tdl]['host'], 43, $errno, $errstr, 5);
// le 5 permet de stoper la requete si aucune réponse au bout de 5 secondes
// Récupération de la requête
if($req){
fputs($req, $domain.'.'.$tdl."\r\n");
while(!feof($req)) $output .= fgets($req, 4096);
fclose($req);
}else unset($req);
// mode debug
if($debug) return $output;
// Sortie vide
if(empty($output)) return 5;
// Trop de requêtes
if(preg_match(
"/(Too[\s]+many[\s]+requests|Your[\s]+connection[\s]+limit[\s]+exceeded|daily" .
"[\s]+whois[\s]+limit[\s]+exceeded|Maximum[\s]+queries|WHOIS[\s]+LIMIT[\s]+EXC" .
"EEDED|referral[\s]+host[\s]+not[\s]+responding|Excessive[\s]+querying)/i",
$output)) return 3;
// Pending
if(isset($info[$tdl]['pending']) && !empty($info[$tdl]['pending']) &&
preg_match("/".$info[$tdl]['pending']."/i", $output)) return 2;
// Info de recheche manquant
if(!isset($info[$tdl]['regexp']) || empty($info[$tdl]['regexp'])) return
4;
// Libre
if(preg_match("/".$info[$tdl]['regexp']."/i", $output)) return 1;
// Pris
return 0;
}
// ==========================================
// Exemple d'utilisation
// ==========================================
// Traitement d'une liste de domaines
// --------------------------------------------------
// Tableau des domaines
$tab = array(
'toto.com',
'momo.com',
'yoyo.fr',
'65qs4df56q4qsdqsd.com',
'koko.net',
'zozo.net',
'soso.net',
'qoqo.net',
'qs56d4qs56d4qs65d4qs564.net',
'xoxo.net',
'coco.com',
'asthma.fr',
'nono.net',
'dodo.com',
// etc..
);
// Récupération des résultats
$output = false;
// Exécution
if($tab){
foreach($tab as $host){
list($domain, $tdl) = split("\.", $host, 2);
// le 2 permet de s'arreter après le 1er point ce qui permet d'avoir des
// extenssion du type .com.fr
$output[$host] = simpleWhois($domain, $tdl);
}
}
// Affichage "brut" des données traitées
if($output){
echo '<pre>';
print_r($output);
echo '</pre>';
}
// Mode debug
// --------------------------------------------------
echo '<pre>';
echo simpleWhois('azerty', 'com', true);
echo '</pre>';
// ==========================================
// ==========================================
?>
|