جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
logo-frontendi-150
0
  • خانه
  • دوره ها
  • وبلاگ فِرانت اِندی
  • تماس با ما
ورود / عضویت
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
ورود / عضویت

وبلاگ

فرانت اندی > وبلاگ فِرانت اِندی > ری اکت > تشخیص فیلترشکن در ری اکت ! ( گرفتن لوکیشن، IP، کشور و سایر اطلاعات کاربر )

تشخیص فیلترشکن در ری اکت ! ( گرفتن لوکیشن، IP، کشور و سایر اطلاعات کاربر )

3 آذر 1403
ارسال شده توسط احمد احمدنژاد
ری اکت
تشخیص فیلترشکن در ری اکت - تشخیص VPN در ری اکت - تشخیص فیلترشکن در React - موقعیت مکانی کاربر در React - موقعیت مکانی کاربر در ری اکت - تشخیص کشور کاربر در ری اکت

تاحالا پیش اومده نیاز داشته باشی که تشخیص بدی کاربرت داره از فیلترشکن ( VPN ) استفاده میکنه یا نه ؟ شاید دیده باشی که وقتی وارد بعضی اپیکیشن ها میشی بهت هشدار میدن که “برای تجربه کاربری بهتر فیلترشکن را خاموش کنید” !

تو این مقاله قراره این موارد رو یاد بگیریم :

  • تشخیص فیلترشکن در ری اکت
  • تشخیص شهر کاربر
  • تشخیص کشور کاربر
  • گرفتن IP و نام سرویس دهنده/ISP کاربر
  • تشخیص موقعیت مکانی در ری اکت ( لوکیشن )
  • و اطلاعاتی مثل TimeZone ، واحد پولی، پیش شماره تلفنی، پرچم کشور و ..

همه این امکانات رو یه پکیج خیلی سبک و بهینه به اسم react-vpn-detector بهمون میده.

نصب و راه‌اندازی

برای شروع، ابتدا باید پکیج رو نصب کنیم. اگه از npm استفاده می‌کنید، دستور زیر رو در ترمینال اجرا کنید:

				
					npm install react-vpn-detector

				
			

اگه از yarn استفاده می‌کنید، این دستور رو اجرا کنید:

				
					yarn add react-vpn-detector

				
			

استفاده از پکیج

حالا وقتشه که یه مثال بزنیم و ببینیم چجوری میتونیم این پکیج رو تو پروژه‌ هامون استفاده کنیم.

مثال ساده :

				
					import React from 'react';
import { useVPNDetector } from 'react-vpn-detector';

const App = () => {
  const { isUsingVPN, data, error } = useVPNDetector({
    apiUrl: 'https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY', // get it free from ipgeolocation.io 
  });

  if (error) {
    return <div>خطا: {error}</div>;
  }

  return (
    <div>
      {isUsingVPN ? (
        <p>فیلترشکن فعاله!</p>
      ) : (
        <p>فیلترشکن خاموشه!</p>
      )}
      <h3>اطلاعات کاربر:</h3>
      <pre>{JSON.stringify(data, null, 2)}</pre></div>
);
};export default App;


توضیح کد بالا

  • isUsingVPN: یه مقدار بولین هست که نشون میده کاربر از فیلترشکن استفاده میکنه یا نه.
  • data: شامل اطلاعات کاربره، مثل IP، کشور، ISP و غیره.
  • error: اگه مشکلی تو ارتباط با API وجود داشته باشه، اینجا خطاش نمایش داده میشه.

یه مثال کاملتر

تو مثال ساده بالا فقط یکسری اطلاعات ضروری رو داخل صفحه نمایش دادیم. برای اینکه اطلاعات بیشتری رو نمایش بدیم نیازه که بصورت زیر عمل کنیم :

نکته راجب مثال زیر تو مثال زیر من از tailwind css استفاده کردم، اگه شما tailwindcss رو ندارید باید تمامی className هارو با استایل های دلخواه خودتون جایگزین کنید
				
					import React from 'react';
import { useVPNDetector } from 'react-vpn-detector';

