← بازگشت به وبلاگ

اثر انگشت پروکسی TCP/IP: چگونه بررسی کنیم که سیستم عامل شما را به ضد ربات معرفی نمی‌کند

سایت TCP-استک ماشینی را می‌بیند که اتصال را باز می‌کند، یعنی پروکسی. سرور لینوکس تحت پروفایل ویندوز تضادی را ایجاد می‌کند که با هدرها قابل اصلاح نیست. بررسی می‌کنیم که فینگرپرینتینگ غیرفعال (p0f, Zardaxt, JA4T) چگونه کار می‌کند، چگونه در ۵ دقیقه پروکسی خود را بررسی کنیم و چگونه نوع پروکسی را برای سیستم‌عامل پروفایل انتخاب کنیم.

📅۵ آبان ۱۴۰۵
اثر انگشت پروکسی TCP/IP: چگونه بررسی کنیم که سیستم عامل شما را به ضد ربات معرفی نمی‌کند

شما مرورگر ضد شناسایی را برای ویندوز و کروم تنظیم کرده‌اید، یک IP پاک انتخاب کرده‌اید، منطقه زمانی و زبان را تنظیم کرده‌اید، اما سایت هنوز هم کد کپچا می‌گذارد یا حساب کاربری را قطع می‌کند. دلیل رایج این مشکل در زیر مرورگر، در سطح TCP/IP نهفته است. سرور اولین بسته اتصال (SYN) را می‌بیند و از روی فیلدهای آن مشخص می‌شود که کدام سیستم‌عامل این بسته را ارسال کرده است. اگر این یک پروکسی لینوکس باشد و User-Agent ویندوز را اعلام کند، سیستم ضد ربات با تناقضی مواجه می‌شود که با هدرها قابل اصلاح نیست.

موضوع دیگر یک موضوع عجیب و غریب نیست. در تاریخ 13 اکتبر 2026، به نقل از Proxyway، ارائه‌دهنده بریتانیایی Byteful در نسخه بتای عمومی خود تغییر اثر انگشت TCP/IP را برای پروکسی‌های دیتاسنتر و ISP فعال کرده است: آن‌ها می‌توانند خود را به عنوان ویندوز، macOS، لینوکس، اندروید و iOS معرفی کنند. توضیح Proxyway ساده است: سیستم‌های ضد ربات به طور فزاینده‌ای به اثر انگشت TCP/IP توجه می‌کنند. در ادامه بررسی خواهیم کرد که این بررسی چگونه انجام می‌شود، چگونه در پنج دقیقه پروکسی خود را بررسی کنیم و در صورت عدم تطابق چه کاری انجام دهیم.

اثر انگشت TCP/IP چیست و چرا پروکسی آن را تغییر می‌دهد

هر سیستم‌عامل بسته SYN را به شیوه خاص خود جمع‌آوری می‌کند: TTL اولیه خود، اندازه پنجره TCP، ضریب مقیاس‌گذاری پنجره، MSS و مهم‌تر از همه، مجموعه و ترتیب گزینه‌های TCP. فینگرپرینتینگ غیرفعال (کلاسیک اینجا ابزار p0f است، نسخه‌های مدرن Zardaxt و JA4T نامیده می‌شوند) این فیلدها را می‌خواند و سیستم‌عامل را حدس می‌زند، بدون اینکه چیزی به مشتری ارسال کند.

نکته کلیدی برای کسانی که از طریق پروکسی کار می‌کنند: سایت استک TCP ماشینی را می‌بیند که آخرین اتصال را به آن باز کرده است. پروکسی معمولی (HTTP CONNECT یا SOCKS5) اتصال شما را می‌پذیرد و یک اتصال جدید به سایت به نام خود باز می‌کند. بنابراین TTL و گزینه‌های TCP در بسته متعلق به پروکسی است، نه کامپیوتر شما. می‌توان User-Agent، اثر انگشت TLS یا هدرها را تغییر داد، اما SYN قبلاً توسط هسته آن ماشینی که از طریق آن خارج می‌شوید، جمع‌آوری شده است.

مقادیر معمول بر اساس سیستم‌عامل

