2009-05-13 15 views
9

¿Cómo puedo averiguar el proveedor de ISP de una persona que ve una página de PHP?¿Cómo recupero el ISP del visitante a través de PHP?

¿Es posible utilizar PHP para rastrearlo o revelarlo?

Si utilizo algo como lo siguiente:

gethostbyaddr($_SERVER['REMOTE_ADDR']); 

vuelve mi dirección IP, no es mi nombre de host o ISP.

Respuesta

0

Creo que necesita utilizar un servicio de terceros (Posiblemente un servicio web) para buscar el IP y encontrar el proveedor del servicio.

9

Esto parece ser lo que usted está buscando, intentará devolver el nombre de host completo si es posible:

http://us3.php.net/gethostbyaddr

+0

esto es lo Estoy buscando .. Muchas gracias –

+0

No entiendo yo ¿Cómo encuentras que el proveedor de servicio usa esto? Haga una aclaración si puede esperar –

+0

... devuelve mi dirección IP ... esto no es lo que quería –

8

No hay nada en las cabeceras HTTP para indicar qué ISP un usuario proviene de, por lo que la respuesta es no, no hay una función incorporada de PHP que le dirá esto. Tendría que usar algún tipo de servicio o biblioteca que asigne direcciones IP a redes/ISP.

0

ir a http://whatismyip.com

que esto le dará su dirección de Internet. Enchufe esa dirección en la base de datos en http://arin.net/whois

+0

Y eso se relaciona con hacerlo a través de PHP ¿cómo, exactamente? –

+2

No veo su mejor método usando php Chad. Puede usar curl, o un whois - muchas opciones, pero si no sabe acerca de arin o whois la información que proporcioné es útil. – Eddy

1

No puede confiar ni en la dirección IP ni en el nombre de host para conocer el ISP que alguien está usando. De hecho, es posible que no use ningún ISP, o puede haber iniciado sesión a través de una conexión VPN a su lugar de trabajo, desde allí usando otra VPN o escritorio remoto a un servicio de alojamiento en otro lado del mundo, y conectarse desde ese. La dirección IP que obtendría sería la de la última máquina remota o de algún cortafuegos en el que se encuentre la máquina, que podría estar en otro lugar.

11

usted puede conseguir todas esas cosas de los siguientes códigos 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

No sé por qué esto no fue reconocido. ¡Funciona genial! Gracias. – bozdoz

+32

Esto infringe los [TOS] (http://whatismyipaddress.com/terms-of-use): "No puede usar un script, agente, aplicación o consultar este sitio web de manera automática sin un permiso previo por escrito". –

+0

Entonces, ¿cuál es la alternativa para él @JeffWinkworth. Por favor puedes decir –

2

A veces cambiar los campos, por lo que esta es la mejora de la post anterior.

<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

Esta es la forma correcta de encontrar un isp desde el sitio o 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() Esta función solo está disponible para usuarios que compraron una edición comercial de GeoIP ISP. – Ingo

+0

GeoIP es una biblioteca paga, su código fuente está muy ofuscado para evitar la distribución –

0

He tratado de corregir la respuesta de Ram Kumar pero cada vez que iba a editar su post que se prohibiría temporalmente y se ignoraron mis cambios. (En cuanto a por qué, no sé, fue mi primera y única edición que he hecho en este sitio web.)

Desde su puesto, su código no funciona más debido a los cambios de sitios web y el Administrador de ejecución comprueba bot básicos (comprobación de las cabeceras):

<?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> 

Tenga en cuenta que solo el suministro de un agente de usuario probablemente sería suficiente y los encabezados adicionales probablemente no sean necesarios, solo los agregué para que la solicitud pareciera más auténtica.

2

¿Por qué no utilizar la API REST de ARIN?

<?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

Cuestiones relacionadas