const App = () => {
  const { isUsingVPN, data, error } = useVPNDetector({
    apiUrl: 'https://api.ipgeolocation.io/ipgeo?apiKey=YOUR_API_KEY', // you can get it free from https://ipgeolocation.io/
  });

  if (error) {
    return (
      <div className='flex justify-center items-center h-screen bg-red-50'>
        <div className='p-4 bg-white shadow-md rounded-lg'>
          <h1 className='text-xl font-semibold text-red-500'>Error</h1>
          <p className='text-gray-700 mt-2'>{error}</p>
        </div>
      </div>
    );
  }

  return (
    <div className='min-h-screen bg-gray-50 flex flex-col items-center py-10'>
      <div className='bg-white shadow-lg rounded-lg p-8 max-w-4xl w-full'>
        <h1 className='text-2xl font-bold mb-6 text-gray-800'>VPN Detection</h1>
        <div
          className={`p-4 rounded-lg ${
            isUsingVPN
              ? 'bg-red-100 text-red-800'
              : 'bg-green-100 text-green-800'
          }`}
        >
          <p className='font-semibold'>
            VPN Status: {isUsingVPN ? 'VPN Detected' : 'No VPN detected'}
          </p>
        </div>
        {data && (
          <div className='mt-6 space-y-6'>
            <div className='flex items-center space-x-4'>
              <img
                src={data.country_flag}
                alt={`Flag of ${data.country_name}`}
                className='w-12 h-12 rounded-lg'
              />
              <div>
                <h2 className='text-lg font-bold text-gray-800'>
                  {data.country_name}
                </h2>
                <p className='text-gray-600'>{data.country_name_official}</p>
                <p className='text-gray-600'>
                  {data.city}, {data.state_prov}, {data.country_capital}
                </p>
              </div>
            </div>
          </div>
        )}
      </div>
    </div>
  );
};

export default App;
				
			

خروجی تیکه کد بالا بصورت زیر هست :

تشخیص فیلترشکن کاربر در ری اکت ( نتیجه No VPN Detected )

تشخیص فیلترشکن کاربر در ری اکت ( نتیجه VPN Detected )

چطوری میشه خروجی رو نمایش داد ؟

کار اصلی این پکیج اینه که یکسری دیتارو به شما تحویل بده. شما میتونید این دیتارو به هر شکلی که دوست دارید به کاربر نمایش بدید یا حتی نمایش ندید.

مثلا میتونید از این دیتا توی شرط های خودتون استفاده کنید.

یا زمانیکه کاربر وارد اپیکیشن شد یک Toast یا Modal یا Notification بهش نمایش بدید و بگید برای بهتر بودن تجربه کاربریش بهتره فیلترشکن خودشو خاموش کنه.

استفاده آسون به کمک هوک

استفاده از پکیج خیلی آسون و به کمک هوک useVPNDetector امکانپذیره.

پشتیبانی در تایپ اسکریپت

پکیج بطور کامل از تایپ اسکریپت پشتیبانی میکنه. اگه مسئله ای داشت بهم اطلاع بدید زودی رفعش میکنم.

شخصی سازی

منطق و شرط های این کتابخونه خیلی ساده و بر اساس نیاز پروژتون قابل تغییره.

مستندات کامل

شرح کامل پکیج react-vpn-detector رو میتونید تو لینک React Vpn Detector ملاحضه کنید.

درباره احمد احمدنژاد

من یه برنامه نویس و توسعه دهنده وب هستم که عاشق دنیای صفر و یکم❤️

نوشته‌های بیشتر از احمد احمدنژاد
قبلی 100 سوال مصاحبه Next.js ! جامع ترین لیست سوالات مصاحبه Next.js !
بعدی تشخیص آنلاین/آفلاین بودن در ری اکت با هوک useOfflineDetector !

4 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • ali گفت:
    4 آذر 1403 در 20:11

    چقدرر خفن بود خسته نباشید واقعا 😍
    میرم که ازش استفاده کنم

    پاسخ
    • احمد احمدنژاد گفت:
      9 آذر 1403 در 13:02

      سلام علی جان قربااانت
      مرررسی از حمایتت 🔥

      پاسخ
  • fatemeh گفت:
    16 دی 1403 در 18:28

    واقعا کاربردی بود و استفاده ازش کلا یه خط بود 😅 بازم از این تریک های کاربردی بزارید برامون

    پاسخ
    • احمد احمدنژاد گفت:
      23 دی 1403 در 17:19

      خوشحالم که برات مفید بوده 🙂
      حتماا

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پیاده سازی و مشاوره فِرانت اِند!

پیاده سازی اصولی و بهینه پروژه های فِرانت اِند در کمترین زمان ممکن 🙂

پیاده سازی و مشاوره

صفحات فِرانت اِندی
  • وبلاگ
  • تماس با ما
  • درباره ما
تماس با ما
  • [email protected]
  • 09102944692
شبکه های اجتماعی
Youtube Instagram Telegram
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://frontendi.com/?p=14257
مرورگر شما از HTML5 پشتیبانی نمی کند.