راهنماهایی از تحلیل Scrapfly و مستندات pydoll (در نسخه‌های خاص هسته و شبکه‌ها ممکن است مقادیر متفاوت باشد):

  • ویندوز 10/11: TTL اولیه 128، پنجره 64240–65535، ترتیب گزینه‌ها MSS، NOP، WSCALE، NOP، NOP، SACK (بدون timestamp به طور پیش‌فرض).
  • لینوکس: TTL 64، پنجره 29200 در هسته‌های 3.x+ (در برخی هسته‌های 5.x/6.x 64240)، ترتیب MSS، SACK، TIMESTAMP، NOP، WSCALE.
  • macOS و iOS: TTL 64، پنجره 65535، ترتیب MSS، NOP، WSCALE، NOP، NOP، TIMESTAMP، SACK، EOL.
  • اندروید: TTL 64، ترتیب گزینه‌ها نزدیک به لینوکس است، که منطقی است زیرا هسته آن لینوکس است.

از اینجا تله اصلی مشخص می‌شود: تقریباً تمام پروکسی‌های دیتاسنتر بر روی لینوکس کار می‌کنند. پروفایل «ویندوز + کروم» بر روی چنین پروکسی‌ای نشانه‌هایی از لینوکس را در SYN به همراه دارد و این تناقض بیشتر به چشم می‌آید.

چقدر دقیق ضد ربات‌ها عدم تطابق را شناسایی می‌کنند

اعداد در پروژه عمومی Zardaxt وجود دارد: این‌ها نسخه‌های بازنویسی شده p0f و satori.py هستند که به دنبال بازپخش‌کننده‌ها، یعنی پروکسی‌های HTTP و SOCKS، می‌گردند که مرورگر خود را به عنوان یک ماشین دیگر معرفی می‌کند. بر اساس README برای ساخت از 21 سپتامبر 2026 (پایه‌ای از 1,453 اثر انگشت تقریباً از 23 هزار جلسه):

  • مدل با آستانه 0.8 94.4% اتصالات از طریق پروکسی را شناسایی می‌کند و تنها 0.1% اتصالات مستقیم را به اشتباه علامت‌گذاری می‌کند؛
  • اگر مرورگر ویندوز را اعلام کند، پروکسی در 96% موارد شناسایی می‌شود، اگر مک باشد، در 99%؛
  • نقطه ضعف این است که اندروید و لینوکس: آن‌ها یک کلاس را به اشتراک می‌گذارند، بنابراین چنین بازپخش‌کننده‌هایی در 74% موارد شناسایی می‌شوند؛
  • مدل VPN تونلی تقریباً دیده نمی‌شود (6.1%): از طریق تونل با سایت، استک دستگاه خودتان صحبت می‌کند.

بیشترین چیزی که سیستم‌عامل نشان می‌دهد، ترتیب گزینه‌های TCP است: در تحلیل عاملی پروژه، این فیلد در 99.1% موارد سیستم‌عامل را حدس می‌زند. پرچم DF تقریباً بی‌فایده است (0.362). این یک ابزار عمومی از یک محقق است، جزئیات در مورد ضد ربات‌های تجاری منتشر نمی‌شود، اما اصل همان است: مقایسه سیستم‌عامل از SYN با سیستم‌عامل از User-Agent.

