गाइड

थर्ड-पार्टी स्क्रिप्ट के बिना IP से विज़िटर का जियोलोकेशन करें

वेब पर ज़्यादातर IP जियोलोकेशन एक JavaScript टैग से होता है जो विज़िटर के ब्राउज़र से किसी थर्ड पार्टी को कॉल करता है। यानी लोड करने के लिए एक और स्क्रिप्ट, एक और अनुरोध जिसका ब्राउज़र को इंतज़ार करना पड़ता है, और एक और चीज़ जो विज़िटर द्वारा ब्लॉक किए जाने पर चुपचाप विफल हो सकती है।

इसके बजाय सर्वर-साइड लुकअप

/v1/ip एंडपॉइंट एक IP पता लेता है और सीधे लोकेशन डेटा लौटाता है। अगर आप इसे अपने बैकएंड से कॉल करते हैं, उस IP पते का उपयोग करके जो आपका वेब सर्वर आने वाले कनेक्शन पर पहले से देखता है, तो विज़िटर के ब्राउज़र में कोई स्क्रिप्ट चलती ही नहीं।

GET /v1/ip?ip=203.0.113.42
{
  "status": "ok",
  "ip": "203.0.113.42",
  "version": 4,
  "found": true,
  "country": "France",
  "country_code": "FR",
  "region": "Ile-de-France",
  "city": "Paris",
  "postcode": "75001",
  "lat": 48.8566,
  "lon": 2.3522,
  "timezone": "Europe/Paris",
  "asn": 12345,
  "org": "Example Networks"
}

IP पैरामीटर छोड़ देना

अगर आप इस एंडपॉइंट को ip पैरामीटर के बिना कॉल करते हैं, तो यह कॉल करने वाले का अपना पता खोजता है, जो तब सुविधाजनक है जब आपका बैकएंड उससे अभी जुड़े विज़िटर की ओर से अनुरोध कर रहा हो। ip पैरामीटर को स्पष्ट रूप से पास करना तब सही है जब आपके पास पता पहले से लॉग किया हुआ हो और आप उसे बाद में खोज रहे हों।

आपको क्या वापस मिलता है

देश, क्षेत्र और शहर ज़्यादातर पर्सनलाइज़ेशन उपयोगों के लिए काफ़ी हैं। timezone फ़ील्ड का मतलब है कि अक्सर आपको सिर्फ़ यह जानने के लिए दूसरा लुकअप नहीं करना पड़ता कि उस विज़िटर के यहाँ स्थानीय समय क्या है। asn और org फ़ील्ड उस नेटवर्क की पहचान करते हैं जिससे पता जुड़ा है, जो सामान्य पर्सनलाइज़ेशन से आगे की किसी भी चीज़ के लिए उपयोगी है, जैसे होस्टिंग प्रोवाइडर या कॉर्पोरेट नेटवर्क को पहचानना।

संभालने लायक एक खास स्थिति

हर पता किसी लोकेशन में रिज़ॉल्व नहीं होता। जो रेंज आरक्षित है, आवंटित नहीं है, या बस डेटासेट में नहीं है, उसके लिए found फ़ील्ड false होता है, और उस स्थिति में लोकेशन फ़ील्ड मौजूद नहीं होंगे या खाली होंगे। country या city पढ़ने से पहले found जाँचें, यह मानने के बजाय कि सफल HTTP रिस्पॉन्स का मतलब हमेशा उपयोग लायक लोकेशन है, क्योंकि किसी निजी या आरक्षित पते पर किया गया अनुरोध भी found को false पर सेट करके 200 ही लौटाएगा।

एक गलती जिससे बचना चाहिए

इस एंडपॉइंट को हर सेशन में एक बार के बजाय हर एक पेज व्यू पर कॉल करना, वह सबसे आम तरीका है जिससे कोई साइट बिना किसी वास्तविक फ़ायदे के अपना कोटा खर्च कर देती है। किसी विज़िटर का IP पता, और इसलिए उसकी अनुमानित लोकेशन, आम तौर पर एक ही विज़िट के दौरान एक पेज से दूसरे पेज के बीच नहीं बदलती। सेशन शुरू होने पर इसे एक बार खोजें, परिणाम को सेशन के साथ सहेजें, और एंडपॉइंट को दोबारा कॉल करने के बजाय बाद के हर पेज पर उसी सहेजी गई कॉपी से पढ़ें।

अनुरोध की लागत और कैशिंग

हर IP लुकअप एक अनुरोध है। चूँकि किसी विज़िटर की लोकेशन एक ही सेशन में शायद ही कभी बदलती है, इसलिए हर पेज व्यू पर कॉल करने के बजाय उसे एक बार खोजें और परिणाम को सेशन के लिए सहेज लें। इससे एक सामान्य साइट हर कुंजी के साथ शामिल, या बिना किसी कुंजी के एक ही पते से उपलब्ध, 2,500 प्रतिदिन मुफ़्त अनुरोधों के भीतर आराम से रहती है।

यही एंडपॉइंट और यही रिस्पॉन्स संरचना आपके अनुरोध में कोई बदलाव किए बिना IPv6 पतों के लिए भी काम करती है, और रिस्पॉन्स में version फ़ील्ड बताता है कि आपको कौन-सी फ़ैमिली वापस मिली। अगर आपके ट्रैफ़िक में IPv6 विज़िटर का अच्छा-खासा हिस्सा है, तो IPv6 लुकअप दस्तावेज़ देखें।

इसे सर्वर-साइड चलाने से कोई थर्ड-पार्टी स्क्रिप्ट आपके पेज से पूरी तरह बाहर रहती है, जो गति और विश्वसनीयता दोनों के लिए मायने रखता है। फ़ील्ड की पूरी सूची के लिए IPv4 लुकअप दस्तावेज़ देखें।