• Главная
  • Карта сайта
Не найдено

Геотаргетинг для програміста. Що цікавого можуть розповісти безкоштовні геоінформаційні API

  1. Зміст статті Географічні координати - найцінніша інфа, яку веб-розробник може отримати від відвідувачів...
  2. Юзкейс 1. «Я тебе вирахували за IP»
  3. Юзкейс 2. Геомаркетинг
  4. Юзкейс 3. Веселий функціонал
  5. Юзкейс 4. «Наукові» дослідження аудиторії
  6. Для отримання координат
  7. Яндекс.Локатор
  8. Exif-дані фотографій
  9. база GeoIP
  10. складаємо досьє
  11. Дізнаємося адреса користувача
  12. Google Street View
  13. фотографії навколо
  14. Продовження доступно тільки учасникам
  15. Варіант 2. Відкрий один матеріал

Зміст статті

Географічні координати - найцінніша інфа, яку веб-розробник може отримати від відвідувачів сайту. Маючи кмітливість і знаючи пару прийомчиків, можна багато дізнатися про людину по його місцю розташування: адреса, які заклади є неподалік, фотографії, зроблені в його районі, на що скаржаться сусіди і глибину найближчій річки.

INTRO

Якщо ти до сих пір не збираєш дані про місце розташування своїх користувачів, то ти просто ще не читав цю статтю і не знаєш, як з користю для себе застосувати інформацію. Розберемо кілька юзкейсов, щоб показати, як можуть стати в нагоді годинне, а потім перейдемо до практики.

Юзкейс 1. «Я тебе вирахували за IP»

Припустимо, в твоєму блозі завівся троль, який регулярно залишає грубі коменти. Якщо ти збираєш інфу про відвідувачів Яндекс.Локатором, то без праці з'ясуєш, що цей хтось знаходиться на східному кінці вулиці Леніна, в якому якраз живе один неприємний тип з твого універу. І якщо пощастить, то, зробивши запит до Vkontakte API, ти знайдеш його останню фотку.

Юзкейс 2. Геомаркетинг

Яндекс.Директ вже давно застосовує прицільний геотаргетинг для своїх оголошень. Оголошення «Мережа піцерій в Москві» свідомість ігнорує. А повз посилання «Піца Рочдельська вулиця будинок 14» (через дорогу від тебе) пройти практично неможливо.
Ти можеш використовувати годинне для просування товарів і послуг. Якщо людина в даний момент відчуває на собі дію зниженого атмосферного тиску, то є ймовірність, що йому захочеться купити таблетки для підняття життєвого тонусу.

Юзкейс 3. Веселий функціонал

Тут величезний простір для творчості. Ставимо на сайт «нічну» тему оформлення після того, як у користувача заходить сонце. Показуємо йому останні Селфі дівчат, зроблені в 10 км від нього. По клімату і глибині водойм визначаємо, яка риба водиться в окрузі. Варіантів маса.

Юзкейс 4. «Наукові» дослідження аудиторії

Результати анонімного онлайн-опитування можуть виявитися істотно корисніше, якщо на додаток до відповідей відзначати географічне положення респондентів.

Цікаво? Тоді вперед.

Для отримання координат

GPS-дані можна отримати за допомогою JavaScript і HTML5 Geolocation API. Але врахуй: дізнатися точне місце розташування користувача можна тільки з його згоди. Він повинен висловити його, відповівши ствердно на питання спливаючого вікна, чи дозволити поточного сайту дізнатися його місце розташування.

Приклад коду на нативном JS:

// Кладемо в змінну адресу <div> для виводу тексту var posText = document.getElementById ( "positionText"); function getLocation () {if (navigator.geolocation) {// Якщо користувач дозволив, визначаємо його розташування і обробляємо отримане значення за допомогою функції ShowPosition navigator.geolocation.getCurrentPosition (showPosition); } Else {// Якщо немає, виводимо повідомлення про помилку posText.innerHTML = "Цей браузер не може визначати місце розташування"; }} Function showPosition (position) {// Виводимо широту і довготу на сторінку posText.innerHTML = "Широта:" + position.coords.latitude + "<br> Довгота:" + position.coords.longitude; }
Працювати з GPS-даними можна не тільки на JS. У більшості мов є інструменти для їх отримання і обробки:

Яндекс.Локатор

Якщо користувач не хоче добровільно ділитися GPS-інфою, то ще не все втрачено. Є крутий інструмент Яндекс.Локатор. Середня точність визначення становить 300 м. Він обчислює, де знаходиться людина, за наступною інформацією:

  • сигналам мережі мобільного зв'язку;
  • сигналам мереж доступу Wi-Fi;
  • IP-адресою мобільного пристрою.

Впроваджується в проект в рази складніше, ніж HTML5 Geolocation API. Перед відправкою запиту до Яндекс.Локатор API сайт або мобільний додаток має отримати access key і з'ясувати багато подробиць про користувача. Якщо відвідувач сидить в інеті через мобільний зв'язок, то треба знати ID стільникового осередку і силу сигналу, якщо через Wi-Fi - силу сигналу і MAC-адресу точки доступу.

