una saber rastrear privada persona localizar exacta encontrar direccion destino como celular http geolocation

http - saber - rastrear ip de celular



Técnicas de detección de localización para direcciones IP. (9)

¿Cuáles son las técnicas de detección de ubicación para direcciones IP?
Sé mirar el
$_SERVER[''HTTP_ACCEPT_LANGUAGE''] (no es preciso pero es útil para detectar la ubicación, por ejemplo, si los usuarios de un rango de IP configuran el francés en su navegador, significa que este rango) pertenece a Francia
y
gethostbyaddr($_SERVER[''REMOTE_ADDR'']) (para buscar el dominio de nivel superior del código de país)
entonces puede ser whois gethostbyaddr($_SERVER[''REMOTE_ADDR''])
algunas veces:
$HTTP_USER_AGENT (la cadena de agente de usuario de Firefox tiene un código de idioma, no es precisa, pero se puede usar principalmente para detectar la ubicación)

También sé cómo obtener la zona horaria pero no funciona en los nuevos navegadores. Además, hay un problema de css que detecta el historial del visitante, se puede usar para ver qué páginas de google y wikipedia ha visitado (google.co.uk, google.com.tr)

Pero ¿qué pasa con las ciudades?


En lugar de utilizar una API de terceros, le sugeriría que utilice un registro de IP alojado automáticamente. Este post te explica más

http://www.techsirius.com/2014/05/simple-geo-tracking-system.html

Básicamente, están utilizando el registro de la base de datos de IP de la ciudad del país de maxmind [ http://dev.maxmind.com/geoip/geoip2/geolite2/] con algunas modificaciones. Después de eso una consulta de muestra.

$ip = $_SERVER[''REMOTE_ADDR'']; $long = sprintf(''%u'', ip2long($ip)); $sql = "SELECT * FROM `geo_ips` WHERE ''$long'' BETWEEN `ip_start` AND `ip_end`";



La mayoría de las bases de datos existentes utilizan una agregación de datos de los registros internacionales ARIN, AFRINIC, ANIC, etc., así como las ubicaciones enviadas por los usuarios. Técnicas más sofisticadas incluyen topología y restricciones Geolocalización.

Ejecuto mi propia API ipdata.co que proporciona varios puntos de datos, entre ellos, el país, la ciudad, la región, el lat / long y otros.

Esta respuesta utiliza una clave de API de "prueba" que es muy limitada y solo para probar algunas llamadas. Regístrese para obtener su propia clave de API gratuita y reciba hasta 1500 solicitudes diarias para el desarrollo.

php > $data = json_decode(file_get_contents(''https://api.ipdata.co/69.59.196.211?api-key=test''),true); php > echo $data[''country_name'']; //United States php > echo $data[''city'']; //Albany


No puede hacer esto sin una base de datos que asigne direcciones IP a ciudades / países / proveedores. Hay ofertas comerciales como ip2location que podría utilizar. Sin embargo, AFAIK no tiene una alternativa gratuita, ya que el mantenimiento de dicha base de datos de IP es bastante trabajo. Alternativa libre: GeoIP2

Actualización: hay varias cosas que le permiten crear tal db, si invierte suficiente tiempo:

  1. Utilice las bases de datos proporcionadas por los registros regionales y locales para encontrar el propietario de una IP.
  2. Muchos ISP utilizan un esquema de nombres que le permite localizar al usuario. A veces, incluso puede leer el nombre de la ciudad en texto sin formato si realiza una búsqueda DNS inversa. A veces es más críptico. Por ejemplo, actualmente tengo p5dcf6c4a.dip.t-dialin.net, y no tengo idea de que el esquema de denominación es ...
  3. Utilice un traceroute. Si no puede identificar la ubicación de un usuario, todavía puede encontrar la ubicación de su enlace ascendente

Puede asignar una dirección IP a su ubicación (ciudad, país, código postal), zona horaria, etc. ya sea con una base de datos o una API (base de datos alojada).

Aquí hay un ejemplo del uso de una API

curl https://ipapi.co/city/ > Mountain View curl https://ipapi.co/country/ > US curl https://ipapi.co/timezone/ > America/Los_Angeles

Más aquí: Ubicación desde la dirección IP


Si está buscando alguna solución para copiar y pegar, le pido este código:

function countryCityFromIP($ipAddr) { //function to find country and city from IP address //Developed by Roshan Bhattarai http://roshanbh.com.np //verify the IP address for the ip2long($ipAddr)== -1 || ip2long($ipAddr) === false ? trigger_error("Invalid IP", E_USER_ERROR) : ""; $ipDetail=array(); //initialize a blank array //get the XML result from hostip.info $xml = file_get_contents("http://api.hostip.info/?ip=".$ipAddr); //get the city name inside the node <gml:name> and </gml:name> preg_match("@<Hostip>(/s)*<gml:name>(.*?)</gml:name>@si",$xml,$match); //assing the city name to the array $ipDetail[''city'']=$match[2]; //get the country name inside the node <countryName> and </countryName> preg_match("@<countryName>(.*?)</countryName>@si",$xml,$matches); //assign the country name to the $ipDetail array $ipDetail[''country'']=$matches[1]; //get the country name inside the node <countryName> and </countryName> preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si",$xml,$cc_match); $ipDetail[''country_code'']=$cc_match[1]; //assing the country code to array //return the array containing city, country and country code return $ipDetail; }

Espero que esto ayude a alguien.


Si la funcionalidad de geolocalización no es un requisito importante para su proyecto, puede usar algo tan simple como esto:

$geotxt=''''; $dt=json_decode(@file_get_contents(''https://freegeoip.net/json/''.$_SERVER[''REMOTE_ADDR''])); if ($dt!=null) $geotxt=$dt->country_name.'', ''.$dt->region_name.'', ''.$dt->city; echo $geotxt;

Debe tener en cuenta que freegeoip tiene un límite de 10k de solicitud / hora.


U puede usar esta función

function ip_info(){ return $data = json_decode(file_get_contents(''http://ip-api.com/json/''),true); }

Llamar a la función

$info = ip_info(); var_dump($info);


Una forma en que se compilan estas bases de datos es a partir de la información whois. Por ejemplo, para determinar la ubicación de 69.59.196.211:

fmark @ home: ~ $ host 69.59.196.211 211.196.59.69.in-addr.arpa puntero del nombre de dominio .com. fmark @ home: ~ $ whois .com

Whois Server versión 2.0

Los nombres de dominio en los dominios .com y .net ahora se pueden registrar con muchos registradores competidores diferentes.

<SNIP>

> Registrante: .com llc
410 Clayton Ave El Cerrito, California 94530 Estados Unidos

<SNIP>

Obviamente, esto no es muy preciso, por lo que supuestamente se utilizan técnicas más sofisticadas.