Геолокация IP адресов и злобные хостеры
Случилось однажды такое, что мне надо было прикрутить к сайту определение региона (области/субъекта РФ/тд.) по IP. Первое что пришло в голову - это воспользоваться уже имеющимся сервисом. После некоторых поисков я остановился на этом замечательном сайте http://ipgeobase.ru/
У них имеются 2 реализации. http://blog.ipgeobase.ru/?p=37 http://blog.ipgeobase.ru/?p=76
Вроде всё просто, Курлом, отправляем адрес, получаем результат, все довольны. Но после часа-полутора возни выяснилось что на хостинге где живёт нужный сайт, провайтер по каким-то причинам запретил Curl'ом ходить по нестандартным портам (а сервисы ipgeobase у нас висят на 8090 и 7020).
Практически моментально отказавшись от использования всяких прокси, было решено сделать всё на стороне клиента, (а что серверу и так нелегко, ещё и ответ курловый ждать ). А чтобы не дёргать по пустякам сервис, результат сохраняется в куках на неделю.
Код решения.
function get_region(){ //get_cookie - не стандартная функция и не часть jquery =) при отсутствии нужной куки возвращает null var region = get_cookie('region'); if (region !== null) { //делаем свои важные дела set_region(region); } //ip нам услужливо печатает сервер. var ip = $("#ip").val(); $.ajax({ type: "GET", url: "http://ipgeobase.ru:7020/geo?ip="+ip, dataType: "xml", success: function(xml) { $(xml).find('ip').each(function(){ var reg = $(this).find('region').text(); //делаем свои важные дела set_region(reg); }); } }); }
original url: http://blog.c0f3.net/2013/08/ip.html