23

Lister les sites web hébergés sur une même IP

gasy-qui-es-tuLe script PHP de cet article fait suite à une petite déception du site spyonweb.com dans le jeu du moment des SEO à savoir: "Qui est Gasy?" (mystérieux blog SEO pertinent et décalé qui a fait son apparition récemment).
Ma première démarche a été de vérifier la liste des autres sites hébergés sur le même serveur que gasymagnifik.com, la réponse de SpyonWeb m'ayant laissé sur ma faim... J'ai donc allié quelques lignes de code et une commande du moteur de recherche Bing afin d'avoir plus de réponses.

Spyonweb vs mes interrogations

Pour ceux qui ne connaissent pas encore Spyonweb, ce site doté d'une bien belle base de données qui permet de connaître la liste des sites web hébergés sur une même adresse IP (ce qui est pratique quand on fait du netlinking où l'on tentera d'avoir de nombreux liens en provenance d'IP différentes) mais aussi de trouver l'ensemble des sites qui utilisent le même code UA de Google Analytics (sites Web du même propriétaire/webmaster à priori).
spyonweb
La réponse me semblant incomplète probablement parce que les mises à jour de ce site sont trop espacées, j'ai utilisé la commande "ip:" de Bing qui m'a retourné un peu plus de réponses. Je me suis donc lancé dans ce script, ça pourra toujours servir!

Comment ça marche?

On va récupérer l'adresse IP d 'un nom de domaine pour ensuite lancer une boucle sur les page de résultats de Bing avec la requête suivante:
ip:123.45.67.89 -site:1erdomainetrouvé.com -site:2emedomainetrouvé.com -site:3emedomainetrouvé etc.... jusqu'à ce que Bing ne retourne plus de résultats et dans la limite de la longueur max. d'une requête sur Bing.
J'ai ajouté deux colonnes avec la possibilité pour chaque domaine trouvé de faire un Whois et d'aller voir du côté de la WayBack Machine

Le script

Voilà le script, il ne vous reste plus qu'à le mettre dans un fichier .php et à appeler la page.
Attention, il n'est pas complètement fini parfait, sur une IP d'un gros serveur mutualisé, il doit devenir fou et planter... (vous allez bien améliorer ça non?)
Niveau HTML, je ne me suis pas trop foulé, libre à vous de le relooker 🙂

