Info IP (API gratuite de géolocalisation IP)
IP Info est une API gratuite de géolocalisation IP et d’ASN maintenue par Shifter. Une requête GET renvoie le pays, la région, la ville, les coordonnées, le fuseau horaire, l’ISP, l’ASN et le type de connexion d’une adresse IP au format JSON. Il n’y a ni inscription, ni clé API, ni abonnement.
Elle fonctionne sur la même base de données de localisation IP et de réseau que celle utilisée par Shifter pour ses propres pools de proxys. Ainsi, lorsque vous vérifiez une IP de sortie Shifter avec IP Info, vous voyez l’emplacement tel que notre réseau le perçoit.
Points de terminaison
Section intitulée « Points de terminaison »| Request | Returns |
|---|---|
GET http://ip-info.com/json | L’IP qui a effectué la requête (votre serveur, ou votre sortie proxy lorsqu’elle est envoyée via un proxy) |
GET http://ip-info.com/json?ip=8.8.8.8 | Une adresse IPv4 ou IPv6 publique spécifique |
GET http://ip-info.com/8.8.8.8/json | La même recherche, sous forme de chemin |
HTTP (http://ip-info.com/json) fonctionne également et n’est pas redirigé. Utilisez HTTPS depuis les pages web pour éviter le blocage de contenu mixte. Les réponses autorisent les requêtes GET cross-origin, ce qui permet au code du navigateur d’appeler l’API directement.
curl --max-time 10 "http://ip-info.com/json?ip=94.204.59.232"{ "ip": "94.204.59.232", "city": "Motor City", "region": "Dubai", "region_code": "DU", "country": "AE", "country_name": "United Arab Emirates", "continent": "AS", "loc": "25.0459,55.241", "latitude": 25.0459, "longitude": 55.241, "postal": null, "timezone": "Asia/Dubai", "asn": 15802, "as_name": "Emirates Integrated Telecommunications Company PJSC", "isp": "Emirates Integrated Telecommunications Company PJSC", "org": "Emirates Integrated Telecommunications Company", "connection_type": "Corporate", "user_type": "business", "is_anycast": false}La réponse réelle comporte 29 champs ; l’exemple ci-dessus montre ceux que la plupart des intégrations exploitent. Chaque champ est toujours présent, et une valeur que la base de données ne possède pas est renvoyée sous forme de null.
Vérifier une sortie proxy Shifter
Section intitulée « Vérifier une sortie proxy Shifter »Envoyez la requête sans argument via votre proxy. La réponse d’IP Info décrit l’IP de sortie, ce qui vous permet de confirmer que le pays, la ville ou l’ASN que vous avez ciblé est bien celui obtenu.
curl --max-time 15 \ --proxy http://p.shifter.io:443 \ --proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \ http://ip-info.com/jsonimport requests
proxy = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"r = requests.get( "http://ip-info.com/json", proxies={"http": proxy, "https": proxy}, timeout=15,)r.raise_for_status()exit_ip = r.json()print(exit_ip["ip"], exit_ip["country"], exit_ip["city"], exit_ip["asn"])assert exit_ip["country"] == "US", f"expected US, got {exit_ip['country']}"import { HttpsProxyAgent } from "https-proxy-agent";import fetch from "node-fetch";
const agent = new HttpsProxyAgent( "http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443");const res = await fetch("http://ip-info.com/json", { agent });const exit = await res.json();console.log(exit.ip, exit.country, exit.city, `AS${exit.asn}`);Comparez country (code ISO 3166 à deux lettres) avec le pays demandé et asn (un simple nombre, sans préfixe AS) avec le réseau ciblé. Consultez Ciblage géographique pour les indicateurs de nom d’utilisateur.
Utilisation avec des agents IA
Section intitulée « Utilisation avec des agents IA »IP Info ne nécessite aucun flux d’authentification, un agent peut donc l’appeler comme n’importe quel autre point de terminaison HTTP. Il publie des descriptions lisibles par machine que les agents et les développeurs d’outils peuvent charger directement :
https://ip-info.com/llms.txt: une brève introduction rédigée pour les LLMhttps://ip-info.com/llms-full.txt: la référence complète au format texte bruthttps://ip-info.com/openapi.json: le contrat OpenAPI 3.1 (la sécurité est vide, aucune clé requise)
Aucun serveur MCP n’est nécessaire. Si votre framework accepte des définitions de fonctions ou d’outils, celle-ci suffit :
{ "name": "ip_lookup", "description": "Approximate geolocation and network (ASN, ISP) for a public IP address. Omit ip to look up the agent's own network exit.", "input_schema": { "type": "object", "properties": { "ip": { "type": "string", "description": "Public IPv4 or IPv6 literal. Leave empty for the caller's exit IP." } } }}Implémentez-la sous la forme GET http://ip-info.com/json lorsque ip est vide, et GET http://ip-info.com/json?ip=<URL-encoded ip> sinon.
Donnez à l’agent ces règles avec l’outil :
- Un appel sans
ipdécrit le serveur ou la sortie proxy de l’agent lui-même, et non l’utilisateur humain. Pour rechercher l’IP d’un utilisateur, cette IP doit être fournie explicitement à l’agent. - Utilisez
countrypour les comparaisons de pays etasnpour les vérifications de réseau. - Considérez
nullcomme inconnu. Ne complétez jamais un champ manquant. - La localisation est approximative, et IP Info n’est pas un outil de détection de VPN ou de proxy.
Utilisations typiques par des agents : confirmer que le proxy d’un agent de navigation se trouve dans le bon pays avant d’extraire une page localisée, étiqueter les données collectées avec l’emplacement de sortie depuis lequel elles ont été récupérées, et enrichir les IP de journaux ou d’inscriptions avec le pays et l’ASN.
Erreurs et nouvelles tentatives
Section intitulée « Erreurs et nouvelles tentatives »Les erreurs sont renvoyées au format JSON avec un code stable :
{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_ip | Entrée malformée, privée, réservée ou autrement non publique, ou paramètres contradictoires |
| 404 | ip_not_found | Aucun enregistrement pour cette IP dans la base de données active |
| 405 | method_not_allowed | Utilisez GET |
| 503 | database_unavailable | Temporaire ; réessayez avec un délai croissant |
| 504 | timeout | Temporaire ; réessayez avec un délai croissant |
Corrigez les entrées 4xx avant de réessayer. Pour les erreurs 503, 504 et les erreurs de connexion, réessayez avec un court délai croissant borné (par exemple 1, 2 et 4 secondes), puis abandonnez et signalez l’échec.
Données et limites
Section intitulée « Données et limites »- Gratuit, sans quota. Il n’y a aucun quota par clé ou par application, ni de clé API. Il s’agit d’un service partagé à capacité finie : effectuez les requêtes dont votre application a besoin et respectez les conditions d’utilisation. L’utilisation automatisée et commerciale est autorisée.
- Approximatif par conception. Les coordonnées désignent une zone, pas une adresse, et n’identifient jamais une personne.
- Pas un détecteur de proxy ou de VPN.
connection_type,user_typeetis_anycastsont des classifications de la base de données, pas une preuve de la façon dont une IP est utilisée. - Confidentialité. L’API ne conserve aucun historique de recherche. Consultez la politique de confidentialité.
Questions ou écarts de données : envoyez un e-mail à hi@shifter.io en indiquant l’IP et l’emplacement attendu.