Для сравнения использовались базы:
- MaxMind: GeoLite2 City, 9 октября 2015
- Sypex: Sypex Geo City, 5 октября 2015
Использовались IP из внутренних логов, немного — всего 28012 штук, в основном российских. Но и этого количества хватило для получения интересных результатов.
Для начала — обе базы не справились с шестью адресами, то есть не определили ни город, ни страну:
- 96.47.226.20
- 141.0.14.15
- 141.0.14.199
- 141.0.14.29
- 141.0.14.174
- 195.160.253.4
Дополнительно Sypex не определил ничего для 53 IP:
- 45.33.149.6
- 45.64.9.238
- 45.79.152.156
- 45.79.139.163
- 65.49.14.165
- 65.49.14.85
- 65.49.14.94
- 65.49.14.59
- 65.49.14.60
- 65.49.14.156
- 65.49.14.87
- 104.128.144.131
- 104.152.128.187
- 104.156.222.206
- 104.238.180.234
- 104.45.92.166
- 131.0.160.14
- 131.221.208.2
- 138.122.142.18
- 138.204.27.157
- 141.0.15.155
- 160.176.232.3
- 162.252.188.138
- 172.77.39.227
- 172.78.141.158
- 172.79.136.230
- 177.235.49.236
- 177.92.13.51
- 177.92.20.134
- 179.105.241.151
- 185.104.215.108
- 185.112.142.213
- 185.81.157.159
- 185.91.178.161
- 185.91.179.83
- 185.91.178.227
- 185.91.179.196
- 185.91.178.52
- 185.91.178.66
- 185.91.179.193
- 185.91.179.106
- 185.91.179.237
- 185.91.178.186
- 185.91.178.69
- 185.91.179.4
- 185.91.179.173
- 185.91.178.10
- 185.92.73.126
- 185.95.104.234
- 185.97.165.245
- 185.97.165.11
- 191.37.63.14
- 201.140.240.254
MaxMind — для 78:
- 66.249.81.157
- 66.249.81.153
- 66.249.93.163
- 66.249.93.146
- 66.249.93.153
- 66.249.93.154
- 66.249.93.157
- 66.249.93.150
- 66.249.93.161
- 66.249.81.149
- 82.145.220.108
- 82.145.209.36
- 82.145.221.24
- 82.145.208.144
- 82.145.218.254
- 82.145.223.56
- 82.145.220.94
- 82.145.208.197
- 82.145.221.153
- 82.145.220.208
- 82.145.223.110
- 82.145.221.46
- 82.145.222.49
- 82.145.222.91
- 82.145.217.220
- 82.145.222.101
- 82.145.211.24
- 82.145.221.127
- 82.145.221.34
- 82.145.208.194
- 82.145.210.174
- 82.145.216.190
- 82.145.208.146
- 82.145.208.147
- 82.145.220.65
- 82.145.221.102
- 82.145.208.130
- 82.145.223.7
- 82.145.217.209
- 82.145.222.240
- 82.145.208.196
- 82.145.222.192
- 82.145.220.176
- 82.145.219.143
- 82.145.209.50
- 82.145.222.233
- 82.145.221.226
- 82.145.222.112
- 82.145.208.131
- 82.145.223.93
- 82.145.222.25
- 82.145.220.173
- 82.145.223.4
- 82.145.223.63
- 82.145.223.45
- 82.145.223.51
- 82.145.222.184
- 134.222.104.250
- 169.143.244.115
- 185.26.182.34
- 185.26.180.87
- 185.26.182.25
- 185.26.182.29
- 185.26.180.206
- 185.26.180.111
- 185.26.183.75
- 185.26.180.33
- 185.26.182.35
- 185.26.180.136
- 185.26.182.37
- 185.26.182.33
- 185.26.180.19
- 185.26.180.221
- 185.26.182.36
- 185.26.182.27
- 185.26.182.42
- 185.26.182.31
- 185.26.182.38
С частичным определением, когда определяется только страна, но не город, немного хуже. Sypex озадачился для 91 IP, MaxMind аж для 6509! То есть MaxMind не справился с почти четвертью предоставленных адресов…
Но самое интересное началось при сравнении выдачи данных разными базами для одних и тех же IP. Несовпадений обнаружилось 1066 штук. Для сокращения объёма материала в статье методика проверки была простая: сначала сравнивался код города (обе базы гарантируют их совпадение с кодами объектов GeoNames). При несовпадении проверялось название. «Ведущей» базой здесь была Sypex, как более «благополучная» по «ru», и в сводную таблицу попадало только первое несовпадение имени, дальнейшие отбрасывались. Координаты объектов брались из выдачи, по ним формировались ссылки на гуглокарты, яндекскарты и OSM. И вот что получилось в итоге (полная таблица — по ссылке, там расхождений намного больше):
Sypex | MaxMind | |||
IP | код | объект | код | объект |
5.199.212.40 | 579266 | Baranchinskiy (G), (Я), (O) | 1538636 | Новоуральск (G), (Я), (O) |
2.61.112.181 | 1512236 | Абакан (G), (Я), (O) | 1508054 | Черногорск (G), (Я), (O) |
217.23.187.92 | 582432 | Альметьевск (G), (Я), (O) | 551487 | Казань (G), (Я), (O) |
31.128.219.246 | 581357 | Апатиты (G), (Я), (O) | 548391 | Кировск (G), (Я), (O) |
217.118.81.11 | 580922 | Армавир (G), (Я), (O) | 542420 | Краснодар (G), (Я), (O) |
92.101.51.249 | 581049 | Архангельск (G), (Я), (O) | 518909 | Новодвинск (G), (Я), (O) |
2.92.12.195 | 580493 | Астрахань (G), (Я), (O) | 472757 | Волгоград (G), (Я), (O) |
5.227.218.235 | 579492 | Балаково (G), (Я), (O) | 498677 | Саратов (G), (Я), (O) |
95.73.34.150 | 579464 | Балашиха (G), (Я), (O) | 532615 | Люберцы (G), (Я), (O) |
178.187.43.127 | 1510853 | Барнаул (G), (Я), (O) | 1538642 | Сибирский (G), (Я), (O) |
95.71.47.34 | 578072 | Белгород (G), (Я), (O) | 558146 | Губкин (G), (Я), (O) |
5.8.230.18 | 1510018 | Бийск (G), (Я), (O) | 1510853 | Барнаул (G), (Я), (O) |
95.70.79.206 | 2026643 | Биробиджан (G), (Я), (O) | 2132037 | Брас (G), (Я), (O) |
31.41.192.54 | 2026094 | Братск (G), (Я), (O) | 1497259 | Нов.Силава (G), (Я), (O) |
2.92.93.183 | 571476 | Брянск (G), (Я), (O) | 553915 | Калуга (G), (Я), (O) |
79.141.214.0 | 519336 | Великий Новгород (G), (Я), (O) | 548442 | Кириши (G), (Я), (O) |
185.13.132.63 | 1487281 | Верхняя Пышма (G), (Я), (O) | 1486209 | Екатеринбург (G), (Я), (O) |
95.167.53.228 | 1487277 | Верхняя Салда (G), (Я), (O) | 1497393 | Нижняя Салда (G), (Я), (O) |
31.185.5.71 | 473778 | Видное (G), (Я), (O) | 486968 | Ступино (G), (Я), (O) |
80.83.237.107 | 2013348 | Владивосток (G), (Я), (O) | 2023469 | Иркутск (G), (Я), (O) |
178.35.118.87 | 473249 | Владикавказ (G), (Я), (O) | 524736 | Моздок (G), (Я), (O) |
31.28.219.85 | 473247 | Владимир (G), (Я), (O) | 487837 | Ставрово (G), (Я), (O) |
188.187.16.38 | 472757 | Волгоград (G), (Я), (O) | 498817 | Санкт-Петербург (G), (Я), (O) |
92.38.11.21 | 472761 | Волгодонск (G), (Я), (O) | 533874 | Лозной (G), (Я), (O) |
46.29.234.35 | 472231 | Волжский (G), (Я), (O) | 7043838 | Зареченский (G), (Я), (O) |
178.64.239.12 | 472459 | Вологда (G), (Я), (O) | 569223 | Череповец (G), (Я), (O) |
91.229.177.176 | 472045 | Воронеж (G), (Я), (O) | 572525 | Борисоглебск (G), (Я), (O) |
95.73.174.231 | 471656 | Воскресенск (G), (Я), (O) | 565955 | Дмитров (G), (Я), (O) |
92.242.69.253 | 563708 | Дзержинск (G), (Я), (O) | 520555 | Нижний Новгород (G), (Я), (O) |
95.72.12.150 | 565955 | Дмитров (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
95.72.103.17 | 565614 | Долгопрудный (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
5.140.162.233 | 1486209 | Екатеринбург (G), (Я), (O) | 1491159 | Среднеуральск (G), (Я), (O) |
91.190.176.113 | 466990 | Ессентуки (G), (Я), (O) | 503550 | Пятигорск (G), (Я), (O) |
212.124.11.99 | 555312 | Иваново (G), (Я), (O) | 473247 | Владимир (G), (Я), (O) |
78.85.112.21 | 554840 | Ижевск (G), (Я), (O) | 2132037 | Брас (G), (Я), (O) |
91.226.122.97 | 2023469 | Иркутск (G), (Я), (O) | 2012557 | Железногорск-Илимский (G), (Я), (O) |
176.215.84.101 | 466806 | Йошкар-Ола (G), (Я), (O) | 1502026 | Красноярск (G), (Я), (O) |
178.206.158.72 | 551487 | Казань (G), (Я), (O) | 824195 | Бибаево (G), (Я), (O) |
46.183.6.71 | 554234 | Калининград (G), (Я), (O) | 557882 | Гусев (G), (Я), (O) |
109.202.54.88 | 1504826 | Каменск-Уральский (G), (Я), (O) | 1486209 | Екатеринбург (G), (Я), (O) |
91.217.3.227 | 553190 | Кандалакша (G), (Я), (O) | 581357 | Апатиты (G), (Я), (O) |
95.190.51.192 | 1503901 | Кемерово (G), (Я), (O) | 1510208 | Березовка (G), (Я), (O) |
176.115.155.82 | 548408 | Киров (G), (Я), (O) | 543737 | Котельнич (G), (Я), (O) |
95.72.84.208 | 546230 | Коломна (G), (Я), (O) | 566950 | Давыдово (G), (Я), (O) |
195.88.59.213 | 546521 | Кольчугино (G), (Я), (O) | 537107 | Лакинск (G), (Я), (O) |
92.37.211.162 | 2021851 | Комсомольск-на-Амуре (G), (Я), (O) | 545736 | Комсомольск (G), (Я), (O) |
91.236.204.41 | 1502603 | Копейск (G), (Я), (O) | 1502536 | Коркино (G), (Я), (O) |
95.153.131.117 | 542420 | Краснодар (G), (Я), (O) | 528293 | Майкоп (G), (Я), (O) |
46.166.75.199 | 1502026 | Красноярск (G), (Я), (O) | 1512165 | Ачинск (G), (Я), (O) |
149.62.51.111 | 540030 | Кубинка (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
5.141.221.191 | 1501321 | Курган (G), (Я), (O) | 1510421 | Белозерское (G), (Я), (O) |
46.229.140.229 | 538560 | Курск (G), (Я), (O) | 515012 | Орёл (G), (Я), (O) |
84.18.119.182 | 536162 | Лениногорск (G), (Я), (O) | 578638 | Бавлы (G), (Я), (O) |
178.234.214.208 | 535121 | Липецк (G), (Я), (O) | 558312 | Грязи (G), (Я), (O) |
95.73.102.180 | 533543 | Луховицы (G), (Я), (O) | 501320 | Рошаль (G), (Я), (O) |
85.174.245.231 | 528293 | Майкоп (G), (Я), (O) | 7077462 | Жуковского (G), (Я), (O) |
176.103.98.57 | 531820 | Малаховка (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
62.182.203.22 | 532096 | Махачкала (G), (Я), (O) | 566789 | Дельта (G), (Я), (O) |
95.24.64.218 | 524901 | Москва (G), (Я), (O) | 498817 | Санкт-Петербург (G), (Я), (O) |
78.36.21.225 | 524305 | Мурманск (G), (Я), (O) | 795243 | Снежногорск (G), (Я), (O) |
109.248.226.28 | 524294 | Муром (G), (Я), (O) | 569696 | Чебоксары (G), (Я), (O) |
31.135.77.128 | 523811 | Мытищи (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
95.86.242.75 | 523859 | Мышкин (G), (Я), (O) | 468902 | Ярославль (G), (Я), (O) |
95.78.40.253 | 523750 | Набережные Челны (G), (Я), (O) | 824195 | Бибаево (G), (Я), (O) |
85.173.113.121 | 523523 | Нальчик (G), (Я), (O) | 579574 | Баксан (G), (Я), (O) |
95.73.205.74 | 523426 | Наро-Фоминск (G), (Я), (O) | 565381 | Домодедово (G), (Я), (O) |
46.46.11.126 | 2019528 | Находка (G), (Я), (O) | 2020812 | Лесозаводск (G), (Я), (O) |
83.149.37.235 | 1497543 | Нижневартовск (G), (Я), (O) | 1486209 | Екатеринбург (G), (Я), (O) |
217.23.186.11 | 521118 | Нижнекамск (G), (Я), (O) | 551487 | Казань (G), (Я), (O) |
93.120.171.24 | 520555 | Нижний Новгород (G), (Я), (O) | 519336 | Великий Новгород (G), (Я), (O) |
195.88.17.207 | 1496747 | Новосибирск (G), (Я), (O) | 1496421 | Обь (G), (Я), (O) |
178.213.208.45 | 518976 | Новочебоксарск (G), (Я), (O) | 519148 | Нова (G), (Я), (O) |
178.167.64.81 | 520068 | Ногинск (G), (Я), (O) | 515024 | Орехово-Зуево (G), (Я), (O) |
94.103.238.207 | 516215 | Одинцово (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
91.205.236.66 | 1538634 | Озерск (G), (Я), (O) | 1489837 | Нов.Теча (G), (Я), (O) |
5.166.197.159 | 1496153 | Омск (G), (Я), (O) | 519336 | Великий Новгород (G), (Я), (O) |
79.126.119.225 | 515003 | Оренбург (G), (Я), (O) | 2126132 | Чкалов (G), (Я), (O) |
95.72.162.135 | 515024 | Орехово-Зуево (G), (Я), (O) | 501320 | Рошаль (G), (Я), (O) |
94.253.117.139 | 512023 | Павловский Посад (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
80.95.38.188 | 511565 | Пенза (G), (Я), (O) | 553725 | Каменка (G), (Я), (O) |
176.214.179.193 | 511196 | Пермь (G), (Я), (O) | 2126132 | Чкалов (G), (Я), (O) |
77.82.142.5 | 2122104 | Петропавловск-Камчатский (G), (Я), (O) | 1504924 | Камчатка (G), (Я), (O) |
37.1.2.163 | 508101 | Подольск (G), (Я), (O) | 569591 | Чехов (G), (Я), (O) |
91.238.168.147 | 507977 | Подстёпки (G), (Я), (O) | 482283 | Тольятти (G), (Я), (O) |
84.204.255.21 | 504341 | Псков (G), (Я), (O) | 498817 | Санкт-Петербург (G), (Я), (O) |
194.15.118.205 | 502018 | Реутов (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
77.66.132.52 | 501175 | Ростов-на-Дону (G), (Я), (O) | 501183 | Ростов (G), (Я), (O) |
178.46.9.85 | 1493197 | Салехард (G), (Я), (O) | 1488414 | Уренгой (G), (Я), (O) |
217.118.90.217 | 499099 | Самара (G), (Я), (O) | 1486209 | Екатеринбург (G), (Я), (O) |
178.130.38.73 | 498817 | Санкт-Петербург (G), (Я), (O) | 491061 | Солдатское (G), (Я), (O) |
2.92.127.82 | 498677 | Саратов (G), (Я), (O) | 553915 | Калуга (G), (Я), (O) |
213.110.16.83 | 498418 | Сатка (G), (Я), (O) | 873483 | Скат (G), (Я), (O) |
83.172.36.136 | 1538637 | Северск (G), (Я), (O) | 1489425 | Томск (G), (Я), (O) |
188.35.14.57 | 496638 | Сергиев Посад (G), (Я), (O) | 541950 | Краснозаводск (G), (Я), (O) |
77.51.92.205 | 496527 | Серпухов (G), (Я), (O) | 555746 | Истра (G), (Я), (O) |
46.172.219.145 | 693805 | Симферополь (G), (Я), (O) | 540259 | Крым (G), (Я), (O) |
95.167.146.223 | 491687 | Смоленск (G), (Я), (O) | 468866 | Ярцево (G), (Я), (O) |
46.45.28.247 | 1536289 | Снежинск (G), (Я), (O) | 7077209 | Вега (G), (Я), (O) |
31.42.47.98 | 490996 | Солнечногорск (G), (Я), (O) | 527581 | Менделеево (G), (Я), (O) |
81.177.127.83 | 491422 | Сочи (G), (Я), (O) | 6417459 | Краснознаменск (G), (Я), (O) |
77.34.175.208 | 2016187 | Спасск-Дальний (G), (Я), (O) | 1491197 | Спасск (G), (Я), (O) |
46.45.227.93 | 487846 | Ставрополь (G), (Я), (O) | 522377 | Невинномысск (G), (Я), (O) |
5.141.203.210 | 1490624 | Сургут (G), (Я), (O) | 1508291 | Челябинск (G), (Я), (O) |
95.52.181.96 | 485239 | Сыктывкар (G), (Я), (O) | 511794 | Печора (G), (Я), (O) |
78.132.234.93 | 484646 | Тамбов (G), (Я), (O) | 502793 | Рассказово (G), (Я), (O) |
95.29.242.149 | 480060 | Тверь (G), (Я), (O) | 498677 | Саратов (G), (Я), (O) |
95.67.213.95 | 482283 | Тольятти (G), (Я), (O) | 463082 | Жигулевск (G), (Я), (O) |
109.206.157.24 | 482260 | Томилино (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
77.106.104.3 | 1489425 | Томск (G), (Я), (O) | 1489870 | Тайшет (G), (Я), (O) |
2.94.171.202 | 480562 | Тула (G), (Я), (O) | 543878 | Кострома (G), (Я), (O) |
91.143.48.193 | 1488754 | Тюмень (G), (Я), (O) | 1490624 | Сургут (G), (Я), (O) |
85.26.164.249 | 479123 | Ульяновск (G), (Я), (O) | 482283 | Тольятти (G), (Я), (O) |
46.46.34.19 | 2014006 | Уссурийск (G), (Я), (O) | 2020812 | Лесозаводск (G), (Я), (O) |
94.41.235.183 | 479561 | Уфа (G), (Я), (O) | 522942 | Нефтекамск (G), (Я), (O) |
92.37.159.205 | 2022890 | Хабаровск (G), (Я), (O) | 2021851 | Комсомольск-на-Амуре (G), (Я), (O) |
5.140.235.75 | 1503772 | Ханты-Мансийск (G), (Я), (O) | 1490624 | Сургут (G), (Я), (O) |
178.219.32.48 | 550280 | Химки (G), (Я), (O) | 524901 | Москва (G), (Я), (O) |
91.216.72.161 | 569696 | Чебоксары (G), (Я), (O) | 470845 | Вурнары (G), (Я), (O) |
5.141.192.237 | 1508291 | Челябинск (G), (Я), (O) | 511196 | Пермь (G), (Я), (O) |
128.0.161.90 | 568595 | Черняховск (G), (Я), (O) | 554234 | Калининград (G), (Я), (O) |
82.112.37.217 | 567434 | Чусовой (G), (Я), (O) | 511196 | Пермь (G), (Я), (O) |
195.189.180.57 | 495260 | Щербинка (G), (Я), (O) | 508101 | Подольск (G), (Я), (O) |
178.219.176.125 | 563523 | Электросталь (G), (Я), (O) | 520068 | Ногинск (G), (Я), (O) |
87.228.42.101 | 536206 | Юбилейный (G), (Я), (O) | 523812 | Мытищи (G), (Я), (O) |
188.244.143.112 | 2119441 | Южно-Сахалинск (G), (Я), (O) | 2132037 | Брас (G), (Я), (O) |
91.220.92.29 | 469178 | Янаул (G), (Я), (O) | 576116 | Благовещенск (G), (Я), (O) |
91.242.167.93 | 468902 | Ярославль (G), (Я), (O) | 497242 | Семибратово (G), (Я), (O) |
Выводов не будет. Хотя, IP 95.24.64.218 безусловно порадовал. Да и «то ли Владивосток, то ли Иркутск» тоже неплохо.
Комментарии (4)
mvs
19.10.2015 22:03Ну и что толку сравнивать 2 демо-версии баз, которые по-определению показывают погоду вместо реальных данных? Для объективности сравните хотя ограниченные веб-версии с подключенными коммерческими базами: sypexgeo.net/ru/demo и www.maxmind.com/en/geoip-demo
К слову сказать, мой IP-адрес, которому уже несколько лет, а провайдеру — больше 10-ти лет, Sypex до сих пор относит к небольшому соседнему городку вместо реального областного центра.
А вот с адресами сотовых операторов одинаково плохо у всех: либо вообще пустой ответ, либо Europe, либо Russia (чаще всего), либо какой угодно город рандомно.
Сейчас у телефона 217.118.79.36 (Томск, Билайн): Sypex и MaxMind считают, что это Санкт-Петербург, а в who.is/whois-ip/ip-address/217.118.79.36 ничего конкретного.kloppspb
19.10.2015 22:28У Sypex единственное отличие free GeoCity от коммерческой версии только в частоте обновлений (2 раза в месяц против недельного). Не думаю, что такая задержка ведёт к протуханию данных вплоть до «погоды». REST API? 30 тысяч запросов в месяц максимум. Да я только за время отладки прогоняю несколько сотен тысяч IP-шников :-)
А у максмайнда по ссылке явно сказано:
If you'd like to test multiple IP addresses, we offer a demo for up to 25 addresses per day.
Если придумается как через коммерческую версию базы прогнать хоть сколько-нибудь значимое количество адресов (хотя бы десяток-другой тысяч) за осмысленное время, да с автоматизацией процесса — будет здорово.
apelsyn
По Украине MaxMind выдал точнее результат, вот IP: 80.91.174.90, правильный ответ Винница.
kloppspb
Точность — это отдельный вопрос, как её тестировать пока не очень понятно.
А косяков у всех хватает. MaxMind, например, не видит разницы между Новгородом и Нижним Новгородом, Ростовом и Ростовом-на-Дону, Комсомольском и Комсомольском-на-Амуре, Спасском и Спасском-Дальним, etc.