Определить по ip пользуется ли пользователь vpn?
В общем случае -- нет. Можно попытаться разве определить принадлежность адреса к одному из пулов общедоступных VPN-сервисов.
В общем случае - нет. Можно попытаться построить некоторые предположения и проверить их.
- если IP резолвится в имя, принадлежащее VPN-сервису - скорее всего VPN используется. Для этого нужно иметь списки IP, принадлежащие наиболее известным VPN-сервисам.
- если IP резолвится в имя, принадлежащее крупным датацентрам, есть некоторая вероятность того, что это "частный" VPN, который юзер поднял сам для себя.
- если запросы от юзера приходят одновременно с двух разных IP - как правило из-за ошибок маршрутизации, когда не все запросы направляются через VPN - можно предположить, что он за VPN
- если например на русскоязычный ресурс заходит браузер с русской локалью, но IP принадлежит Европе или Пиндосии - есть некоторая вероятность того, что это юзер, прошедший через VPN