За точними інструкціями відсилаємо тебе до керівництву розробника .

Exif-дані фотографій

Знайти GPS-координати можна і в метаданих знімків, зроблених цифровою камерою. Інформацію про фотках можна читати без згоди користувача. Треба тільки змусити його їх завантажити. Далі на допомогу приходить бібліотека exif-js або серверні інструменти для читання exif-data:

  • в PHP є вбудована функція read_exif_data ();
  • для Ruby є бібліотека exifr ;
  • у Python є Package ExifRead 2.0 ;
  • для С ++ - easyexif .

база GeoIP

Можна спробувати знайти IP-адресу користувача в базі GeoIP, але це чистої води хіромантія. Дорога і застаріла. З мого досвіду, ця база сповнена неточностей і довіряти їй не можна. Та й відсоток використовують VPN досить значний.

складаємо досьє

Отримавши в руки географічні координати, приступимо до збору інформації. Для кожного пункту будемо робити запит з параметрами до одного з API і парсити повертається XML / JSON-відповідь.

Для початку дізнаємося адреса користувача з точністю до вулиці.

Дізнаємося адреса користувача

Це можна зробити Яндекс.Геокодером (з ним можна працювати без попередньої OAuth-авторизації).

Синтаксис запиту:

http://geocode-maps.yandex.ru/1.x/?geocode=36.3630,56.0000

Все просто. Запитом передається два параметри: широта (56.0000) і довгота (36.3630).

Сервер видасть відповідь у форматі XML (див. Скрін). Нас цікавлять такі поля:

  • AdressDetails-> Country-> AdressLine - текстовий рядок з повною адресою користувача;
  • AdressDetails-> Country-> СountryName - країна;
  • AdressDetails-> AdministrativeArea-> AdministrativeAreaName - регіон;
  • AdressDetails-> SubAdministrativeArea-> SubAdministrativeAreaName - район;
  • AdressDetails-> Locality-> LocalityName - населений пункт;
  • AdressDetails-> ThoroughFare-> ThoroughFareName - вулиця.

відповідь Геокодера

Адреса з номером будинку Яндекс.Геокодер не розкриває. Але якщо трохи напружити мізки і згадати шкільну програму, то можна обчислити його. В одному градусі широти 111 км 111 м. З довготою все трохи складніше. Адже діаметр Землі варіюється в залежності від широти. Тому довгота розраховується за такою формулою (6371 - це радіус Землі):

6371 * (Math :: PI / 180) * cos (широта * Math :: PI / 180)

Як ці знання допоможуть обчислити точну адресу користувача? А ось як:

  1. Дізнаємося вулицю за допомогою Яндекс.Геокодера.
  2. Відправляємо запит на отримання точних географічних координат якогось будинку на цій вулиці:
    http://geocode-maps.yandex.ru/1.x/?geocode=пермь, вулиця Яблочкова, 2
  3. Прочитуємо значення з відповіді сервера.
  4. Знаючи довжину градуса широти і довготи, розраховуємо відстань від шуканої точки до цього будинку.
  5. Відкриваємо Яндекс.Карти і лінійкою прикидаємо, який будинок має географічні координати користувача.

Всіх користувачів таких способом не задетектішь, але деяких особливо потрібних цілком. Головне - не помилитися в розрахунках.

Google Street View

Координати можна знайти на Google Maps і включити режим перегляду вулиць. Забавно подивитися на будинок або офіс людини, який нахабно критикує в твоєму блозі фотки свіжого ремонту дачі.

фотографії навколо

Тепер пошукаємо фотографії, зроблені поруч з місцем Х. Як це робиться, розберемо на прикладі ВКонтакте API:

https://api.vk.com/method/photos.search.xml?lat=38.600000&long=35&count=100&radius=500

  • lat - широта;
  • long - довгота;
  • count - кількість повертаються запитом фотографій;
  • radius - радіус кола навколо заданої точки, в якій повинні бути зроблені фотографії.

Ось які поля відповіді нас цікавлять:

  • src, src_big - посилання на фотографії;
  • created - дата створення фотографії в unixtimestamp;
  • owner_id - ID власника фотографії.

Знаючи ID власника, можна зайти на його сторінку або зібрати інфу за допомогою того ж VK API:

https://api.vk.com/method/getProfiles.xml?uids=111111&fields=last_name,first_name,sex,age

  • uids - ID власників через кому;
  • fields - поля, які ми хочемо отримати у відповіді.

Повний список полів доступний в документації .

У Instagram, Facebook і Flickr теж є API з методами для пошуку фотографій по Геотеги. Порядок роботи з ними шукай на сторінках для розробників додатків під ці соцмережі.

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше

Варіант 2. Відкрий один матеріал

Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.


Цікаво?
1.x/?
1.x/?
Xml?
Xml?
Ru»?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью