2009-05-13 12 views
9

Jak znaleźć dostawcę ISP osoby oglądającej stronę PHP?Jak mogę pobrać ISP odwiedzającego przez PHP?

Czy można użyć PHP do śledzenia lub odsłonięcia?

Jeśli używam coś jak następuje:

gethostbyaddr($_SERVER['REMOTE_ADDR']); 

wraca mój adres IP, a nie moją nazwę hosta lub dostawcą usług internetowych.

Odpowiedz

0

Myślę, że musisz skorzystać z usług stron trzecich (ewentualnie usługi internetowej), aby wyszukać adres IP i znaleźć dostawcę usług.

9

To wydaje się być to, czego szukasz, to próba powrotu do pełnej nazwy hosta, jeśli to możliwe:

http://us3.php.net/gethostbyaddr

+0

to co Szukam .. Wielkie dzięki –

+0

Nie dostałem yo u .. Jak znaleźć usługodawcę za pomocą tego? Proszę wyjaśnić, czy może –

+0

czekać .. to zwróci mój adres IP ... to nie jest chciałem –

8

nie ma nic w nagłówkach HTTP, aby wskazać, które ISP użytkownika pochodzi, więc odpowiedź brzmi: nie, nie ma wbudowanej funkcji PHP, która ci to powie. Będziesz musiał użyć jakiejś usługi lub biblioteki, która mapuje adresy IP do sieci/dostawców usług internetowych.

0

iść do http://whatismyip.com

to daje swój adres internetowy. Podłącz tego adresu w bazie danych na http://arin.net/whois

+0

A to dotyczy robienia tego przez PHP, jak, dokładnie? –

+2

Nie widzę twojej lepszej metody za pomocą php Chad. Możesz użyć curl lub whois - wiele opcji, ale jeśli nie wiesz o arin lub whois, podane przeze mnie informacje są pomocne. – Eddy

1

Nie można polegać na adresie IP ani nazwie hosta, aby wiedzieć, z jakiego dostawcy usług korzysta. W rzeczywistości może on w ogóle nie korzystać z usługodawcy internetowego lub być zalogowany przez połączenie VPN do swojego miejsca pracy, stamtąd przy użyciu innej sieci VPN lub zdalnego pulpitu do usługi hostingowej na całym świecie i połączyć się z Tobą z że. Adres IP, który otrzymasz, będzie pochodził z tego ostatniego zdalnego komputera lub z firewalla, za którym znajduje się komputer, który może znajdować się gdzie indziej.

11

można uzyskać wszystkie te rzeczy z następujących kodowania PHP.,

<?php 

$ip=$_SERVER['REMOTE_ADDR']; 

$url=file_get_contents("http://whatismyipaddress.com/ip/$ip"); 

preg_match_all('/<th>(.*?)<\/th><td>(.*?)<\/td>/s',$url,$output,PREG_SET_ORDER); 

$isp=$output[1][2]; 

$city=$output[9][2]; 

$state=$output[8][2]; 

$zipcode=$output[12][2]; 

$country=$output[7][2]; 

?> 
<body> 
<table align="center"> 
<tr><td>ISP :</td><td><?php echo $isp;?></td></tr> 
<tr><td>City :</td><td><?php echo $city;?></td></tr> 
<tr><td>State :</td><td><?php echo $state;?></td></tr> 
<tr><td>Zipcode :</td><td><?php echo $zipcode;?></td></tr> 
<tr><td>Country :</td><td><?php echo $country;?></td></tr> 
</table> 
</body> 
+1

Nie wiem, dlaczego nie zostało to potwierdzone. Działa świetnie! Dzięki. – bozdoz

+32

