یک وباپلیکیشنهای پیش رونده چیست؟
عبارت "وباپلیکیشنهای پیش رونده" توسط مهندس Google Chrome به نام Alex Russell مطرح شد، که او از این عبارت برای توصیف یک نسل از برنامههای وب که مانند وبسایتهای معمول بارگذاری میشوند اما این مزایا را نسبت به آنان دارند، استفاده کرد: ویژگیهای پشتیبانی توسط مرورگرهای مدرن مثل خدمات کارکنان و فهرستهای برنامه وب، ارائه عملکردهای کاربردی مثل امکان کارکردن بهصورت آفلاین، نشان دادن پیغامهای هشداردهنده و سایر ویژگیهایی که بهصورت سنتی تنها با برنامههای native اجرا میشوند.
PWAها همچنین مانند پلی در فاصله بین برنامههای موبایل و وبسایتها هستند که بهترین بخش هردوی آنها را ارائه میکنند.
PWA زمانی به وجود آمد که کاربران بهدنبال تجربیات جدیدی با موبایل بودند اما چون با تعداد زیادی برنامه روی دستگاههایشان احاطهشده بودند، نسبت به نصب برنامههای جدید بیمیل بودند.
بیشتر شرکتهای ممتاز در حال حاضر سوار بر قطار PWA هستند و برنامه وب خودشان را با عملکرد native منتشر کردهاند که بهعنوانمثال میتوان به این شرکتها اشاره کرد: AliExpress که یک افزایش ۱۰۴ درصدی در نرخ تبدیل برای کاربران گزارش کرده است و Twitter که ۶۵ درصد افزایش در صفحات هر بخش، ۷۵ درصد افزایش در توئیتها و یک کاهش ۲۰ درصدی در نرخ دفع کاربر گزارش کرده است.
مزایا و معایب اصلی وباپلیکیشنهای پیش رونده
تمام مزایا و معایب اصلی وباپلیکیشنهای پیش رونده، ریشه در این واقعیت دارند که PWAها سهولت و دسترسی به وب را با عملکرد native ترکیب میکنند.
مزایا
حالت آفلاین
PWA میتواند توسط مرورگر وب ذخیره شود و حتی بهصورت آفلاین هم میتوان از آن استفاده کرد.
این خبر بسیار خوبی برای تجارتهایی است که کاتالوگ محصول دارند چون مشتریان میتوانند محصولات را حتی زمانی که به نت متصل نیستند، مشاهده کنند که این نرخ درگیر نگهداشتن کاربر را افزایش میدهد و منجر به سوددهی بیشتر میشود.
بهبود عملکرد
«اگر زمان بارگذاری یک وبسایت بیشتر از ۳ ثانیه طول بکشد، ۵۳ درصد از کاربران آنرا ترک خواهند کرد! وقتیکه سایت بارگذاری شد، کاربران از آن انتظار دارند که سریع عمل کند و پاسخ به درخواستهای آنها بهکندی صورت نگیرد.»
Google در وبسایت خودش، این را منتشر کرده است.
PWAها میتوانند ارائه بسیار بهتری از برنامههای وب سنتی داشته باشند چون از سرویس کارکنانی استفاده میکنند که درواقع فایلهای جاوااسکریپتی هستند که بهصورت جداگانه از رشتههای مرورگر اصلی اجرا میشوند و بهصورت کنشگرایانه ذخیرهسازی موارد مهم را کنترل میکنند.
بدون نیاز به نصب یا ملزومات بهروزرسانی بهصورت دستی
برای استفاده از برنامه وب پیشرفته توییتر، هیچ نیازی به بازدید از Play Store یا App Store برای نصب آن ندارید.
کاربران بهسادگی میتوانند از mobile.twitter.com دیدن کنند و بدون هیچگونه تأخیری به آن متصل شوند.
وقتیکه توییتر PWA خودش را بهروزرسانی میکند، کاربران نباید آن را بهصورت دستی نصب کنند و تمام ویژگیهای جدید و نقایص قبلی که رفع شدهاند بدون نیاز به دخالتی از کاربر در دسترس هستند.
البته تنها کاربران نیستند که از این بهروزرسانی راحت و بیدردسر سود میبرند؛ شرکت انتشاردهنده هم که از PWA پشتیبانی میکند، میتواند انتظار دریافت تعداد درخواست پشتیبانی کمتری از سوی کاربرانی که هنوز از نسخه قدیمی استفاده میکنند، داشته باشد.
شرکت میتواند هرزمان که بخواهد بدون خشمگین کردن کاربرانش بروزرسانیها را منتشر کند.
پلتفرمی با ویژگیهای خاص
هیچ فهرستی از مزایا و معایب اصلی وباپلیکیشنهای پیش رونده نمیتواند بدون اشاره کردن به این واقعیت کامل شود: "PWA میتواند مزیتهای زیادی ازجمله پلتفرمی با ویژگیهای خاص داشته باشد." برای مثال PWA میتواند در صفحه اصلی کاربر قرار بگیرد و پیغامهای هشداردهندهای را دریافت کند که در قالب پیامهای معمول ظاهر میشوند، آنها میتوانند در تمام صفحه اجرا شوند، چرخش صفحه را تغییر دهند، با صفحهنمایش در حالت splash شروع به کار کنند، به دادههای موقعیت دسترسی داشته باشند و سایر موارد.
کمحجم بودن داده
در بازارهای نوظهور مثل هند، پاکستان و آفریقای جنوبی، استفاده از حجم داده موبایل گرانتر از کشورهای توسعهیافته است. PWA بسیار کمحجمتر از برنامههای موبایل است و به پهنای باند خیلی کمتری نسبت به برنامههای وب سنتی نیاز دارد چون مزیت ذخیرهسازی خیلی بهتری دارند.
برای مثال PWA مربوط به Tinder، تنها ۲.۸ مگابایت است درحالیکه برنامه اندرویدی آن ۳۰ مگابایت است. اینیک تفاوت فاحش برای کسی است که حجم موبایل نامحدود ندارد و نمیتواند بهراحتی به شبکه Wi-Fi قابلاعتماد متصل شود.
App store مستقل
PWAها مستقل از app store هستند که این خبر بسیار خوبی برای تجارتهای کوچکتر و توسعهدهندگان برنامههای مستقلی است که نمیخواهند هزینه سالانهای برابر با ۹۹ دلار مربوط به شرکت Apple یا قبض ۲۵ دلاری چرخه عمر Google را که تنها برای انتشار برنامههایشان است، بپردازند.
البته app store مستقل، توسعهدهندگان را آزاد میگذارد که هر برنامهای را که میٰخواهند، بسازند بدون اینکه توسط سیاستها و قوانین app storeهای Google و Apple محدود شوند.
معایب
سازگاری با iOS
از زمان iOS ۱۱.۳، اجرای PWA روی دستگاههای Apple امکانپذیر شده است اما نباید توقع داشته باشید که با دستگاههای قدیمی هم سازگار باشد.
Apple اجازه دسترسیهای بیشتر به ویژگیهای مهم شامل: شناسایی از طریق لمس، شناسایی از روی صورت، ARKit، بلوتوث، سریال، Beacons، حسگر ارتفاع و حتی اطلاعات مربوط به باتری را نمیدهد.
دارای ناهماهنگی با دستگاههای قدیمی
PWA تقریباً در سالهای اخیر مطرحشده است؛ بنابراین این خیلی عجیب نیست که دستگاههای موبایل قدیمی با مرورگرهای قدیمی و منسوخ نمیتوانند بهخوبی از آن پشتیبانی کنند.
درحالیکه این مشکل خودبهخود در آینده حل خواهد شد؛ اما ممکن است که باعث شکایت مشتریان بعضی از شرکتها شود.
PWAها نمیتوانند هر کاری را انجام دهند.
با توجه به ظرفیت PWA در مقایسه با برنامههای وب سنتی، آنها توانایی انجام تمام کارهایی را که برنامههای موبایل انجام میدهند، ندارند.
چون آنها با جاوااسکریپت نوشتهشدهاند، به کارآمدیِ برنامههایی که با زبانهای native نوشتهشدهاند مثل Kotlin یا Swift نیستند.
عملکرد آنها هم بهخوبی عملکرد برنامههای native نیست، که میتوانند کارهای زیادی با این ویژگی جاوااسکریپت که یک زبان برنامهنویسی تکرشتهای است، انجام دهند.
در حال حاضر، دسترسی به ویژگیهای دستگاهی مهم در حال از دست رفتن است؛ مثل Bluetooth، حسگرهای proximity، روشنایی محیط، کنترلهای پیشرفته دوربین و سایر موارد.
تفاوت اپلیکیشنهای بومی با اپلیکیشنهای تحت وب
یک اپ بومی، اپلیکیشنی است که به طور مشخص برای یک دستگاه موبایل معین توسعه داده شده است و نصب آن تنها روی همان دستگاه امکانپذیر است. کاربران معمولا اپلیکیشنهای بومی را از طریق فروشگاههای نرمافزاری آنلاین نظیر اپ استور اپل یا فروشگاه گوگل پلی و ... دریافت میکنند. در طرف مقابل، یک اپلیکیشن وب، در واقع یک اپلیکیشن اینترنتی محسوب میشود که از طریق هر مرورگری قابل دسترسی است.
از منظر رابط کاربری امروزه تقریبا هیچ تفاوتی بین اپلیکیشنهای بومی و اپلیکیشنهای تحت وب وجود ندارد و هر دوی آنها امکانات مشابهی را با اختلافات اندکی در اختیار کاربر قرار میدهند. در حال حاضر، اغلب توسعهدهندگان اپلیکیشنهای خود را هم در نسخههای موبایل و هم در بستر وب توسعه میدهند و با این کار امکان دسترسی به سرویسهای خود را تا حد امکان افزایش میدهند.
با این وجود، اولین اختلاف این دو گروه از اپلیکیشنها، به فرآیند توسعهی آنها مربوط میشود. هر پلتفرم موبایل از زبان برنامهنویسی مختلفی استفاده میکند. برای مثال، آیاواس از Objective-C بهره میگیرد؛ در حالی که اندروید از جاوا و ویندوز موبایل از سیپلاسپلاس استفاده میکند. در طرف مقابل اپلیکیشنهای وب از زبانهای دیگری نظیر جاوا اسکریپت، HTML5، CSS3 یا دیگر چارچوبهای (فریمورک) نرمافزاری وب بهره میگیرند. علاوه بر این، هر پلتفرم موبایل، کیت توسعهی افزاری (SDK)، ابزارهای توسعه و دیگر عناصر رابط کاربری اختصاصی خود را در اختیار توسعهدهندگان قرار میدهد. توسعهدهندگان با بهرهگیری از این مجموعهی ابزارها به راحتی میتوانند اپلیکیشن بومی خود را برای آن پلتفرم موبایل توسعه دهند. در طرف مقابل، هیچ استانداردسازی مشخصی برای اپلیکیشنهای وب وجود ندارد و توسعهدهندگان محدود به استفاده از چارچوبها یا ابزارهای توسعهی خاصی نیستند.
وب اپلیکیشن پیش رونده چیست؟
وباپلیکیشنهای پیش رونده (Progressive Web Apps) یا به اختصار PWA میتوانند تحول بزرگ بعدی در حوزهی اپلیکیشنهای موبایل محسوب شوند. این فناوری که ابتدا در سال ۲۰۱۵ و توسط گوگل معرفی شد، به علت آسودگی نسبی توسعه و در اختیار قرار دادن یک تجربهی کاربری آنی برای کاربران توجهات زیادی را به خود جلب کرده است.
وب اپلیکیشنهای پیش رونده از جدیدترین فناوریها در ترکیب اپلیکیشنهای موبایل و وبسایتها بهره میگیرند. یک وب اپلیکیشن پیش رونده در واقع وبسایتی است که از فناوریهای مدرن وب استفاده میکند؛ اما ظاهر و کارکرد آن همانند یک اپلیکیشن معمولی است. پیشرفتهای اخیر در مرورگرها، سرویس ورکرها، کشها و رابطهای برنامهنویسی نرمافزار (API)، توسعهدهندگان وب را قادر کرده تا وب اپلیکیشنهایی با قابلیت افزودن به صفحهی خانگی سیستمعامل با امکان ارسال اعلان از سمت سرور (Push Notifications) و حتی عملکرد آفلاین توسعه دهند.
وب اپلیکیشنهای پیش رونده در مقایسه با اپلیکیشنهای بومی موجود در فروشگاههای نرمافزاری از مزیت اکوسیستم گستردهتر وب و پلاگینها و آسودگی نسبی توسعه و حفظ وبسایتها برخوردار هستند. اگر از جمله توسعهدهندگان وبسایت و اپلیکیشن محسوب شوید، حتما میدانید که ساخت یک وبسایت با صرف زمان کمتری قابل انجام است و نیازی به حفظ قابلیت پسسازگاریِ (backwards-compatibility) رابطهای برنامهنویسی وجود ندارد؛ زیرا برخلاف چندپارگی نسخههای اپلیکیشنهای بومی، تمام کاربران نسخهای یکسان از کد وبسایت را اجرا میکنند.
چه نیازی به وجود وب اپلیکیشنهای پیش رونده وجود دارد؟
نتایج یک تحقیق نشان میدهد که کاربران معمولی تقریبا ۸۰ درصد از زمان خود را صرف استفاده از تنها ۳ اپلیکیشن میکنند. برای مثال، اکثر افراد معمولا از یک اپلیکیشن پیامرسان (تلگرام یا واتساپ)، یک مرورگر (کروم) و یک اپلیکیشن شبکههای اجتماعی (اینستاگرام، فیسبوک یا توییتر) بیش از دیگر اپها استفاده میکنند. دیگر اپلیکیشنها نیز اکثر اوقات بلااستفاده باقی میمانند و تنها حافظهی رم و حافظهی داخلی گوشی را بیجهت مصرف و اشغال میکنند. علاوه بر این، هزینهی توسعهی یک اپلیکیشن در مقایسه با ساخت یک وبسایت برای ارائهی همان سرویس، معمولا ۱۰ برابر بیشتر است. همچنین، در صورتی که توسعهدهنده قصد توسعه و حفظ بیس کد (پایگاه کد) مجزا برای پلتفرمهای مختلف نظیر اندروید، آیاواس و وب را داشته باشد، این هزینهها بیش از پیش افزایش خواهد یافت.
همچنین، استفاده از اپلیکیشنهای بومی موبایل، تجربهای آنی برای کاربران به همراه ندارد. یک کاربر برای استفاده از اپلیکیشن بومی دلخواه خود، در ابتدا باید به جستجوی آن در فروشگاه اپلیکیشن بپردازد، آن را دانلود، نصب و در نهایت اجرا کند. زمانبر بودن این مراحل موجب میشود که برخی کاربران در نیمههای راه از خیر نصب این اپلیکیشنها بگذرند. در طرف مقابل، هنگامی که کاربر با یک وب اپلیکیشن پیش رونده مواجه میشود، میتواند بدون طی کردن مراحل غیرضروری دانلود و نصب و تنها با مراجعه به یک نشانی وب بلافاصله استفاده از آن را آغاز کند.
با این وجود، اپلیکیشنهای بومی نیز مزایای غیرقابل انکاری دارند. اپلیکیشنهای موبایلی که مجهز به اعلانها برای اطلاعرسانی به کاربر هستند، ۳ برابر بیش از دیگر همتایان غیربرخوردار از این ویژگی نگهداری میشوند و همچنین ۳ برابر احتمال بیشتری وجود دارد که کاربر به جای وبسایت، به یک اپلیکیشن مراجعه کند. علاوه بر این، اپلیکیشن موبایلی که از طراحی مناسبی بهره میگیرد، دادهی کمتری مصرف میکند و به دلیل استقرار برخی از منابع خود روی دستگاه، سرعت بیشتری نیز دارد.
با این حال، یک وب اپلیکیشن پیش رونده نیز از برخی از مهمترین خصوصیات یک اپلیکیشن موبایل برخوردار است و این موضوع موجب میشود که عملکرد کاربر فارغ از دردسرهای نگهداری یک اپلیکیشن موبایل بهبود یابد.
خصوصیات یک وب اپلیکیشن پیش رونده چیست
وب اپلیکیشنهای پیش رونده واجد ویژگیها زیر هستند:
پیش رونده (قابل استفاده در هر دستگاه و سیستمعامل): یک وب اپلیکیشن پیش رونده فارغ از نوع مرورگر و نوع دستگاه، برای تمام کاربران قابل استفاده است.
قابل جستجو: از آنجایی که وب اپلیکیشنهای پیش رونده در واقع یک وبسایت محسوب میشوند، از طریق موتورهای جستجو قابل یافتن هستند. این خصوصیت، یک برتری قابل توجه آنها بر اپلیکیشنهای بومی است.
قابل پیونددهی (لینکدهی): وب اپلیکیشنهای پیش رونده برخلاف اپلیکیشنهای بومی نیازی به طی کردن مراحل پیچیدهی دانلود و نصب ندارند و اشتراکگذاری آنها از طریق یک نشانی وب (URL) به راحتی امکانپذیر است.
انعطافپذیر: رابط کاربری وب اپلیکیشنهای پیش رونده خود را با هر نوع فرم فکتور اعم از موبایل و دسکتاپ و هر نوع اندازهی نمایشگر تطبیق میدهد.
ظاهر اپلیکیشنوار: یک اپلیکیشن پیش رونده شباهت بیبدیلی به اپلیکیشنهای بومی دارد، از رابط کاربری مشابه آنها استفاده میکند و مسیریابی در آنها تفاوتی با اپلیکیشنهای معمولی ندارد.
بینیاز از اتصال اینترنت: وب اپلیکیشنهای پیش رونده در صورت ضعف اتصال اینترنت یا حتی به صورت آفلاین نیز قابل استفاده هستند.
درگیر کردن کاربر: احتمال آنکه کاربران اپلیکیشنهای موبایل مجددا از اپلیکیشنهای خود استفاده کنند بیشتر از احتمال مراجعهی مجدد به یک وبسایت است. وب اپلیکیشنهای پیش رونده با استفاده از ویژگیهایی نظیر اعلانهای سمت سرور (Push Notification)، این ضعف را جبران کردهاند.
قابل نصب: وب اپلیکیشنهای پیش رونده را میتوان همانند اپلیکیشنهای بومی نصب و آیکون آنها را به صفحهی خانگی و حتی کشوی اپلیکیشنها اضافه کرد؛ با این تفاوت که دسترسی به آنها بینیاز از دردسرهای جستجو در فروشگاههای اپلیکیشن است. این ویژگی استفاده از آنها را به شدت آسان میکند.
بهروز بودن: در حالی که اپلیکیشنهای بومی نیازمند بهروزرسانی از طریق فروشگاههای نرمافزاری هستند، وب اپلیکیشنهای پیش رونده به لطف فرآیند بهروزرسانی سرویس ورکر، همیشه به آخرین نسخه، بهروز هستند و هنگامی که محتوای جدید منتشر شود و کاربر به اینترنت متصل باشد، آن محتوا بلافاصله در دسترس کاربر قرار میگیرد.
ایمن: از آنجایی که وب اپلیکیشنهای پیش رونده در بستر HTTPS قرار دارند، از مخاطرات امنیتی در امان هستند.
مزیت های دیگه ای هم این اپلیکیشن ها نسبت به بقیه دارن که چندتاشو مرور میکنیم :
- 1. این برنامه ها کاملا تطبیق پذیر (Responsive) هستن یعنی رو تمام دستگاه ها مثل کامپیوتر ، موبایل ، ساعت هوشمند و حتی دستگاه هایی که در آینده ساخته میشن هم قابل نمایش و استفاده هستند.
- 2. با کمک Service Worker ها PWA میتونه در شرایط ارتباطی ضعیف حتی بدون اینترنت هم سرویس دهی کنه.
- 3. خدمات PWA ها همواره از طریق HTTPS ارائه میشه تا با بکارگیری رمزگذاری، هیچ شخصی بدون مجوز مناسب قادر به ایجاد اختلال تو برنامه شما نباشه.
- 4. ویژگی هایی همچون Push Notifications، که در اپلیکیشن های Native هست در پیشرونده هم وجود داره.
- 5. به راحتی میشه اونها رو تو موتور های جستجو پیدا کرد. همچنین PWA ها رو میشه از طریق URL هم به اشتراک گذاشت.
- 6. قابلیت نصب رو دستگاه ها مثل اپ های Native و اجرای Fullscreen اون ها
وب اپلیکیشنهای پیش رونده از چه فناوریهایی استفاده میکنند
رشد برخی از فناوریهای جدید وب در سالهای اخیر، به توسعهی وب اپلیکیشنهای پیش رونده کمک زیادی کرده است. در اینجا بهصورت مختصر به شرح برخی از مهمترین فناوریهای بهکار رفته در وب اپلیکیشنهای پیش رونده میپردازیم.
اعلانهای سمت سرور (Push Notification)
این نوع اعلانها که به صورت تحتالفظی به «اطلاعرسانی از طریق فشار» ترجمه میشوند؛ در واقع نوعی اعلان است که از سمت سرور یا اپلیکیشن به سمت کاربر ارسال میشود و به وی امکان میدهد از بهروزرسانیهای وبسایتهای مورد علاقهی خود به موقع مطلع شود. حتما برای شما هم پیش آمده است که پس از بازدید از یک وبسایت، پیغامی کوچک زیر نوار آدرس مشاهده کردهاید که از شما درخواست میکند اعلانهای سمت سرور را فعال کنید. این ویژگی به صاحبان وبسایت امکان میدهد تا با مخاطبان و کاربران در ارتباط مداوم باشند و آنها را از آخرین تغییرات خود باخبر کنند. وباپلیکیشنهای پیش رونده با بهرهگیری از این قابلیت میتوانند همانند اپلیکیشنهای بومی کاربر را از تغییرات برنامه مطلع کنند. ویژگی مثبت اعلانهای سمت سرور این است که امکان نمایش آنها حتی در صورت بسته بودن مرورگر نیز همچنان وجود دارد. رابط برنامهنویسی اعلانهای سمت سرور در حال حاضر توسط اکثر مرورگرها از جمله کروم، فایرفاکس اوپرا، اج و مرورگر سامسونگ پشتیبانی میشود.
سرویس ورکرها
اپلیکیشنهای بومی موبایل به بهای اشغال حافظهی داخلی و فقدان بهروزرسانی لحظهای، عملکردی بینقص و سریع ارائه میدهند. در طرف مقابل، وب اپلیکشنهای سنتی نیز از مشکلات قابل توجهی نظیر فقدان قابلیت اجرای کامپایل در کنار وابستگی به اتصال غیرپایدار و بالقوه ضعیف اینترنت رنج میبرند. سرویس ورکرها قصد دارند ویژگیهای مثبت این دو گروه از اپلیکیشنها را با یکدیگر ادغام کنند و در قالب وب اپلیکیشنهای پیش رونده ارائه دهند. سرویس ورکر از نظر فنی اسکریپتی است که مروگر آن را به صورت مجزا از صفحهی وب در پسزمینه اجرا میکند و قابلیتهایی را که نیازمند صفحهی وب یا تعامل کاربر نیستند، نظیر اعلانهای سمت سرور و همگامسازی پسزمینه را امکانپذیر میکند.
معماری پوسته اپلیکیشن
برخی از وب اپلیکیشنهای پیش رونده از یک رویکرد معماری به نام الگوی پوستهی اپلیکیشن استفاده میکنند. سرویس ورکرها به منظور بارگذاری سریع، رابط کاربری اولیه یا پوستهی طراحی وب واکنشگرای وب اپلیکیشن را درون خود ذخیره میکنند. این پوسته، یک چارچوب ثابت اولیه، یک لایه یا معماری را فراهم میکند که محتوا میتواند به طور مداوم و به صورت پویا درون آن بارگذاری شود. این ویژگی، در نهایت به کاربران امکان میدهد تا فارغ از نوع اتصال اینترنت و سرعت آن، از اپلیکیشن استفاده کنند. از نظر فنی، این پوسته یک بستهی کد است که به صورت محلی در کش مرورگر دستگاه ذخیره میشود.
مزیت های دیگه ای هم این اپلیکیشن ها نسبت به بقیه دارن که چندتاشو مرور میکنیم :
- 1. این برنامه ها کاملا تطبیق پذیر (Responsive) هستن یعنی رو تمام دستگاه ها مثل کامپیوتر ، موبایل ، ساعت هوشمند و حتی دستگاه هایی که در آینده ساخته میشن هم قابل نمایش و استفاده هستند.
- 2. با کمک Service Worker ها PWA میتونه در شرایط ارتباطی ضعیف حتی بدون اینترنت هم سرویس دهی کنه.
- 3. خدمات PWA ها همواره از طریق HTTPS ارائه میشه تا با بکارگیری رمزگذاری، هیچ شخصی بدون مجوز مناسب قادر به ایجاد اختلال تو برنامه شما نباشه.
- 4. ویژگی هایی همچون Push Notifications، که در اپلیکیشن های Native هست در پیشرونده هم وجود داره.
- 5. به راحتی میشه اونها رو تو موتور های جستجو پیدا کرد. همچنین PWA ها رو میشه از طریق URL هم به اشتراک گذاشت.
- 6. قابلیت نصب رو دستگاه ها مثل اپ های Native و اجرای Fullscreen اون ها
حقایق تکنولوژی PWA که از ان اطلاع ندارید
بسیار محتمل است که شما درباره PWAها و میزان امیدبخشی آنها مطالعه کرده باشید. اما یک احتمال بسیار زیاد وجود دارد که ممکن است شما از اینکه آنها جنبه تاریکتری نیز داشته باشند که غالبا از آن صحبت نمیشود، آگاهی نداشته باشید. اگرچه جنبههای مختلفی از این امر وجود دارد، اما به طور عمده بر روی fingerprinting تمرکز خواهیم کرد.
Fingerprinting چیست؟
"هیچ دو نفری اثر انگشت یکسان ندارند، حتی دوقلوهای همسان" - مرکز ملی فناوری علوم پزشکی
اثر انگشت به انسانها امکان میدهد تا به طور منحصر به فرد از یکدیگر شناسایی شوند. به همین ترتیب میتوان از انگشت نگاری برای نهادهای دیگر استفاده کرد تا منحصرا افراد را شناسایی کنند. یک مثال میتواند اثر انگشت مرورگر باشد.
اثر انگشت مرورگر توانایی سایت برای شناسایی مجدد بازدید کننده، نماینده کاربر یا دستگاه از طریق تنظیمات پیکربندی یا سایر ویژگیهای قابل توجه است. اثر انگشت مرورگر میتواند به عنوان یک اقدام امنیتی مانند تأیید اعتبار کاربر استفاده شود. مواردی وجود دارد که از اثر انگشت در آنها استفاده میشود:
شناسایی کاربر
ارتباط فعالیت کاربر درون و در طول sessionها
جمع آوری اطلاعاتی که میتوان از آن نتیجه گیری در مورد کاربر انجام داد
چه مضراتی ایجاد میکند؟
بزرگترین خطر اثر انگشت مرورگر این است که ممکن است تهدیدات بالقوهای برای حریم خصوصی کاربران باشد. میتوانیم در زیر در مورد آسیب پذیریها بیشتر بحث کنیم.
شناسایی کاربر
به دلایل مختلفی از جمله نگرانی در مورد نظارت و ایمنی شخصی، کاربران میتوانند به صورت آنلاین ناشناس بمانند. اثر انگشت مرورگر میتواند با اطلاعات شناسایی شخصی مرتبط باشد، یک برنامه یا ارائه دهنده خدمات میتواند به راحتی کاربری را شناسایی کند که در غیر این صورت ناشناس خواهد بود.
فعالیت مرورگر
فعالیت مرور کاربر حتی بدون نیاز به اطلاعات شناسایی شخصی قابل کنترل است. این کاملا امکان پذیر است زیرا پلتفرمهای آنلاین براساس اثر انگشت مرورگر شما میتوانند پروفایل شما را حفظ کنند. این ممکن است منجر به ردیابی کاربر بدون مجوز یا محتوای کاربر شود و علاوه بر این اقداماتی مانند پاک کردن کوکیها ارتباطی را که قبلا با انگشت نگاری مرورگر به دست آوردهاید دوباره تنظیم نمیکند.
بررسی کاربر
حتی بدون نیاز به موارد ذکر شده در بالا باز هم میتوان کاربر را براساس چند ویژگی قابل مشاهده که توسط اثر انگشت مرورگر استفاده میشود، مشخص کرد. از نسخه سیستمعامل و جزئیات دستگاه میتوان برای بررسی قدرت خرید کاربران استفاده کرد. کاربران حتی اگر ناشناس بمانند تمایل به این روش ندارند.
مواردی ثبت شده که کاربران سیستمعامل مک به لطف اثر انگشت دستگاه به هتلهای گرانتری هدایت میشوند. در اینجا شما میتوانید اطلاعات بیشتری راجع به آن بخوانید.
PWA چگونه به انگشت نگاری کمک میکند؟
برنامههای وب پیشرونده به یک فایل مانیفست نیاز دارند که یک فایل قالب بندی شده JSON شامل جفتهای key-value است و ویژگیهای مختلف برنامه را توصیف میکند. یکی از کلیدهایی که در فایل مانیفست یافت میشود start_url است. این مقدار URL دلخواهی را تعیین میکند که باید هنگام راه اندازی برنامه وب توسط کاربر بارگیری شود (به عنوان مثال وقتی کاربر از منوی برنامه دستگاه یا صفحه اصلی روی آیکون برنامه وب ضربه میزند).
تیم W۳C این ساز و کار را شامل تهدیدهای بالقوه برای اثر انگشت دستگاه یا مرورگر و ارتباط کاربر با فعالیت مرورگر میداند. آنها معتقدند که این امر منجر به ایجاد یک مکانیسم جدید محلی مانند کوکی میشود.
میتوان تصور کرد که start_url ساخته میشود تا نشان دهد که برنامه در خارج از مرورگر راه اندازی شده است (به عنوان مثال "start_url": "index.html?launcher=homescreen"). این میتواند برای تجزیه و تحلیل و احتمالا سفارشی سازیهای دیگر مفید باشد. با این حال قابل تصور است که توسعه دهندگان میتوانند رشتههایی را در start_url رمزگذاری کنند که به طور منحصر به فرد کاربر را شناسایی کنند (به عنوان مثال یک سرور UUID اختصاص داده شود). این اطلاعات حساس به اثر انگشت و حریم خصوصی است که ممکن است کاربر از آن اطلاع نداشته باشد.
این موضوع حتی در زمان نوشتن مقاله هنوز برای بحث باز مانده، زیرا هنوز راه حل مناسبی ارائه نشده است.
مطالعهای توسط محقق امنیت Lukasz Olejnik در ۱۰ هزار صفحه وب برای بررسی استفاده از اثر انگشت انجام شد. او دریافت که:
۱۶۷۲ صفحه شامل manifest.json است
۸۲۸ استفاده از یک start_url اختصاصی
۲۷۴ استفاده از پارامتر
به نظر میرسد هیچ یک از شناسههای تولید شده به طور تصادفی استفاده نمیشوند.
او همچنین اشاره کرد:
در حالی که من شناسههای منحصر به فرد آشکاری را دیدم (مثلا ۵۱۶۰۶۱۰۲_۹۵۲۷_۷۲۵۹_۷۷۷۰)، به نظر نمیرسد که برای هر کاربر جدید به طور تصادفی ایجاد شده باشد. این تست ساده امکان مشاهده با احتیاطی را فراهم میآورد که به نظر میرسد این ردیابی ممکن از لحاظ فنی امروزه مورد استفاده قرار نگیرد.
این موضوع میتواند باعث آرامش خاطر ما شود، زیرا در PWAهای فعلی اجرا نشده است. اما یک بمب ساعتی است که به سرعت میتواند یک قاتل خاموش برای حفظ حریم خصوصی کاربر تلقی شود، همانطور که آن را میشناسیم.
اپل چگونه با آن مبارزه میکند؟
اپل به ساخت اکوسیستم ایمن دستگاه معروف است. دلیل اصلیش هم این است که اپل در مورد قوانین و سیاستهای خود سختگیرانهتر از هر سازنده دستگاه دیگری است. این منجر به از دست دادن قابلیت تنظیم محصولات میشود اما از طرف دیگر امنیت سیستم را افزایش میدهد. اپل ترجیح میدهد خودش در مورد بهترین گزینه از طرف کاربر تصمیم بگیرد تا اینکه اجازه دهد کاربر آن را انتخاب کند.
از آنجایی که PWAها نوعی برنامه وب هستند که سعی میکنند عملکردهایی مانند یک برنامه بومی را انجام دهند، لازم است به ویژگیهای سخت افزاری دستگاه مانند بلوتوث، NFC، وای فای و موارد دیگر دسترسی پیدا کنند.
اما اپل اخیرا از اجرای Web API در مرورگرهای مستقر در سافاری امتناع کرده و این واقعیت را نشان میدهد که آنها با ایجاد راهی به عنوان اثر انگشت باعث خطر افتادن حریم خصوصی کاربران میشوند. این APIها قبلا در اکوسیستم کروم پیاده سازی شدهاند و برخی از آنها در اکوسیستم موزیلا بودهاند. اپل همچنین ادعا میکند که این APIها میتوانند توسط تبلیغ کنندگان آنلاین و شرکتهای تجزیه و تحلیل داده برای استفاده از کاربران اثر انگشت و دستگاههای آنها دستکاری شوند.
این برای PWAها دردسر ایجاد میکند، زیرا این امر مانعی برای توسعه دهندگانی است که سعی در ساخت برنامههایی دارند که از ویژگیهای بومی استفاده میکنند.
به گفته اپل: "اولین خط دفاعی WebKit در برابر انگشت نگاری، عدم اجرای ویژگیهای وب است که fingerprintability را افزایش میدهد و هیچ راهی ایمن برای محافظت از کاربر ارائه نمیدهد."
اپل همچنین اظهار داشته است که اگر هر یک از این فن آوریهای جدید "قابلیت اثر انگشت را کاهش دهد"، در افزودن آن به مرورگر سافاری تجدیدنظر میکند.
PWA یک فناوری آینده نگر است که پتانسیل زیادی دارد. مسائل مربوط به حریم خصوصی که در بالا ذکر شد نباید شما را از PWAهایی که F.I.R.E را برای تنظیمات کلاینت (سریع، قابل نصب، قابل اعتماد و جذاب) شما فراهم میکنند، دور نگه دارد.
دیدگاه خود را بنویسید