چگونه پروکسی خود را بررسی کنیم: مرحله به مرحله

  1. «استاندارد» را بدون پروکسی بگیرید. در مرورگر معمولی browserleaks.com/tcp را باز کنید. TTL، MSS، ترتیب گزینه‌ها، حدس p0f و ارزیابی‌های Zardaxt بر اساس سیستم‌عامل را یادداشت کنید. این استک واقعی شماست.
  2. پروکسی را از کنسول بررسی کنید. از طریق پروکسی به یک طبقه‌بندی‌کننده باز درخواست ارسال کنید:
    curl -x http://LOGIN:PASS@HOST:PORT "https://tcpip.incolumitas.com/classify?by_ip=1"
    در پاسخ، فیلد avg_score_os_class با نمرات برای لینوکس، ویندوز، مک OS و iOS وجود خواهد داشت. برنده اینجا سیستم‌عامل خروجی پروکسی است، نه کامپیوتر شما.
  3. در پروفایل ضد شناسایی تکرار کنید. اکنون browserleaks.com/tcp یا proxydetect.live/tcpip.html را در پروفایل با پروکسی باز کنید. حالا دو چیز را مقایسه کنید: سیستم‌عامل از TCP/IP و سیستم‌عامل از User-Agent پروفایل.
  4. به MSS نگاه کنید. خط اترنت پاک MSS 1460 را می‌دهد. مقادیر مانند 1380 (WireGuard)، 1360 (IPsec) یا 1240 نشان‌دهنده یک تونل در مسیر هستند. خود به خود این یک ممنوعیت نیست، شبکه‌های موبایل نیز اغلب MSS کمتری می‌دهند، اما در مجموع با سایر نشانه‌ها شک و تردید را افزایش می‌دهد.
  5. 5–10 اندازه‌گیری در چرخش انجام دهید. در پروکسی‌های مقیم و موبایل، هر IP جدید ممکن است دستگاه دیگری با سیستم‌عامل متفاوت باشد. یک اندازه‌گیری هیچ چیزی نمی‌گوید، توزیع را بررسی کنید.
  6. در یک جدول جمع‌آوری کنید: نوع پروکسی → سیستم‌عامل بر اساس TCP → سیستم‌عامل پروفایل → تطابق بله/خیر. این پاسخ است که کدام پروفایل را بر روی کدام پروکسی اجرا کنید.

یک TTL به عنوان مدرک مناسب نیست: مقدار قابل مشاهده در هر روتر کاهش می‌یابد و سایت تنها مقدار اولیه (64 یا 128) را بر اساس نزدیک‌ترین درجه ارزیابی می‌کند. ترکیب فیلدها، به ویژه ترتیب گزینه‌ها، تعیین‌کننده است.

در صورت عدم تطابق چه کار کنیم

1. پروفایل را به پروکسی تنظیم کنید، نه برعکس

ارزان‌ترین راه: انتخاب سیستم‌عامل پروفایل به گونه‌ای که با آنچه خروجی پروکسی نشان می‌دهد، مطابقت داشته باشد. اگر پروکسی لینوکس را ارائه می‌دهد، بهتر است پروفایل لینوکس را اجرا کنید تا اینکه به سایت ثابت کنید که شما ویندوز هستید. برای کارهایی که در آن سیستم‌عامل پروفایل مهم نیست (خزیدن در صفحات عمومی، نظارت بر قیمت‌ها)، این مشکل را به طور کامل حل می‌کند.

2. نوع پروکسی را بر اساس سیستم‌عامل مورد نیاز انتخاب کنید

  • پروکسی‌های دیتاسنتر تقریباً همیشه سرور لینوکس را از ASN ابری نشان می‌دهند. این برای خزیدن از یک کلاینت لینوکس (Python، Go، curl بر روی سرور) طبیعی است: استک و User-Agent اسکریپت شما همخوانی دارند. برای پروفایل‌های «کاربر ویندوز» این نقطه ضعف است. پروکسی‌های دیتاسنتر را از جایی بگیرید که سرعت و قیمت برای گیگابایت مهم است، نه افسانه «انسان واقعی».
  • پروکسی‌های مقیم از طریق دستگاه‌ها و دروازه‌های واقعی خانگی خارج می‌شوند، بنابراین سایت استک واقعی کاربر را می‌بیند. سیستم‌عامل بر روی IP خاص از قبل تضمین نشده است، اما این استک یک دستگاه زنده است، نه یک سرور ابری. برای چند حساب کاربری و ضد ربات‌های پیچیده، پروکسی‌های مقیم طبیعی‌ترین تصویر را ارائه می‌دهند، اگر توزیع سیستم‌عامل را در چرخش بررسی کنید.
  • پروکسی‌های موبایل مسیرهایی را نشان می‌دهند که شبیه به اندروید یا iOS هستند. برای پروفایل‌های موبایل (شبکه‌های اجتماعی، برنامه‌ها، نسخه موبایل سایت‌ها) این تطابق ایده‌آل در تمام لایه‌ها است. برای اطلاعات بیشتر در مورد چگونگی تشخیص IP واقعی موبایل از تقلبی، به راهنمای ما برای بررسی پروکسی‌های موبایل مراجعه کنید. برای این نوع کارها، پروکسی‌های موبایل 4G/5G مناسب هستند.

