كيفية إجراء بحث عن عنوان IP باستخدام جداول بيانات Google

يمكن لمواقع الويب تحديد الموقع الجغرافي للزائر باستخدام عنوان IP الخاص به وتقديم محتوى أكثر صلة. على سبيل المثال، قد يستخدم أحد مواقع الطقس عنوان IP الخاص بك لتقدير موقعك التقريبي وتوفير توقعات الطقس لمدينتك الحالية تلقائيًا. يمكن لموقع ويب صرف العملات تحديد عملتك الافتراضية بناءً على بلدك والتي يتم اكتشافها من عنوان IP الخاص بك.
هناك خدمات مجانية للبحث عن عناوين IP على الويب، ip2c.org
على سبيل المثال، سيكشف ذلك عن بلد عنوان IP الخاص بعميلك من خلال طلب HTTP بسيط. نحن نستخدم هذه الخدمة داخليًا في Digital Inspiration لتحديد مزود خدمة الدفع على صفحة الخروج.
بحث جماعي عن عناوين IP باستخدام جداول بيانات Google
يعد IP2Location بديلاً جيدًا آخر يسترد معلومات أكثر تفصيلاً عن الموقع الجغرافي لأي عنوان IP. يمكن لخدمة البحث عن موقع IP استرداد بلد العميل واسم المدينة والمنطقة واسم مزود خدمة الإنترنت والمزيد.
إذا كانت لديك قائمة مجمعة لعناوين IP، فيمكنك استخدام جداول بيانات Google لتقدير التفاصيل الجغرافية المقابلة لكل عنوان في بضع خطوات سهلة:
-
انقر هنا لعمل نسخة من ورقة Google لإجراء عمليات بحث IP بشكل مجمّع.
-
الصق قائمة عناوين IP في العمود A، واحد لكل صف. تعمل خدمة البحث لكل من عناوين IPv4 وIPv6.
-
أدخل مفتاحك في الخلية E1. إذا كانت لديك قائمة صغيرة بعناوين IP، فاستخدمها
demo
كمفتاح أو احصل على مفتاح API الخاص بك من ip2location.com. -
انقر فوق الزر “تشغيل”، وقم بتخويل البرنامج النصي وشاهد التفاصيل الجغرافية وأسماء مزودي خدمة الإنترنت يتم ملؤها في الورقة.
كيف يعمل البرنامج النصي IP2Location
داخليًا، تستخدم ورقة Google خدمة الويب IP2location مع Google Apps Script لتحويل عناوين IP إلى منطقة جغرافية.
ويستخدم خدمة UrlFetchApp لتنفيذ طلبات HTTP متعددة دفعة واحدة لتحسين الأداء. إليك كود المصدر الكامل:
const ip2location = () => {
// Get all the input data from Google Sheet
const ss = SpreadsheetApp.getActiveSheet();
const data = ss.getDataRange().getDisplayValues();
// Use your own API key or use demo key
const apiKey = data[0][4] || 'demo';
// Generate API URL for IP address
const getUri_ = (ipAddress) => {
const API_URL = 'https://api.ip2location.com/v2';
return `${API_URL}/?ip=${ipAddress}&key=${apiKey}&package=ws4`;
};
const requests = [];
for (let r = 2; r < data.length; r++) {
const [ipAddress, countryName] = data[r];
// Only process rows where the country is blank
if (ipAddress && !countryName) {
requests.push({ url: getUri_(ipAddress), rowNumber: r + 1 });
}
}
// Make API calls in bulk using the UrlFetchApp service
UrlFetchApp.fetchAll(requests).forEach((content, i) => {
// Parse the JSON response
const { city_name, country_name, isp, response } = JSON.parse(content);
// If the response is populated, the API call failed
if (response) throw new Error(response);
// Write the response data to Google Sheet
const values = [[country_name, region_name, city_name, isp]];
ss.getRange(requests[i].rowNumber, 2, 1, 4).setValues(values);
});
// Flush all changes
SpreadsheetApp.flush();
};