To narusza [TOS] (http://whatismyipaddress.com/terms-of-use): "Użytkownik nie może używać skryptu, agenta, aplikacji lub w inny sposób przeszukiwać tej witryny w sposób zautomatyzowany bez uprzedniej pisemnej zgody." –

+0

To, co jest dla niego alternatywne @JeffWinkworth. Czy możesz powiedzieć. –

2

Czasami pola zmieni, więc jest poprawa powyższego postu.

<body> 
    <table align="center"> 

<? 
$ip=$_SERVER['REMOTE_ADDR']; 
$url=file_get_contents("http://whatismyipaddress.com/ip/$ip"); 
preg_match_all('/<th>(.*?)<\/th><td>(.*?)<\/td>/s',$url,$output,PREG_SET_ORDER); 
for ($q=0; $q < 25; $q++) { 
    if ($output[$q][1]) { 
     if (!stripos($output[$q][2],"Blacklist")) { 
      echo "<tr><td>".$output[$q][1]."</td><td>".$output[$q][2]."</td></tr>"; 

     } 
    } 
} 
?> 
    </table> 
</body> 
-1

To jest właściwy sposób na znalezienie isp od strony lub ip.

<?php 
$isp = geoip_isp_by_name('www.example.com'); 
if ($isp) { 
    echo 'This host IP is from ISP: ' . $isp; 
} 
?> 
+0

geoip_isp_by_name() Ta funkcja jest obecnie dostępna tylko dla użytkowników, którzy kupili komercyjną Edycję ISP GeoIP. – Ingo

+0

GeoIP jest biblioteką płatną, jej kod źródłowy jest bardzo zaciemniony, aby uniknąć dystrybucji –

0

Mam próbowali poprawną odpowiedź Ram Kumar, ale gdy będę zmieniać swoje stanowisko Chciałbym zostać czasowo zakazane i moje zmiany zostały zignorowane. (Co do tego, nie wiem, to była moja pierwsza i jedyna edycja, którą kiedykolwiek zrobiłem na tej stronie.)

Od swojego stanowiska, jego kod już nie działa z powodu zmiany strony internetowej i Administrator realizujących podstawowe kontrole bot (sprawdzanie nagłówków):

<?php 
$IP = $_SERVER['REMOTE_ADDR']; 

$User_Agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0'; 
$Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; 
$Accept_Language = 'en-US,en;q=0.5'; 
$Referer = 'http://whatismyipaddress.com/'; 
$Connection = 'keep-alive'; 

$HTML = file_get_contents("http://whatismyipaddress.com/ip/$IP", false, stream_context_create(array('http' => array('method' => 'GET', 'header' => "User-Agent: $User_Agent\r\nAccept: $Accept\r\nAccept-Language: $Accept_Language\r\nReferer: $Referer\r\nConnection: $Connection\r\n\r\n")))); 

preg_match_all('/<th>(.*?)<\/th><td>(.*?)<\/td>/s', $HTML, $Matches, PREG_SET_ORDER); 

$ISP = $Matches[3][2]; 
$City = $Matches[11][2]; 
$State = $Matches[10][2]; 
$ZIP = $Matches[15][2]; 
$Country = $Matches[9][2]; 
?> 
<body> 
    <table align="center"> 
     <tr><td>ISP :</td><td><?php echo $ISP;?></td></tr> 
     <tr><td>City :</td><td><?php echo $City;?></td></tr> 
     <tr><td>State :</td><td><?php echo $State;?></td></tr> 
     <tr><td>Zipcode :</td><td><?php echo $ZIP;?></td></tr> 
     <tr><td>Country :</td><td><?php echo $Country;?></td></tr> 
    </table> 
</body> 

Należy pamiętać, że tylko dostarczające user-agent prawdopodobnie wystarczą a dodatkowe nagłówki najprawdopodobniej nie są wymagane, po prostu dodałem je, aby żądanie wyglądało bardziej autentycznie.

2

Dlaczego nie używać interfejsu ARI REST API.

<?php 

// get IP Address 
$ip=$_SERVER['REMOTE_ADDR']; 

// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, 'http://whois.arin.net/rest/ip/' . $ip); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json')); 

// execute 
$returnValue = curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 

$result = json_decode($returnValue); 

echo <<<END 
<pre> 
Handle: {$result->net->handle->{'$'}} 
Ref: {$result->net->ref->{'$'}} 
Name: {$result->net->name->{'$'}} 
echo "OrgRef: {$result->net->orgRef->{'@name'}}"; 
</pre> 
END; 

// eof 

https://www.arin.net/resources/whoisrws/whois_api.html