3. لایه TCP را با لایه TLS اشتباه نگیرید

ابزارهایی مانند curl-impersonate یا curl_cffi دست دادن TLS و HTTP/2 را تحت کروم جعل می‌کنند، اما استک TCP را دست‌نخورده باقی می‌گذارند: SYN هنوز هم توسط هسته آن ماشینی که اتصال را ایجاد می‌کند، جمع‌آوری می‌شود. یک اثر انگشت TLS خوب بر روی TCP متناقض نجات‌دهنده نیست، به هر دو لایه نیاز است. چگونگی هم‌راستا کردن بخش TLS در مقاله‌ای درباره عبور از JA4 از طریق curl_cffi توضیح داده شده است.

4. تغییر سیستم‌عامل در سمت پروکسی و تونل‌ها

ارائه‌دهندگان شروع به فروش تغییر اثر انگشت TCP/IP در سرورهای خود کرده‌اند، نمونه‌ای که در بالا ذکر شد، Byteful، اما این هنوز نادر و بتا است. یک راه معکوس نیز وجود دارد: مدل VPN تونلی Zardaxt تقریباً به عنوان یک بازپخش‌کننده شناسایی نمی‌شود، زیرا سایت استک خود شما را می‌بیند. معایب نیز شناخته شده‌اند: MSS کاهش‌یافته یک تونل را نشان می‌دهد و IP خود VPN اغلب در پایگاه‌های داده به عنوان یک هاستینگ شناخته می‌شود.

اشتباهات رایج

  • فقط با چک‌کننده‌های IP بررسی کنید. خدمات اعتبار IP به آدرس و ASN نگاه می‌کنند، نه به SYN. یک IP پاک با استک لینوکس تحت پروفایل ویندوز چک‌کننده را عبور می‌کند و در ضد ربات شکست می‌خورد.
  • نتیجه‌گیری بر اساس یک اندازه‌گیری در چرخش. در استخر مقیم، IP بعدی ممکن است سیستم‌عامل دیگری باشد.
  • با هدرها مشکل را حل کنید. هیچ هدر نمی‌تواند SYN را پس از ارسال آن توسط هسته تغییر دهد.
  • پروفایل‌های اندروید را در پروکسی‌های لینوکس نادیده بگیرید. برای مدل‌های باز این یک منطقه نامشخص است (74% شناسایی)، اما ضد ربات‌های تجاری ممکن است سیگنال‌های دیگری مانند زمان‌بندی‌ها و ASN موبایل را اضافه کنند. پروفایل موبایل به طور طبیعی بر روی IP موبایل بهتر به نظر می‌رسد.

نتیجه‌گیری

اثر انگشت TCP/IP لایه‌ای است که نمی‌توان از طریق مرورگر اصلاح کرد: آن را ماشینی تعیین می‌کند که اتصال را به سایت باز می‌کند. بررسی پنج دقیقه طول می‌کشد: browserleaks.com/tcp بدون پروکسی و با پروکسی، به علاوه curl به یک طبقه‌بندی‌کننده باز. سپس یک قاعده ساده وجود دارد: سیستم‌عامل پروفایل باید با سیستم‌عامل خروجی پروکسی مطابقت داشته باشد. دیتاسنتر برای اسکریپت‌های لینوکس مناسب است، پروکسی‌های مقیم برای پروفایل‌های «زنده» دسکتاپ، و موبایل‌ها برای سناریوهای موبایل. نوع پروکسی را بر اساس پروفایل خود انتخاب کنید، 5–10 اندازه‌گیری در چرخش انجام دهید و ضد ربات یکی از مطمئن‌ترین نشانه‌ها را از دست خواهد داد.