کوکیها را پاک کردهاید، پنجره ناشناس باز کردهاید، حتی آدرس IP خود را هم عوض کردهاید. با این حال یک سایت باز هم شما را میشناسد. نام روشی که پشت این کار است اثر انگشت مرورگر است. ترکیب دهها اطلاعات کوچکی که مرورگر شما در اختیار سایت میگذارد، هویتی بهقدری منحصربهفرد میسازد که شما را از میان میلیونها بازدیدکننده متمایز میکند.
در این نوشته میبینید اثر انگشت از چه سیگنالهایی ساخته میشود، سایتها چرا از آن استفاده میکنند، از نظر چه چیزی با کوکی و IP فرق دارد، چگونه میتوانید آن را در مرورگر خودتان آزمایش کنید و برای کسی که از پروکسی استفاده میکند چه معنایی دارد.
اثر انگشت مرورگر چگونه ساخته میشود؟
وقتی صفحهای بارگذاری میشود، مرورگر برای نمایش درست صفحه، اطلاعات زیادی درباره خودش را در اختیار سایت میگذارد. هیچکدام از این اطلاعات بهتنهایی شما را شناسایی نمیکند، اما وقتی کنار هم قرار بگیرند ترکیبی نادر میسازند. سیگنالهایی که در اثر انگشت زیاد استفاده میشوند از این قرارند:
- نسخه
User-Agentو مرورگر: نام مرورگر، نسخه و سیستمعامل. مرورگرهای امروزی این هدر را سادهتر کردهاند و جزئیات را به مکانیزمClient Hintsمنتقل کردهاند، اما اطلاعات پایه هنوز در دسترس است. - اطلاعات صفحهنمایش: وضوح تصویر، عمق رنگ، تراکم پیکسل، اندازه پنجره.
- زبان و منطقه زمانی: زبان مرورگر، منطقه زمانی سیستم و قالب تاریخ.
- فونتهای نصبشده: فهرست فونتهای سیستم بهطرز شگفتانگیزی از دستگاهی به دستگاه دیگر فرق میکند. سایت وجود فونتهای خاص را با اندازهگیری عرض متن، بهطور غیرمستقیم پی میبرد.
- اثر انگشت canvas: سایت در ناحیهای نامرئی متن و شکل ترسیم میکند. همین ترسیم بسته به کارت گرافیک، درایور و سیستمعامل، نتیجهای متفاوت در سطح پیکسل میدهد. خلاصه این نتیجه یک مقدار متمایزکننده است. زیرساخت ترسیم در مستندات Canvas API در MDN توضیح داده شده است.
- اطلاعات WebGL: سازنده، مدل و ویژگیهای پشتیبانیشده پردازنده گرافیکی.
- اثر انگشت صوتی: تفاوتهای کوچک در نحوه پردازش صدایی که با Web Audio API تولید میشود.
- سرنخهای سختافزاری: تعداد هسته پردازنده، میزان حافظه، پشتیبانی از صفحه لمسی.
- ویژگیهای مرورگر: APIهای پشتیبانیشده، افزونههای نصبشده، کدکهای رسانهای، طرح رنگ ترجیحی.
W3C در راهنمای Mitigating Browser Fingerprinting بررسی میکند که این سیگنالها در استانداردهای وب چگونه باید محدود شوند.
اثر انگشت چطور به یک مقدار تبدیل میشود؟
سیگنالهای جمعآوریشده تکتک ذخیره نمیشوند؛ معمولاً با هم ترکیب و به یک مقدار خلاصه (هش) فشرده میشوند. سایت این مقدار را به بازدیدکننده نسبت میدهد و اگر در بازدید بعدی همان مقدار تولید شود، میگوید «همان دستگاه است».
دو مفهوم در اینجا اهمیت دارد:
- آنتروپی: یک سیگنال چقدر خوب بازدیدکنندگان را از هم تفکیک میکند. منطقه زمانی آنتروپی پایینی دارد (میلیونها نفر در یک منطقه زمانی هستند)؛ فهرست فونت و خروجی canvas آنتروپی بالایی دارند. هرچه سیگنالها ترکیب شوند، آنتروپی کل بالاتر میرود و ترکیب منحصربهفرد میشود.
- پایداری: سیگنال در طول زمان چقدر ثابت میماند. بهروزرسانی مرورگر
User-Agentرا تغییر میدهد؛ درایور کارت گرافیک ممکن است خروجی canvas را عوض کند. به همین دلیل سیستمهای پیشرفته بهجای تطبیق کامل، اثرانگشتهای «بهقدر کافی مشابه» را هم به یک دستگاه نسبت میدهند.
برای دیدن اینکه مرورگر خودتان چقدر منحصربهفرد به نظر میرسد و کدام سیگنالها بیشترین اطلاعات را حمل میکنند، میتوانید ابزار Cover Your Tracks از EFF را امتحان کنید. صفحه نتیجه، آنتروپی هر سیگنال را جداگانه نشان میدهد.
چه تفاوتی با کوکی دارد؟
| معیار | کوکی | اثر انگشت مرورگر |
|---|---|---|
| کجا ذخیره میشود؟ | در مرورگر شما | هیچجا؛ در هر بازدید دوباره محاسبه میشود |
| آیا قابل حذف است؟ | بله | مستقیم قابل حذف نیست |
| در پنجره ناشناس کار میکند؟ | معمولاً خیر | بله |
| بین سایتها کار میکند؟ | کوکیهای شخص ثالث روزبهروز محدودتر میشوند | بله، همان سیگنالها در هر سایتی تولید میشوند |
| کاربر متوجه میشود؟ | با اعلانهای کوکی | در بیشتر موارد خیر |
| پایداری | تا زمان حذف ثابت | ممکن است با بهروزرسانی مرورگر و درایور تغییر کند |
کوکی کارت شناساییای است که خودتان حمل میکنید؛ اثر انگشت یعنی سایت شما را از روی ظاهرتان میشناسد. کارت را میتوانید دور بیندازید، اما چهرهتان را نمیتوانید عوض کنید.
سایتها چرا از اثر انگشت استفاده میکنند؟
هدف اثر انگشت فقط ردیابی تبلیغاتی نیست. بیشتر کاربردهای آن امنیتی است:
- پیشگیری از کلاهبرداری. بانکها و سامانههای پرداخت، ورود از دستگاهی غیرمعمول را به احراز هویت اضافی هدایت میکنند.
- امنیت حساب. حتی اگر رمز عبورتان درست باشد، ورود با اثر انگشتی که تا حالا دیده نشده مشکوک شمرده میشود. منشأ ایمیلهای «ورود از دستگاه جدید» معمولاً همین است.
- تشخیص ربات. ابزارهای اتوماسیون اغلب ناسازگاریهایی دارند که خودشان را لو میدهند:
User-Agentدسکتاپ با اندازه صفحه موبایل، یا مرورگری که میگوید Windows است اما فونتهای مخصوص Linux دارد. - تشخیص چند حساب. بازارگاهها و پلتفرمهای شبکههای اجتماعی، حسابهای زیادی را که از یک دستگاه باز شدهاند به هم مرتبط میکنند.
- تبلیغات و تحلیل. با محدود شدن کوکیهای شخص ثالث، برخی سامانههای ردیابی به اثر انگشت روی آوردهاند؛ به همین دلیل سازندگان مرورگر در برابر این کاربرد اقدام میکنند.
چرا تغییر IP کافی نیست؟
پروکسی آدرس IPای را که سایت مقصد میبیند تغییر میدهد. اثر انگشت اما از IP مستقل است. اگر با همان مرورگر از چند پروکسی مختلف به همان سایت وصل شوید، سایت این را میبیند: همان دستگاه، از موقعیتهای متفاوت. این میتواند الگویی مشکوکتر از آمدن از یک IP تنها باشد.
برعکسش را هم در نظر بگیرید: نشستی که اثر انگشتش کاملاً درست به نظر میرسد اما از یک IP مرکز داده میآید هم ناسازگار است. اینکه انواع IP چگونه از هم تشخیص داده میشوند را در تفاوت پروکسی مسکونی و دیتاسنتر توضیح دادیم. راه معتبر به نظر رسیدن این است که این دو لایه را با هم هماهنگ کنید:
- تطابق موقعیت و زبان: IPای از استانبول با منطقه زمانی
America/New_Yorkدر مرورگر تناقض دارد. زبان، منطقه زمانی و موقعیت IP باید یک داستان را روایت کنند. - تطابق نوع IP: پروفایل یک دستگاه موبایل با پروکسی موبایل و پروفایل یک دستگاه دسکتاپ با پروکسی مسکونی طبیعیتر به نظر میرسد.
- تداوم نشست: باز کردن یک حساب هر روز با IP و اثر انگشتی متفاوت، حساب را در معرض ریسک قرار میدهد. یک پروکسی ISP ثابت بهازای هر حساب همراه با یک پروفایل مرورگر ثابت، سازگارتر است.
نمونههای ناسازگاری: سایتها به چه چیزی گیر میدهند؟
سامانههای تشخیص ربات اغلب به خود اثر انگشت نگاه نمیکنند، بلکه به تناقض میان سیگنالها توجه میکنند. نمونههای رایج:
| تناقض | چرا مشکوک است؟ |
|---|---|
User-Agent میگوید Windows، اما فهرست فونت شامل فونتهای macOS است | هدر تغییر داده شده، اما سیستم زیرین همان مانده |
صفحهنمایش 1920×1080، پنجره 800×600 و هیچوقت تغییر نمیکند | اندازه پیشفرض پنجره ابزارهای اتوماسیون |
منطقه زمانی استانبول، زبان en-US، IP آلمان | سه سیگنال سه مکان متفاوت را نشان میدهند |
| یک اثر انگشت، در یک ساعت از ده کشور مختلف | یک دستگاه، پروکسی چرخشی |
navigator.webdriver روشن است | مرورگر خودش اعلام میکند که تحت اتوماسیون است |
| WebGL خاموش، canvas تصادفی، فهرست افزونه خالی | تلاش برای پنهانکاری؛ کاربران عادی اینها را خاموش نمیکنند |
آخرین ردیف این جدول نکته مهمی را نشان میدهد: مسدود کردن یا تصادفیسازی سیگنالها هم خودش یک سیگنال است.
آیا پنهان کردن کامل اثر انگشت ممکن است؟
پنهان کردن کامل در عمل ممکن نیست، چون مسدود کردن سیگنالها هم خودش یک سیگنال است. مرورگری که ترسیم canvas را کاملاً خاموش میکند یا در هر درخواست مقادیر تصادفی برمیگرداند، در میان کاربران عادی حتی برجستهتر میشود.
هدف واقعبینانه «نامرئی بودن» نیست، بلکه معمولی به نظر رسیدن در میان جمعیت است. برای این کار، استفاده از نسخههای رایج مرورگر، تنظیمات ثابت و پروفایلی که در طول نشستها تغییر نمیکند، مؤثرتر از بههمریختن تصادفی سیگنالهاست.
سازندگان مرورگر هم در همین جهت پیش میروند: برخی مرورگرها دسترسی به APIهای پرآنتروپی را محدود میکنند یا با افزودن نویز تصادفی کوچک، خروجی canvas را بین سایتها متفاوت میسازند. این اقدامات ردیابی را دشوارتر میکند، اما کاربرد امنیتی آن را کاملاً متوقف نمیکند.
چگونه اثر انگشت خودتان را آزمایش کنید؟
برای دیدن اینکه یک سایت با چه سیگنالهایی شما را میشناسد، میتوانید این مراحل را دنبال کنید:
- تست Cover Your Tracks را در پنجره عادی اجرا کنید و نتیجه را یادداشت کنید.
- همان تست را در پنجره ناشناس تکرار کنید. کوکیها از بین رفتهاند، اما میبینید که نتیجه اثر انگشت تا حد زیادی همان مانده است.
- یک پروکسی یا VPN را روشن کنید و تست را دوباره اجرا کنید. IP و موقعیت تغییر میکند؛ سیگنالهای صفحهنمایش، فونت، canvas و سختافزار تغییر نمیکنند.
- با مرورگری دیگر امتحان کنید. حتی روی همان دستگاه هم با عوض شدن مرورگر، اثر انگشت تغییر میکند؛ چون موتور ترسیم و مجموعه API متفاوت است.
این چهار مرحله در چند دقیقه نشان میدهد چرا این فرض که «IP را عوض کردم، پس دیگر شناخته نمیشوم» اشتباه است.
برای اتوماسیون و جمعآوری داده چه معنایی دارد؟
بتیکهایی که با مرورگرهای بدون رابط گرافیکی کار میکنند، در تنظیمات پیشفرض بهراحتی از کاربران واقعی متمایز میشوند. نشانههای رایج عبارتاند از: روشن بودن navigator.webdriver، فهرست افزونه ناقص، اندازههای صفحه غیرواقعی و تعاملهایی که در چند ثانیه کامل میشوند.
به همین دلیل حتی در کارهای جمعآوری دادهای که سایت اجازه میدهد، سه قاعده برقرار است:
- سرعت درخواست را معقول نگه دارید. حتی اگر اثر انگشت کاملاً عادی به نظر برسد، نشستی که در ثانیه دهها صفحه باز میکند شبیه انسان نیست.
- از پروفایل مرورگر ثابتی استفاده کنید. اندازه پنجره، زبان و منطقه زمانی باید یک دستگاه واقعی را منعکس کند و در طول نشست تغییر نکند.
- در طول نشست همان IP را حفظ کنید. در جریانهایی که ورود انجام شده، تغییر IP در وسط راه هم سیگنال اثر انگشت و هم سیگنال IP را همزمان خراب میکند؛ پروکسی با نشست ثابت برای همین نیاز طراحی شده است.
دلیل ظاهر شدن CAPTCHA در مرورگرهای بدون رابط گرافیکی را در Puppeteer و CAPTCHA و محافظتهای نسل جدید که به رفتار نگاه میکنند را در Cloudflare Precursor بررسی کردهایم. برای محدودیتهای ابزارهای سمت Python میتوانید Undetected ChromeDriver را ببینید.
سؤالات متداول
آیا اثر انگشت قانونی است؟
کاربرد امنیتی و ضدکلاهبرداری آن رایج است. اما وقتی بهعنوان اطلاعاتی که فرد را قابل شناسایی میکند پردازش شود، ممکن است در محدوده مقرراتی مانند GDPR قرار بگیرد. سایتها موظفاند هدف پردازش این اطلاعات را در سیاست حریم خصوصی خود توضیح دهند.
آیا پنجره ناشناس اثر انگشت را تغییر میدهد؟
تا حد زیادی خیر. پنجره ناشناس کوکی و تاریخچه را ذخیره نمیکند، اما سیگنالهای صفحهنمایش، فونت، canvas و سختافزار همان میمانند.
آیا VPN یا پروکسی اثر انگشت را تغییر میدهد؟
خیر. هر دو فقط آدرس IP و در نتیجه موقعیت ظاهری را تغییر میدهند. اطلاعاتی که خود مرورگر درباره خودش میفرستد همان میماند. تفاوت این دو ابزار را در تفاوت پروکسی و VPN توضیح دادیم.
آیا بهروزرسانی مرورگر اثر انگشت را تغییر میدهد؟
تا حدی. اطلاعات نسخه و برخی سیگنالهای API تغییر میکنند، اما صفحهنمایش، فونت، سختافزار و منطقه زمانی همان میمانند. سامانههای پیشرفته این تغییر جزئی را تحمل میکنند و همچنان آن را به همان دستگاه نسبت میدهند.
مرورگر ضدشناسایی چه میکند؟
برای هر پروفایل مجموعهای جداگانه و منسجم از اثر انگشت میسازد و پروفایلها را از هم جدا میکند. هدف پنهان کردن سیگنالها نیست، بلکه این است که هر پروفایل در درون خودش منسجم و شبیه یک دستگاه معمولی به نظر برسد. اگر به هر پروفایل IP جداگانهای اختصاص داده نشود، این جداسازی ناقص میماند.
آیا اثر انگشت در دستگاههای موبایل ضعیفتر است؟
دستگاههای موبایل بر اساس مدل بیشتر شبیه هم هستند (همان صفحهنمایش، همان مجموعه فونت)، بنابراین آنتروپی هر سیگنال بهتنهایی پایینتر است. اما رفتار لمسی، دادههای حسگر و سیگنالهای سطح اپلیکیشن این تفاوت را جبران میکنند. اینکه چرا ترافیک موبایل متفاوت ارزیابی میشود را در مبانی پروکسی موبایل توضیح دادیم.
خلاصه
اثر انگشت مرورگر راهی برای شناسایی دستگاه شما بدون نیاز به کوکی است و از امنیت تا تبلیغات، در محدودهای گسترده استفاده میشود. آدرس IP فقط بخشی از این تصویر است؛ پروکسی IP را تغییر میدهد اما به اثر انگشت دست نمیزند. برای معتبر به نظر رسیدن، نوع IP، موقعیت و پروفایل مرورگر باید با هم هماهنگ باشند و در طول نشست تغییر نکنند. انواع IP مناسب برای مدیریت حساب و پروفایل را در راهکارهای پروکسی ما پیدا میکنید.




