IPLookInfo

وثائق API لتحديد الموقع الجغرافي لعناوين IP

واجهة JSON API مجانية لتحديد الموقع الجغرافي لعناوين IP وبيانات ASN والمخاطر. تدعم IPv4 وIPv6 وHTTPS وCORS.

البدء السريع

لا حاجة للتسجيل لتجربتها. استدعِ نقطة النهاية أدناه بدون مفتاح للحصول على بيانات عنوان IP الخاص بك (بحد 100 طلب يوميًا).

curl https://iplookinfo.com/json

المصادقة

أنشئ مفتاح API مجانيًا في لوحة التحكم وأرسله في ترويسة Authorization. تعمل معلمة الاستعلام token أيضًا للاختبارات السريعة، لكن تجنّبها في بيئة الإنتاج لأن عناوين URL ينتهي بها المطاف في السجلات.

Authorization: Bearer ipl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

نقاط النهاية

GET/api/v1/{ip}
ابحث عن أي عنوان IPv4 أو IPv6.
GET/api/v1/me
ابحث عن عنوان IP الخاص بالمستدعي. متاح أيضًا على /json.
POST/api/v1/batch
ابحث عن ما يصل إلى 10,000 عنوان IP في طلب واحد (الخطط المدفوعة). يُحتسب كل عنوان IP كطلب واحد.

معلمات الاستعلام

lang — لغة أسماء الأماكن: en وzh وes وpt وru وja. الافتراضية en.

الاستجابة

يُضمَّن الكائن risk فقط في خطتي Pro وBusiness.

{
  "ip": "8.8.8.8",
  "version": "IPv4",
  "type": "unicast",
  "bogon": false,
  "network": "8.8.8.0/24",
  "continent": { "code": "NA", "name": "North America" },
  "country": { "code": "US", "name": "United States", "is_eu": false },
  "region": null,
  "city": null,
  "postal": null,
  "location": { "latitude": 37.751, "longitude": -97.822, "accuracy_radius_km": 1000, "time_zone": "America/Chicago" },
  "asn": { "asn": 15169, "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24" },
  "isp": { "name": "Google", "organization": "Google", "is_mobile": false, "mobile_country_code": null, "mobile_network_code": null },
  "risk": { "score": 60, "is_tor": false, "is_vpn": false, "is_datacenter": true, "provider": "Google Cloud" }
}

حدود المعدل والأخطاء

تحمل كل استجابة الترويسات X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset. يُعاد تعيين الحصص عند 00:00 UTC.

تستخدم الأخطاء بنية JSON موحّدة مع رمز حالة HTTP:

HTTP/1.1 429 Too Many Requests

{ "error": { "code": "quota_exceeded", "message": "..." } }
  • 400 invalid_ip / bad_request
  • 401 invalid_key
  • 403 plan_required
  • 413 too_many
  • 429 rate_limited / quota_exceeded

التجاوز

يمكن للخطط المدفوعة تفعيل التجاوز من لوحة التحكم. عندها تتم تلبية الطلبات التي تتجاوز الحصة اليومية وتُفوتر لكل 1,000 طلب، حتى حد إنفاق شهري تختاره. وتحمل هذه الاستجابات الترويسة X-Overage-Units.

أمثلة برمجية

cURL

curl -H "Authorization: Bearer $IPLOOKINFO_KEY" https://iplookinfo.com/api/v1/8.8.8.8

# Batch (paid plans)
curl -X POST -H "Authorization: Bearer $IPLOOKINFO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ips":["8.8.8.8","1.1.1.1"]}' https://iplookinfo.com/api/v1/batch

JavaScript

const res = await fetch("https://iplookinfo.com/api/v1/8.8.8.8", {
  headers: { Authorization: `Bearer ${process.env.IPLOOKINFO_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();
console.log(data.country?.code, data.city);

Python

import os, requests

r = requests.get(
    "https://iplookinfo.com/api/v1/8.8.8.8",
    headers={"Authorization": f"Bearer {os.environ['IPLOOKINFO_KEY']}"},
    timeout=5,
)
r.raise_for_status()
data = r.json()
print(data["country"]["code"], data["asn"]["name"])

PHP

$ctx = stream_context_create(["http" => [
    "header" => "Authorization: Bearer " . getenv("IPLOOKINFO_KEY"),
]]);
$data = json_decode(file_get_contents("https://iplookinfo.com/api/v1/8.8.8.8", false, $ctx), true);
echo $data["country"]["code"];

Go

req, _ := http.NewRequest("GET", "https://iplookinfo.com/api/v1/8.8.8.8", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("IPLOOKINFO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
var data map[string]any
json.NewDecoder(resp.Body).Decode(&data)