Je souhaite récupérer des informations telles que la ville, l'état et le pays d'un visiteur à partir de son adresse IP, afin de pouvoir personnaliser ma page Web en fonction de son emplacement. Existe-t-il un moyen efficace et fiable de le faire en PHP? J'utilise JavaScript pour les scripts côté client, PHP pour les scripts côté serveur et MySQL pour la base de données.
php
geolocation
ip
geoip
Ben Dowling
la source
la source
Réponses:
Vous pouvez télécharger une base de données GeoIP gratuite et rechercher l'adresse IP localement, ou vous pouvez utiliser un service tiers et effectuer une recherche à distance. Il s'agit de l'option la plus simple, car elle ne nécessite aucune configuration, mais elle introduit une latence supplémentaire.
Un service tiers que vous pourriez utiliser est le mien, http://ipinfo.io . Ils fournissent le nom d'hôte, la géolocalisation, le propriétaire du réseau et des informations supplémentaires, par exemple:
Voici un exemple PHP:
Vous pouvez également l'utiliser côté client. Voici un exemple simple de jQuery:
la source
null
de ma ville. Ce n'est pas comme une petite ville ou quelque chose comme ça, mais il n'a toujours pas pu la localiser. Si cela ne fonctionne pas bien aux États-Unis, je doute de la fréquence à laquelle il retournera également null en dehors des États-Unis.Je pensais que je poste que personne ne semble avoir donné d' informations sur cette API particulière, mais son retour exactement ce que je suis après et vous pouvez l' obtenir pour revenir dans de multiples formats,
json, xml and csv
.Cela vous donnera toutes les choses que vous pourriez souhaiter:
la source
Un exemple pur Javascript, utilisant les services de https://geolocation-db.com Ils fournissent une solution de rappel JSON et JSONP.
Aucune jQuery requise!
la source
https://geoilocation-db.com
API?Utilisation de Google APIS:
la source
The geolocation functionality in the Loader hasn't been retired, per se. We stopped documenting it several years ago and have recommended the HTML-based solutions due to their improved accuracy, but the functionality itself has not been removed from the Loader at this time.
code.google.com/p/google-ajax-apis/issues/detail?id=586Vous devez utiliser un service externe ... tel que http://www.hostip.info/ si vous recherchez google "geo-ip", vous pouvez obtenir plus de résultats.
L'API Host-IP est basée sur HTTP, vous pouvez donc l'utiliser en PHP ou en JavaScript selon vos besoins.
la source
J'ai écrit un bot en utilisant une API de ipapi.co , voici comment vous pouvez obtenir l'emplacement d'une adresse IP (par exemple
1.2.3.4
) dansphp
:Définir l'en-tête:
Obtenir une réponse JSON
d'obtenir un champ spécifique (pays, fuseau horaire, etc.)
la source
Cette question est protégée, ce que je comprends. Cependant, je ne vois pas de réponse ici, ce que je vois, c'est que beaucoup de gens montrent ce qu'ils ont trouvé en posant la même question.
Il existe actuellement cinq registres Internet régionaux avec différents degrés de fonctionnalité qui servent de premier point de contact en ce qui concerne la propriété IP. Le processus est en mutation, c'est pourquoi les différents services ici fonctionnent parfois et pas à d'autres moments.
Who Is est (évidemment) un ancien protocole TCP, cependant - la façon dont il fonctionnait à l'origine était par connexion au port 43, ce qui rend difficile son acheminement via des connexions louées, via des pare-feu ... etc.
À l'heure actuelle, la plupart des activités effectuées via RESTful HTTP et ARIN, RIPE et APNIC disposent de services RESTful qui fonctionnent. LACNIC retourne un 503 et AfriNIC n'a apparemment pas une telle API. (Tous ont cependant des services en ligne.)
Cela vous donnera - l'adresse du propriétaire enregistré de l'IP, mais - pas l'emplacement de votre client - vous devez l'obtenir de lui et aussi - vous devez le demander. En outre, les procurations sont le moindre de vos soucis lors de la validation de l'IP que vous pensez être l'initiateur.
Les gens n'apprécient pas l'idée qu'ils sont suivis, alors - mes pensées le sont - obtenez-le directement de votre client et avec sa permission et attendez-vous à beaucoup de rechigner à la notion.
la source
Regardez l'API de hostip.info - elle fournit beaucoup d'informations.
Exemple en PHP:
Si vous faites confiance à hostip.info, cela semble être une API très utile.
la source
Le service dans la réponse de Ben Dowling a changé, c'est donc plus simple. Pour trouver l'emplacement, faites simplement:
Les coordonnées reviennent dans une seule chaîne comme '31, -80 ', donc à partir de là, vous venez de:
la source
En supposant que vous vouliez le faire vous-même et ne pas compter sur d'autres fournisseurs, IP2Nation fournit une base de données MySQL des mappages qui sont mis à jour à mesure que les registres régionaux changent les choses.
la source
J'exécute le service sur IPLocate.io , auquel vous pouvez vous connecter gratuitement en un seul appel:
L'
$res
objet contiendra vos champs de géolocalisation commecountry
,city
etc.Consultez la documentation pour plus d'informations.
la source
J'aime la GeoLite City gratuite de Maxmind qui fonctionne pour la plupart des applications et à partir de laquelle vous pouvez passer à une version payante si elle n'est pas assez précise. Il y a une API PHP incluse, ainsi que pour d'autres langages. Et si vous exécutez Lighttpd en tant que serveur Web, vous pouvez même utiliser un module pour obtenir les informations dans la variable SERVER pour chaque visiteur si c'est ce dont vous avez besoin.
Je dois ajouter qu'il existe également un pays Geolite gratuit (qui serait plus rapide si vous n'avez pas besoin de localiser la ville d'où provient l'IP) et l'ASN Geolite (si vous voulez savoir à qui appartient l'IP) et que finalement tout cela est téléchargeables sur votre propre serveur, sont mis à jour tous les mois et sont assez rapides à rechercher avec les API fournies car elles indiquent "des milliers de recherches par seconde".
la source
PHP a une extension pour ça.
Depuis PHP.net:
Par exemple:
la source
Ipdata.co est une API de géolocalisation IP rapide et hautement disponible avec des performances fiables.
Il est extrêmement évolutif avec 10 points de terminaison dans le monde, chacun capable de gérer> 10 000 demandes par seconde!
En php
Voici un exemple côté client montrant comment vous obtiendrez le pays, la région et la ville;
Avertissement;
J'ai construit le service.
Pour des exemples en plusieurs langues, voir la documentation
Voir également cette analyse détaillée des meilleures API de géolocalisation IP.
la source
Au cas où quelqu'un tomberait sur ce fil, voici une autre solution. Sur timezoneapi.io, vous pouvez demander une adresse IP et obtenir plusieurs objets en retour (j'ai créé le service). Il a été créé parce que j'avais besoin de savoir dans quel fuseau horaire mes utilisateurs se trouvaient, où dans le monde et quelle heure il était actuellement.
En PHP - renvoie l'emplacement, le fuseau horaire et la date / heure:
Utilisation de jQuery:
la source
Ce qui suit est une version modifiée d'un extrait que j'ai trouvé qui utilise http://ipinfodb.com/ip_locator.php pour obtenir ses informations. Gardez à l'esprit que vous pouvez également demander une clé API avec eux et utiliser l'API directement pour obtenir les informations fournies comme bon vous semble.
Fragment
Utiliser
la source
Si vous avez besoin d'obtenir l'emplacement à partir d'une adresse IP, vous pouvez utiliser un service geo ip fiable, vous pouvez obtenir plus de détails ici . Il prend en charge IPv6.
En prime, il permet de vérifier si l'adresse IP est un nœud tor, un proxy public ou un spammeur.
Vous pouvez utiliser javascript ou php comme ci-dessous.
Code Javascript:
Code Php:
Production:
la source
J'ai créé un wrapper pour ipinfo.io . Vous pouvez l'installer à l'aide de composer.
Vous pouvez l'utiliser de cette manière:
la source
Vous pouvez également utiliser le service "smart-ip":
la source
J'ai fait un tas de tests avec les services d'adresse IP et voici quelques façons de le faire moi-même. Tout d'abord, un tas de liens vers des sites Web utiles que j'utilise:
https://db-ip.com/db A un service gratuit de recherche d'ip et a quelques fichiers csv gratuits que vous pouvez télécharger. Cela utilise une clé api gratuite qui est jointe à votre e-mail. Il limite à 2000 requêtes par jour.
http://ipinfo.io/ Service gratuit de recherche d'ip sans fonctions PHP à clé api:
En fin de compte, vous obtenez quelque chose comme ceci:
http://www.geoplugin.com/ Un peu plus ancien mais ce service vous donne un tas d'informations utiles supplémentaires telles que la devise du pays, le code du continent, la longitude et plus encore.
http://lite.ip2location.com/database-ip-country-region-city-latitude-longitude Propose un tas de fichiers téléchargeables avec des instructions pour les importer dans votre base de données. Une fois que vous avez un de ces fichiers dans votre base de données, vous pouvez sélectionner les données assez facilement.
Utilisez la fonction php ip2long (); pour transformer l'adresse IP en une valeur numérique. Par exemple, 1.1.1.1 devient 16843009. Cela vous permet de rechercher les plages d'adresses IP fournies par le fichier de base de données.
Donc, pour savoir où 1.1.1.1 appartient à tout ce que nous faisons, lancez cette requête:
Cela renvoie ces données à titre d'exemple.
la source
Il existe 2 grandes approches pour effectuer la géolocalisation IP: l'une consiste à télécharger un ensemble de données, à l'héberger sur votre infrastructure et à le maintenir à jour. Cela nécessite du temps et des efforts, surtout si vous devez prendre en charge un grand nombre de demandes. Une autre solution consiste à utiliser un service API existant qui gère tout le travail pour vous et plus encore.
Il existe de nombreux services de géolocalisation API: MaxMind, ip2location, Ipstack, IpInfo, etc. Récemment, l'entreprise où je travaille est passé à Ipregistry ( https://ipregistry.co ) et je participais à la décision et d'exécution. Voici quelques éléments à prendre en compte lors de la recherche d'une API de géolocalisation IP:
Voici un exemple pour obtenir des informations de géolocalisation IP (mais aussi des données de menace et d'agent utilisateur à l'aide d'un seul appel):
Remarque: je ne suis pas ici pour promouvoir Ipregistry et dire que c'est le meilleur, mais j'ai passé beaucoup de temps à analyser les solutions existantes et leur solution est vraiment prometteuse.
la source
Si vous recherchez une base de données mise à jour / précise, je recommande d'utiliser celle-ci ici car elle montrait mon emplacement exact qui n'était pas inclus dans de nombreux autres services lorsque je testais.
(Ma ville était
Rasht
et mon pays étaitIran
avec cette adresse IP:2.187.21.235
quand je testais.)Je recommande d'utiliser la base de données plutôt que les méthodes API, car elle sera traitée beaucoup plus rapidement localement.
la source
Ok, les gars, merci pour vos suggestions; Bien que j'ai 6k + d'IP, certains services échouent à mes demandes en raison de certaines limitations; Vous pouvez donc tous les utiliser en mode de repli;
Si nous avons un fichier source au format suivant:
que vous pourriez utiliser cette simple commande d'exemple (PoC) pour Yii:
C'est une sorte de code de merde, mais ça marche. usage:
N'hésitez pas à l'utiliser, à le modifier et à le faire mieux)
la source