سلام خسته نباشید
چطور تشخیص بدیم که فیلتر شکن کاربر روشن هستش یا نه؟
سلام دوست من
تشخیص روشن بودن VPN کاربر به صورت مستقیم از طریق مرورگر کار راحتی نیست چون VPN ترافیک اینترنت رو رمزنگاری میکنه و اطلاعات مربوط به IP و موقعیت مکانی رو تغییر میده. اما چند روش غیرمستقیم برای این کار وجود داره:
راهکار اول تشخیص تغییر IP کاربر:
میتونی IP کاربر رو با استفاده از یک سرویس مثل ipinfo.io یا https://freegeoip.app/ دریافت کنی.
اگه IP کاربر به طور غیرمنتظره از کشوری دیگهای باشه (مثلاً هر بار که رفرش میکنه عوض بشه)، احتمالاً VPN فعاله.
نمونه کد با fetch در React:
useEffect(() => {
fetch('https://ipinfo.io/json?token=YOUR_API_TOKEN')
.then(response => response.json())
.then(data => {
console.log('IP Address:', data.ip);
console.log('Country:', data.country);
// اینجا میتونی از کشورها یا IP های غیرمنتظره برای تشخیص VPN استفاده کنی
})
.catch(error => console.error('Error fetching IP info:', error));
}, []);راهکار دوم بررسی تغییر مکان جغرافیایی:
میتونی از navigator.geolocation استفاده کنی و لوکیشن دقیق کاربر رو بگیری.
لوکیشن رو با کشوری که از APIهای مثل ipinfo.io دریافت کردی مقایسه کنی.
اگه لوکیشن کاربر ایران باشه ولی IP کاربر مربوط به کشور دیگهای باشه به احتمال زیاد VPN روشنه.
نمونه کد:
useEffect(() => {
navigator.geolocation.getCurrentPosition(position => {
const userLocation = {
lat: position.coords.latitude,
lon: position.coords.longitude
};
console.log('User Location:', userLocation);
// اینجا میتونی موقعیت مکانی رو با اطلاعات IP چک کنی
});
}, []);راهکار سوم چک کردن الگوهای شبکه و تأخیر (Latency Check):
VPN معمولاً باعث افزایش زمان پاسخدهی (Latency) میشه چون ترافیک اینترنت باید از یک سرور اضافی عبور کنه.
میتونی با استفاده از Date.now() زمان ارسال و دریافت درخواستها رو بسنجی.
اگه تأخیر زیاد باشه (مثلاً 300مثلاً ms یا بیشتر) احتمال استفاده از VPN وجود داره.
نکته مهم:
هیچکدوم از این روشها 100% دقیق نیست. VPNها برای مخفی کردن IP و موقعیت مکانی طراحی شدن و به همین خاطر کاربرها رو تشخیصشون خیلی سخت میکنه.
بهترین روش ترکیب این روشهاست: مقایسه IP، مکان جغرافیایی، و تأخیر شبکه.
موفق باشی