Хорошая идея от
@GavriKos, по поводу проверки соты оператора.
Берёте MCC, MNC, LAC, CID, (+ можно MAC-адреса ближайших WiFi, для точности) делаете запрос к Яндекс.Локатору (
api.yandex.ru/locator/doc/dg/api/geolocation-api_j...) на местоположение. Дальше сверяете координаты GPS и от Яндекса, получаете разницу. Если разница больше контрольного значения - отбрасываете запрос. Несколько километров вполне хватит. Конечно, там не все вышки есть, но большая часть будет, особенно по крупным городам.
Если важен и зарубеж, можно также подключить OpenCellID (
opencellid.org), у них базы можно скачать.
Также не помешает проверка, которую используют те же Яндекс и Google при сборе информации для своих локаторов - резкие скачки по карте. Если клиент перемещается за 10 секунд на 15 километров - это плохой клиент.