Комментарии 40
The current implementation uses the free GeoLite2 City database from MaxMind.
![image](https://habrastorage.org/webt/59/e8/8b/59e88b66f18c1491262772.jpeg)
ps. HTML5 Geolocation API раньше(летом проверял) показывал на десктопе точность до дома(в гугл и яндекс картах, как минимум), меня это напрягало, поэтому запретил везде, где только можно. Теперь(вот только что проверил), HTML5 Geolocation API показывает дом в Рязани, где я жил в 2012 году, и у меня тогда был другой ноут, и другой адрес gmail, и почты на Яндексе вообще не было… вот ща реально стремно стало.
Поискать, сможет ли кто-то правильно определить.
Сайт ВКонтакте правильно определяет?
Проводной Билайн (бывшая Корбина) в Москве иногда выдает IP из Санкт-Петербуржского пула. А может у них вовсе единый пул для Москвы/области и Санкт-Петербурга. Заходишь в Яндекс.Карты, а тебе вдруг, внезапно, карту Санкт-Петербурга показывают :) Пришлось в настройках Яндекса регион вручную указать
Судя по всему, эта проблема растёт из того, что следующая /23 действительно относится к этому некорректному региону.
Судья городского суда решил что это невозможно и отказал в удовлетворении иска к управлению Роскомнадзора на отказ в регистрации регионального интернет сми. Такие дела.
Если нужно определять по России, DaData, собственно и использую. Если нужны города по всему миру, то SxGeo. Проблему Крыма/Севастополя решить достаточно просто. Там административное деление не поменялось, как было две единицы "город Севастополь" и "Республика Крым", так и остались. В массиве, который отдает sxGeo при вызове getCityFull
можно ISO-код региона проверять и корректировать значение в зависимости от предпочтений. Можно даже настройку в продукте сделать "чей Крым" :)
Насколько я слышал (гуглить пруфы лень) — Google ведет свою базу wifi-сетей, по которым сам отслеживает пользователей и может эту информацию предоставлять сервисам.
Так что такой формат, на мой взгляд, не минус — а большой плюс.
Здесь MaxMind и SypexGeo имеют свои форматы баз, которые на нагрузке быстрее, чем «а давайте зальем csv в Postgres, у нас же хайлоад». А Дадата вообще убирает нагрузку с сервера и базы.
И не соглашусь с автором статьи, неоспоримым преимуществом MaxMind является то, что
Крым. Наш.
Как вычислить (город пользователя) по IP