REST API позволяет с помощью простого запроса по HTTP или HTTPS получить наиболее актуальную и расширенную информацию об IP, используя самую свежую базу данных Sypex Geo Max.
Каждому пользователю без регистрации предоставляется 10 000 запросов в месяц (идентификация по IP и REFERER). При регистрации на сайте выдается уникальный ключ для учета запросов, а также на счет добавляются бонусные запросы (30 000 в месяц). Неиспользованные бонусные запросы не переносятся на следующий месяц. В то же время, оплаченные запросы не имеют ограничений по времени. Для пользователей которые купили запросы, сначала расходуются бесплатные бонусные запросы, а после того как они закончатся - начнут расходоваться платные. Таким образом, если у Вас расход 40 000 запросов в месяц, то порции из 100 тысяч платных запросов Вам хватит на 10 месяцев.
REST API позволяет получить данные в JSON, JSONP, XML и MessagePack форматах. Все данные в кодировке UTF-8. За один запрос можно получить информацию до 100 IP. Следует иметь ввиду, что в пакетном режиме (когда запрашивается больше одного IP за раз), будут списываться запросы за каждый IP-адрес в пакете.
Описание
Отправьте GET запрос на
api.sypexgeo.net/{format}/[{ip}][?callback={callback}]
или на один из региональных серверов, к примеру, сервер в Москве
ru.sxgeo.city/{format}/[{ip}][?callback={callback}]
API поддерживает запросы на HTTP и на HTTPS.
Поддерживаемые форматы xml, json, jsonp и msg.
В ip можно указывать, как один IPv4, так и несколько IPv4 разделенных запятой, точкой с запятой, пробелом или переводом строки.
Если не указан ни один IP то выводится информация о вашем IP, с которого делается запрос к API.
callback - JSON ответ заворачивается в callback-функцию. Если callback функция не указана, то автоматически добавляется функция console.dir.
Также можно использовать POST запросы, в таком случае нужные IP должны быть указаны в параметре ip.
Для зарегистрированных пользователей указывается ключ (key):
api.sypexgeo.net/{key}/{format}/[{ip}][?callback={callback}]
Внимание! Обязательно учитывайте, что на сайт "ходят" не только обычные посетители, но и поисковые боты, которые могут создавать много запросов к сайту и соответственно к API.
Поэтому обязательно фильтруйте запросы от поисковых ботов. Это можно сделать простейшим регулярным выражением, вида:
<?php
// Фильтруем ботов, чтобы не было лишних запросов к API
$is_bot = empty($_SERVER['HTTP_USER_AGENT']) || preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl|request|Guzzle|Java)~i",
$_SERVER['HTTP_USER_AGENT']
);
$geo = !$is_bot ? json_decode(
file_get_contents('http://api.sypexgeo.net/json/' . $_SERVER['REMOTE_ADDR']),
true) : [];
// Все данные о IP
print_r($geo);
// Выбираем нужные данные
if ($is_bot) {
echo 'Привет Google Bot, и другие боты';
}
elseif ($geo->country->iso == 'UA'){
switch($geo->city->name_en) {
case 'Kyiv': echo 'Ваш город - Киев'; break;
case 'Lviv': echo 'Ваш город - Львов'; break;
default: echo 'Другой город Украины';
}
}
else {
echo 'Вы не из Украины';
}
Также следует кэшировать результаты запросов для пользователей, чтобы при посещении пользователем 100 страниц сайта, не делать 100 запросов к API.
Региональные сервера Sypex Geo API
В 2016 году были запущены дополнительные сервера Sypex Geo API. Сервера расположены в разных странах и городах. Благодаря чему можно значительно уменьшить пинг (ping) до сервера, а соответственно и время доступа к API.
В данный момент доступны 14 серверов:
Восточная Европа и Азия:
- ua.sxgeo.city - Украина, Хмельницкий (GMhost)
- ru.sxgeo.city - Россия, Москва (Ihor)
- ru2.sxgeo.city - Россия, Санкт-Петербург (Vscale)
- ru3.sxgeo.city - Россия, Екатеринбург (NetAngels)
Западная Европа:
- de.sxgeo.city - Германия, Фалькенштайн (Hetzner)
- nl.sxgeo.city - Нидерланды, Амстердам (Vultr)
- fr.sxgeo.city - Франция, Гравлин (OVH)
- it.sxgeo.city - Италия, Ареццо (ArubaCloud)
- uk.sxgeo.city - Англия, Лондон (ArubaCloud)
Северная Америка:
- us.sxgeo.city - США, Нью-Йорк (DigitalOcean)
- us2.sxgeo.city - США, Маями (VPSServer)
- us3.sxgeo.city - США, Сан-Хосе (Upcloud)
Азия:
Примеры использования
GET http://api.sypexgeo.net/
Выводит информацию о вашем IP в JSON.
GET http://api.sypexgeo.net/json/123.45.67.89
Выводит информацию в JSON об IP 123.45.67.89.
GET http://api.sypexgeo.net/json/123.45.67.89,12.34.56.78
Выводит информацию в JSON об IP 123.45.67.89 и 12.34.56.78.
GET http://api.sypexgeo.net/xml/123.45.67.89
Выводит информацию в XML об IP 123.45.67.89.
GET http://api.sypexgeo.net/jsonp/123.45.67.89?callback=alert
Выводит информацию в JSONP об IP 123.45.67.89, c callback-функцией alert.
Примеры результатов
Результат обращения к API в JSON
GET http://api.sypexgeo.net/json/123.45.67.89
{"ip":"123.45.67.89",
"city":{"id":1835848,"lat":37.566,"lon":126.9784,
"name_ru":"Сеул","name_en":"Seoul","okato":""},
"region":{"id":1835847,"lat":37.58,"lon":127,"name_ru":"Сеул",
"name_en":"Seoul","iso":"KR-11","timezone":"Asia/Seoul","okato":""
},
"country":{"id":119,"iso":"KR","continent":"AS","lat":36.5,"lon":127.75,
"name_ru":"Южная Корея","name_en":"South Korea","timezone":"Asia/Seoul"
}}
Результат обращения к API в XML
GET http://api.sypexgeo.net/xml/123.45.67.89
<?xml version="1.0" encoding="UTF-8"?> <sxgeo> <ip num="123.45.67.89"> <city> <id>1835848</id> <lat>37.566</lat> <lon>126.9784</lon> <name_ru>Сеул</name_ru> <name_en>Seoul</name_en> <okato></okato> </city> <region> <id>1835847</id> <lat>37.58</lat> <lon>127</lon> <name_ru>Сеул</name_ru> <name_en>Seoul</name_en> <iso>KR-11</iso> <timezone>Asia/Seoul</timezone> <okato></okato> </region> <country> <id>119</id> <iso>KR</iso> <continent>AS</continent> <lat>36.5</lat> <lon>127.75</lon> <name_ru>Южная Корея</name_ru> <name_en>South Korea</name_en> <timezone>Asia/Seoul</timezone> </country> </ip> </sxgeo>