1. Самый простой и босяцкий способ - проверка по IP адресу. Есть (как там в комментах сказали) вариант с запросом к стороннему серверу, есть вариант с базой on premise, я за второй. Нужный сет стран пропускаем, ненужный баним.
2. Проверка DNS. Если IP голладнский, а DNS - российский - однозначно VPN. И наоборот - если IP российский, а DNS например от гугла - можно забанить - не выпендривайся, юзай провайдерский DNS.
3. Проверка локали. Если локаль русская, а IP - голландский, однозначно VPN
4. Проверка таймзоны и локального времени. Если таймзона доступна и она например Europe/Moscow, а IP - голландский - VPN. Если опять же на IP Голландии время, когда в Голландии обычно спят - может быть VPN (хотя я вот постоянно по ночам сижу).
Есть сайт whoer.net. Он предназначен для обратной задачи - проверки уровня анонимности, но сами понимаете, любую задачу можно решать "от противного" и там можно найти много интересного о том, как он опредляет уровень анонимности VPN.