Как можно определить, что IP-адрес не принадлежит России?

Как можно определить, является ли IP-адрес иностранным, если у меня нет доступа к платному источнику данных и не хочу платить за каждый запрос? Ищу решение на языке PHP.
  • 20 октября 2023 г. 18:18
Ответы на вопрос 2
Если у вас нет доступа к платному источнику данных и вы не хотите платить за каждый запрос, можно использовать несколько бесплатных публичных сервисов для определения географического местоположения IP-адреса.

Один из таких сервисов - ip-api.com. Они предоставляют бесплатное API для определения географического местоположения IP-адреса. Вы можете использовать их API в своем коде на PHP, чтобы получить информацию о стране, которой принадлежит IP-адрес.

Пример кода на PHP, использующего ip-api.com API:

```php
function isForeignIP($ip) {
    $url = "http://ip-api.com/json/{$ip}";
    
    // Отправляем GET-запрос к API
    $response = file_get_contents($url);

    // Декодируем JSON-ответ
    $data = json_decode($response);
    
    // Проверяем, является ли страна Россией
    if ($data->country != 'Russia') {
        return true; // IP-адрес не принадлежит России
    } else {
        return false; // IP-адрес принадлежит России
    }
}

// Пример использования:
$ip = $_SERVER['REMOTE_ADDR'];
if (isForeignIP($ip)) {
    echo "IP-адрес {$ip} не принадлежит России";
} else {
    echo "IP-адрес {$ip} принадлежит России";
}
```

Вы можете адаптировать этот код для своих нужд. Однако имейте в виду, что бесплатные публичные сервисы могут иметь ограничения по количеству запросов или недоступностью в определенное время.
https://dev.maxmind.com/geoip/geolite2-free-geoloc... - ранее был предоставлен бесплатный доступ к этому сервису, и он остается бесплатным. Впрочем, теперь вам потребуется зарегистрироваться, чтобы воспользоваться им.
Похожие вопросы