<?
function getndd($value){
$url=parse_url('http://'.$value);
return $url['host'];
}
function getDomValue($html, $path){
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xp = new DOMXPath($dom);
$nodeList = $xp->query($path);
$tab = array();
foreach($nodeList as $domElement){
$tab[] = getndd($domElement->nodeValue);
}
return $tab;
}
function nddsameip ($ip)
{
$path='/html/body/div/div/div[2]/div[3]/div/div[2]/div/div/div/div[2]/ul/li/div/div[2]/cite';
$requete = '';$domaine = '';$i=0;$j=0;
$useragent='Opera/9.63 (Windows NT 5.1; U; fr) Presto/2.1.1';
do {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_URL,'http://www.bing.com/search?count=50&q=ip%3A'.$ip.$requete);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec ($ch);
$matches[1] = getDomValue($result, $path);
$matches = array_unique($matches[1]);
//$tata .= print_r($matches).$result;
foreach (($matches) as $key => $domaine) {
if (!eregi('site:'.$domaine,$requete)) {
$j++;
$requete .= '%20-site:'.$domaine;
$lignes .= '<tr><td>'.$domaine.'</td><td><a href="http://wayback.archive.org/web/*/http://'.$domaine.'" target="_blank">WayBackMachine</td><td><a href="http://whois.domaintools.com/'.$domaine.'" target="_blank">Whois </a></td></tr>';
$export .= $domaine."\n";}
}
sleep(1);
$i++;
if(eregi('no_results',$result)) $i=1000;

}
while ($i<50) ;
file_put_contents($ip.'.txt',$export);
$output = '<br /><br /><table class="form"><tr><td colspan="3" align="center"><b>Liste des '.$j.' noms de domaines sur '.$ip.':</b></td></tr><tr><td><b>Domaine</b></td><td><b>WayBackMachine</b></td><td><b>Whois</b></td></tr>'.$lignes.'<tr><td colspan="3"><br />Télécharger l\'export (clic droit): <a href="'.$ip.'.txt">'.$ip.'.txt</a></td></tr><tr><td colspan="3"><br /><u>Rêquete Bing effectuée:</u> <a href="http://www.bing.com/search?q=ip%3A'.$ip.$requete.'" target="_blank">http://www.bing.com/search?q=ip%3A'.$ip.str_replace('%20',' ',$requete).'</a></td></tr></table><br /><br /><br />';
return $output;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Lister les sites Web hébergés sur la même IP</title>
<style type="text/css">
* { margin: 0; padding: 0; }
html { height: 100%; font-size: 62.5% }
body { height: 100%; background-color: #FFFFFF; font: 1.2em Verdana, Arial, Helvetica, sans-serif; }
table.form { margin-left: auto;  margin-right: auto;margin-top:50px; width:500px;border-collapse: collapse; border-width:1px;  border-style:solid;  border-color:black; }
table.form td { padding: 4px 5px; font-weight: normal;border-bottom: 1px solid #000000; line-height:15px;}
table.form label { font-family: Verdana, Arial, Helvetica, sans-serif; color: #181818; margin-right: 12px; }
table.form input { width: 340px; }
table.form input.inp-text { border: 1px solid #3E3E3E; padding: 2px; background-color: #3F3F3F; color: #FFFFFF; }
table.form td.submit-button-center { text-align: center !important; }
table.form input.submit-text { font: 1.4em Georgia, "Times New Roman", Times, serif; letter-spacing: 1px; width: auto; }
</style>
</head>
<body>
<br><br><h1 align="center">Inspecteur IP/sites Web</h1>
<?
if (isset($_POST["domaine"]) && $_POST["domaine"]!='')
{
print nddsameip(gethostbyname(strip_tags($_POST["domaine"])));
}
else {?>
<form action="<?print $_SERVER['PHP_SELF'];?>" method="post">
<table class="form">
<tr>
<td><strong>Trouver d'autres site sur le même serveur que le domaine:</strong></td>
</tr>
<tr>
<td><input class="inp-text" name="domaine" id="domaine" type="text" size="20" /></td>
</tr>
<tr>
<td class="submit-button-center" colspan="3"><i>ex: www.gasymagnifik.com</i><br><input class="submit-text" type="submit" value="Vas-y pépère!" /></td>
</tr>
</table>
</form>

</body>

<?}?>

Conclusion:
- ce script m'a été complètement inutile pour son but initial... je n'ai toujours pas trouvé Gasy, et c'est tant mieux! (enfin j'ai une piste sérieuse... "y'a trop de suspense!")
- je savais parfaitement que je ne trouverais pas Gasy comme ça, ça aurait été le sous-estimer;-)
- longue vie à Mr #GasyMagnifik et son blog
- ce script peut être utile dans uns stratégie de netlinking pour varier les IP

23 commentaires

  1. Ptin tout ça pour une gonzesse, t’es en manque comme ça Padawan ? ^^

    cool ton script…symaptoche !

  2. Soulagé que tu n’as pas pu mettre la main dessus.
    Quelque part, garder le mystère préservera l’intérêt de ce blog.

    • Tu penses réellement qu’il irait s’auto linker de cette façon ? J’ai un doute !

  3. Je vais essayer les deux (entre yougetsignal et spyonweb) et poster un petit billet sur celui que j’aime, tiens en voilà une idée qu’elle est bonne.

    Ceci étant dit le petit script me semble très bon. La question est de savoir s’il faut s’armer de proxies ou pas avant de le lancer histoire de ne pas trop chauffer l’IP.

    Good job Mister Holmes !

  4. Ping : La zik SEO du jour "this is the end"
  5. Moi, je tente une approche beaucoup moins systémique, basée sur la réaction de l’homme (ou la chose) face à la suggestion.
    Je croise ensuite les données obtenues avec un panel d’êtres humains représentatif en fonction de diverses variables démographiques.
    Bref, This is the End ou pas loin pour le beau Gasy…

    Sinon, j’en attendais pas moins de toi, Aymeric, trop bien ton plan ^^ !

  6. Bonjour Aymeric,

    Je ne recherche pas qui est Gasy. Ceci étant, j’adore le style “punch” qu’il ou elle utilise pour écrire des articles très instructifs.

    amicalement

  7. Au fil de ses commentaires, il lâche des infos sur lui (ou intox afin de mieux noyer le poisson). En tout cas, le script pourra servir à d’autres applications. Merci Aymeric pour le partage.

  8. Hello

    ton post m’a intrigué alors j’ai mené ma petite enquete et ma piste me mene vers une personne dont les initiales sont K.D (je ne veux pas devoiler son identité en public si il s’avere que j’ai reussi à trouver)

    beaucoup plus simplement qu’en utilisant spyonweb ou site similaire

    • Oui alors en fait, je vois de quoi tu parles.. mais c’est un profil de Whois Bidon, malheureusement. Gasy est rusé 😉

  9. Euh, perso, je n’ai rien compris mais le script a l’air intéressant !

    2 semaines de vacances et, quand je rentre, on me dit que le monde SEO a refroidit rapport à un pingouin et qu’il y a un Gasy, Wtf ! 🙂

  10. Moi je sais qui c’est :p

    Je savais même pas qu’il y avait des commandes avec l’ip sur les moteurs de recherche, je vais regarder ça.

  11. Ca fait un moment que j’utilisais Spyonweb et parfois c’est vrai c’est pas très bien actualisé tout ça. J’ai changer mon domaine d’hébergeur depuis près d’un mois et Spyonweb me dit qu’il est sur mon ancien serveur… Merci pour ce code très pratique l’ami. 🙂

  12. Merci Gazy ! Grace à toi ca bosse dur. Aymeric réalise même des scripts pour te trouver.
    Merci pour le partage.

  13. bonjour,
    Comprend pas bien la démarche, Bing. fait ça très bien il me semble, il suffit de faire la recherche de sa propre IP c’est tout ! Bing liste tous les sites présents sur le même serveur.
    Enfin bien le code php tout de même !

    • Oui Bing fait ça très bien mais sur des serveurs qui hébergent plusieurs centaines de domaines, un script est que même plus adapté (que de se faire toutes les pages de résultats à la main…) C’est de l’automatisation

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *