понедельник, 5 августа 2013 г.

Геолокация 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);
   });
  }
 });
}


1 комментарий:

  1. The secret is choosing an internet on line casino with a strong reputation, so we solely included trusted firms on our listing. Our listing of the top on line casino websites for UK players contains regulated online on line casino websites providing a wide range|a variety} of payment choices. Whether you want to pay with a Visa, Mastercard, PayPal, or even crypto, you can find an choice on our listing. The present welcome bonus at this UK online on line casino provides new players a primary deposit bonus of 50 온라인카지노 bonus spins. First deposits must meet the €10 minimal, however PlayOJO doesn’t require minimal wagering for welcome bonuses.

    ОтветитьУдалить