Domains auf einer IP finden – PHP

Es ist bisweilen nicht uninteressant, zu erforschen, welche Domains auf der gleichen IP / Server gehosted werden. Damit lassen sich teilweise Seo-Netzwerke aufspüren oder nachprüfen, ob die eigene Domain in schlechter Nachbarschaft ist. Um herauszufinden, welche Domains einer Ip zugeordnet sind, kann man sich zahlreicher Tools bedienen; zB. http://yougetsignal.com/tools/web-sites-on-web-server/, http://de.linkvendor.com/seo-tools/domains-von-ip.html, http://www.pageranktesten.de/reverseiplookup.php.

Bei bing.com ist diese Abfrage auch möglich, indem man ip:IP-Adresse als Suchanfrage angibt. Und hier wird es jetzt interessant, wenn man einen eigenen Reverse-IP Lookup mit zum Beispiel PHP realisieren möchte; denn bei Bing gibt es eine API, die einem die ersten 1000 Ergebnisse in einem Array augibt, welches man rasch mit einem kleinen PHP-Script auswerten kann. Einen API-Key kann man sich hier besorgen: Bing API.

Es folgt das kleine PHP Script,eingebettet in einen rudimentären html-Rahmen, welches ich zur Reverse-IP Abfrage gebastelt habe. Die Bing Api Abfrage habe ich spontan von http://blog.stevenbinder.de/2009/12/23/bing-suchergebnise-per-api-abfrage/ übernommen.

<html>
<head>
<title>Domains by IP</title>
</head>
<body>
<form action="<? echo $_SERVER[PHP_SELF]; ?>" method="get">
<input type="text" name="check" size="30" value="http://">
<input type="submit" class="button" value="Suchen"></form>
 
<?
error_reporting(false);
 
echo "<!--".memory_get_usage(true);
$bib1=memory_get_usage(true);
$mib="1048576";
echo " Bytes ".$bib1/$mib." Megabytes of RAM-->";
 
//bing-abfrage
function getBingData($keyword,$nums=100)
{
//hier api key eingeben -------------------------------------------------------------
$bing_api_key="";
if($nums > 50)
{
$anzahl = $nums / 50;
}else{
$anzahl=1;
}
$start=0;
$pos=0;
$data = array();
for($i=0;$i<$anzahl;$i++)
{
$request ='http://api.search.live.net/json.aspx?Appid='.$bing_api_key.'&sources=web&AdultOption=off&Web.Count=50&Web.Offset='.$start.'&query='.urlencode($keyword);
$response  = file_get_contents($request);
$jsonobj  = json_decode($response);
if(isset($jsonobj->SearchResponse->Web->Results))
{
foreach($jsonobj->SearchResponse->Web->Results as $value)
{
$pos++;
$data[$pos]['title'] =  $value->Title;
$data[$pos]['url'] =  $value->Url;
if(isset($value->Description))
$data[$pos]['desc'] =  $value->Description;
else
$data[$pos]['desc'] =  ' ';
$parseURL = @parse_url($value->Url);
$data[$pos]['domain'] =  $parseURL['host'];
}
$start += 50;
}
}
return $data;
}
 
//url in ip umwandeln
function get_ip($my_url) 
{
$url_array = parse_url($my_url);
$ip = gethostbyname($url_array[host]);
return $ip;
}
 
//url in domain umwandeln
function get_domain($my_domain) 
{
$domain_array = parse_url($my_domain);
$domain = $domain_array[host];
return $domain;
}
 
//eingegebene daten holen
$reverse_check = strip_tags($_REQUEST[check]);
 
//ist formualar leer?
if (empty($reverse_check))
{
echo "Ip oder URL eingeben";
}
else
{
 
//ip oder url eingeben? $reverse_check
if (preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"."(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $reverse_check)) 
{
 
//ip eingegeben
$is_ip ="true";
$ip_check=$reverse_check;
}
 
//url eingegeben -> url in Ip umwandeln 
else
{
 
//wenn nötig, url mit "http" vervollständigen
if (NULL == strstr($reverse_check, 'http'))
{
$reverse_check="http://".$reverse_check;
}
$ip_check=get_ip($reverse_check);
}
 
//nochmal Ip prüfen $ip_check
if (!preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"."(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $ip_check)) 
{
echo "Ip oder URL eingeben";
}
 
//bing abfrage starten -------------------------------------------------
else
{
$bing_abfrage="ip:".$ip_check;
//abfragetiefe einstellen - maximal 1000 ergebnisse möglich
$wert_1=getBingData($bing_abfrage,"1000");
//array zum befüllen bereitstellen
$neu_arr = array();
//nur domains aus abfrageergebnis in das neue array schreiben
foreach ($wert_1 as $schluessel => $wert_2) {
$push=$wert_1[$schluessel]['domain'];
$neu_arr[] = $push;
}
 
//doppelte domains löschen und array sortieren
$uni_arr=array_unique($neu_arr);
asort($uni_arr);
 
//wenn ip eingegeben
if (!empty($is_ip))
{
echo count($uni_arr). " Domains unter ". $reverse_check ." gefunden:<br />";
}
 
//wenn domain eingegeben
else
{
echo "Mit ". get_domain($reverse_check)." insgesamt ". count($uni_arr). " Domains unter ". get_ip($reverse_check) ." gefunden:<br /><br />";
}
 
//ausgabe des neuen arrays
foreach ($uni_arr as $domain){
echo "<a href=\"http://". $domain ."\">". $domain ."</a><br />";
}
echo "<!--".memory_get_usage(true);
$bib2=memory_get_usage(true);
$mib="1048576";
echo " Bytes ".$bib2/$mib." Megabytes of RAM-->";
}
}
?>
</body>
</html>

Live kann man sich an dieser Stelle ein Bild vom Tool machen und schauen, welche Domains auf einer IP gehosted sind…

21-03-2010

4 Kommentare zu “Domains auf einer IP finden – PHP”

10-05-2011
Florian meinte:

Ich habe ein Problem und zwar passiert bei mir nichts wen ich die abfrage starte.

11-05-2011
ISADP.DE meinte:

Was heisst, dass nichts passiert?

Da die Bing-API live abgefragt wird, kann es schon einen Moment dauern, bis die Ergebnisse ausgespuckt werden. Je mehr Domains gefunden werden, umso länger dauert die Reverse-IP-Abfrage.

26-11-2011
mike meinte:

Hallo
Bei mir funktioniert das Script auch nicht, es wird keine domains gefunden. Aber auf der Demo seite funktioniert das ganz gut.

MFG

27-11-2011
ISADP.DE meinte:

Könnte es sein, dass diejenigen, bei denen das Script nicht läuft, vergessen haben, den API Key für die Abfrage bei Bing einzugeben?

Hier muss der API Key im Script rein:

$bing_api_key=""
Kommentar ablassen:

Abschicken!


Mehr
Alle Domains einer Ip finden
HTTP Header Check mit PHP
.htaccess Weiterleitung mit Sonderzeichen
Ip einer Domain herausfinden
Einstieg in Drupal

Sitemap & Archiv
Impressum & Datenschutz
Tag the Web

« - »