خواننده QR code چیست؟
یک QR code یک بارکد ماتریکس دو بعدی است که توسط ISO/IEC 18004 تعریف شده است. متن، URL، کارتهای تماس، اعتبارنامههای Wi-Fi و سایر payload های کوتاه را به عنوان یک شبکه از module های مربع سیاه و سفید، همراه با دادههای تصحیح خطای Reed-Solomon رمزگذاری میکند تا سمبل پس از آسیب جزئی یا پوشش لوگو هنوز رمزگشایی شود. یک خواننده QR code عکس این کار را میکند: تصویر یک سمبل QR را میگیرد و رشته payload اصلی را بازیابی میکند. این خواننده خط لوله رمزگشایی را مستقیماً در مرورگر شما با استفاده از کتابخانه open-source jsQR (حدود ۱۳۰ کیلوبایت، MIT-licensed) اجرا میکند. تصویری که رها میکنید، پیست میکنید یا با دوربین اسکن میکنید هرگز تب را ترک نمیکند.
رمزگشایی QR چگونه کار میکند؟
رمزگشایی کاملاً روی دستگاه شما اجرا میشود. هر تصویر قبل از بازگشت متن payload از یک خط لوله ثابت عبور میکند:
- فایل تصویر (PNG، JPG، WebP یا یک فریم دوربین) روی یک HTML
<canvas>خارج از صفحه کشیده میشود. API canvas دادههای پیکسل خام را به عنوان یک آرایه بایت RGBA برمیگرداند. - کتابخانه jsQR آرایه پیکسل را به یک bitmap خاکستری تبدیل میکند و به دنبال سه مربع الگوی finder متمایز در گوشههای یک سمبل QR میگردد.
- وقتی الگوهای finder پیدا شدند، رمزگشا transform منظره را محاسبه میکند و شبکه module کامل را استخراج میکند، هر سلول را به عنوان یک ۰ یا ۱ باینری میخواند.
- شبکه module بر اساس مشخصات QR تجزیه میشود: اطلاعات فرمت و نسخه ابتدا خوانده میشوند، سپس module های داده de-interleave میشوند و تصحیح خطای Reed-Solomon اعمال میشود.
- کلمات کد داده تصحیحشده بر اساس حالت بخش (عددی، حروف عددی، بایت یا kanji) رمزگشایی میشوند و رشته payload اصلی را تولید میکنند.
- این ابزار سپس payload را با مجموعهای کوچک از عبارات منظم بررسی میکند تا نوع محتوا را شناسایی کند (URL، اعتبارنامه Wi-Fi، vCard و غیره) و نتیجه را با یک دکمه عمل مناسب نمایش میدهد.
چرا از یک خواننده QR مبتنی بر مرورگر استفاده کنیم؟
- بایتهای تصویر هرگز دستگاه شما را ترک نمیکنند. یک QR که رمز عبور Wi-Fi، یک URL staging داخلی یا یک vCard با شماره تلفن شخصی کسی را پنهان کرده است پیست کنید و آن محتوا روی لپتاپ شما میماند. سایر خوانندگان QR رمزگشایی را روی یک سرور از راه دور اجرا میکنند و از شما میخواهند ابتدا تصویر را آپلود کنید — این یکی اینطور نیست.
- وقتی صفحه بارگذاری شد، رمزگشایی به صورت آفلاین کار میکند. کتابخانه jsQR در تب شما زندگی میکند. میتوانید Wi-Fi را قطع کنید، یک تصویر QR را در صفحه بیندازید و هنوز payload را برگردانید — مفید در هواپیما، در زیرزمینها و هر جایی که شبکه شرکتی اسکنرهای شخص ثالث را مسدود میکند.
- اگر دسکتاپ یا لپتاپ شما وبکم دارد، میتوانید آن را به سمت یک QR code چاپشده نشانه بگیرید و آن را بدون نصب یک اپلیکیشن یا باز کردن قفل گوشی بخوانید. جریان دوربین در مرورگر میماند و لحظهای که یک کد رمزگشایی میشود متوقف میشود.
- خواننده URL ها، رشتههای اتصال Wi-Fi، vCard، MeCard، mailto، SMS و payload های geo را شناسایی میکند و یک دکمه عمل که مطابقت دارد نمایش میدهد. یک URL باز کنید، رمز عبور Wi-Fi را کپی کنید، کارت تماس را ذخیره کنید — هر آنچه QR واقعاً دارد.
کاربردهای رایج خواننده QR code
هر زمان که نیاز دارید بدانید یک QR code واقعاً چه میگوید بدون اینکه گوشی به آن نشانه بگیرید:
- اشکالزدایی کدهایی که تازه تولید کردید. QR ای که اپلیکیشن شما تولید کرده (یا یک اسکرینشات از مولد QR Code کنار این) را پیست کنید و تأیید کنید URL یا payload رمزگذاریشده با آنچه قصد داشتید مطابقت دارد قبل از ارسال به چاپ، بستهبندی یا پوستر.
- بازیابی اعتبارنامههای Wi-Fi. QR Wi-Fi از صفحه پیکربندی روتر، یک کارت خوشآمدید هتل یا یک عکس فهرست AirBnB را اسکن کنید و خواننده SSID، نوع امنیت و passphrase را به عنوان متن سادهای که میتوانید در دستگاه دیگری کپی کنید برمیگرداند.
- حسابرسی و دسترسیپذیری. QR code های روی اسناد اسکنشده، برچسبهای محصول، کارتهای کنفرانس یا اسکرینشاتهای پستهای شبکه اجتماعی را رمزگشایی کنید تا محتوایشان را در یک صفحه گسترده، یک لاگ انطباق یا نرمافزار کمکی استخراج کنید.
رمزگشایی یک QR code واقعی چه شکلی است؟
یک QR code Wi-Fi چاپشده روی پنجره یک کافه را در نظر بگیرید. پشت سمبل، payload خام از طرح URI WIFI: پیروی میکند: WIFI:S:CafeGuest;T:WPA;P:espresso2026;H:false;;. سمبل را عکس بگیرید، تصویر را در ناحیه آپلود بالا بیندازید، و خط لوله شروع میشود: canvas پیکسلها را میخواند، jsQR سه الگوی finder گوشه را پیدا میکند، transform منظره شبکه را صاف میکند، Reed-Solomon هر آسیب glare یا فشردهسازی را ترمیم میکند، و بخش byte-mode رشته URI را تولید میکند. خواننده سپس پیشوند WIFI: را بررسی میکند و نوع را به عنوان Wi-Fi برچسبگذاری میکند، نام شبکه را CafeGuest، نوع امنیت را WPA و passphrase را espresso2026 تجزیه میکند. یک دکمه کپی رمز عبور را روی کلیپبورد شما میگذارد. برای یک QR با URL ساده شامل https://tools.ultim8soft.com، همان خط لوله نشان URL و یک دکمه باز کردن که به هدف در یک تب جدید هدایت میکند برمیگرداند.
این خواننده QR code برای یک کار ساخته شده است: نشان دادن دقیقاً آنچه یک QR code رمزگذاری میکند، در مرورگر شما، بدون سرور بین شما. یک تصویر بیندازید، از کلیپبورد پیست کنید، یا وبکم را اجازه دهید بچرخد، و محتوای رمزگشاییشده به علاوه نوعش در کمتر از یک ثانیه روی صفحه ظاهر میشود. بایتهای تصویر آپلود نمیشوند. فریمهای دوربین ضبط نمیشوند. payload رمزگشاییشده از لاگهای شخص دیگری در راه برگشت به شما عبور نمیکند.
آیا تصویر به سرور آپلود میشود؟
خیر. تصویر روی یک canvas HTML در حافظه کشیده میشود و کاملاً توسط JavaScript سمتکلاینت در تب شما رمزگشایی میشود. هیچ پیکسل از تصویر شما هرگز به سرور ارسال نمیشود، لاگ نمیشود یا ذخیره نمیشود. میتوانید این را با باز کردن DevTools و تماشای پانل Network هنگام انداختن یک تصویر تأیید کنید: هیچ XHR، هیچ fetch، هیچ بیکن analytics به محتوای فایل مرتبط نمیشود.
اسکن دوربین چگونه کار میکند؟
وقتی حالت دوربین را فعال میکنید، مرورگر از طریق API استاندارد getUserMedia درخواست دسترسی به دوربین دستگاه شما میکند. فریمهای ویدیو با حداکثر رزولوشن ۶۴۰×۴۸۰ در یک canvas خارج از صفحه ضبط میشوند و به jsQR برای رمزگشایی داده میشوند. هر فریم لحظهای که فریم بعدی میرسد دور انداخته میشود، و جریان دوربین در اولین رمزگشایی موفق متوقف میشود. هیچ فریمی ضبط نمیشود، هیچ فریمی منتقل نمیشود، و پرامپت مجوز فقط وقتی تاگل را تیک میزنید فعال میشود — نه در بارگذاری صفحه.
چرا برخی محتوای QR به طور خودکار به عنوان Wi-Fi یا vCard شناسایی میشود؟
payload های QR برای اعتبارنامههای Wi-Fi از فرمت WIFI:S:ssid;T:type;P:password;; پیروی میکنند، و vCard ها با BEGIN:VCARD شروع میشوند. این خواننده آن الگوها را به همراه سایر پیشوندهای استاندارد (mailto:، geo:، smsto:، MECARD:، https://) شناسایی میکند و نوع محتوا را به طور خودکار برچسبگذاری میکند تا دکمه عمل با آنچه واقعاً میخواهید با payload انجام دهید مطابقت داشته باشد.
چرا QR code من اسکن نشد؟
علل رایج: تصویر خیلی کوچک یا با رزولوشن پایین است (~۱۰۰×۱۰۰ پیکسل کف است، ۳۰۰×۳۰۰+ به طور قابلاطمینان اسکن میشود)، سمبل آسیب شدید دارد یا توسط یک لوگو بدون تصحیح خطای کافی تا حدی پوشانده شده، ناحیه آرام (حاشیه سفید دور module ها) گم یا برش داده شده، یا تضاد بین module های تاریک و روشن خیلی کم است. برای حالت دوربین، نور را بهبود دهید یا کد را به لنز نزدیکتر ببرید — jsQR باید module های فردی را به طور تمیز تجزیه کند تا الگوهای finder را قفل کند.