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

بایپس SSL Pinning از طریق پروکسی: چگونه ترافیک اپلیکیشن موبایل را ضبط کنیم و تست را خراب نکنیم

SSL Pinning مانع از شنود ترافیک برنامه‌های موبایل می‌شود - بررسی می‌کنیم که چگونه می‌توان از طریق پروکسی بدون دانش فنی عمیق این را دور زد.

📅۱۵ مرداد ۱۴۰۵
```html

شما پروکسی را تنظیم می‌کنید، دستگاه را متصل می‌کنید - و با این حال برنامه ترافیک را نشان نمی‌دهد یا با خطا سقوط می‌کند. احتمالاً مشکل در SSL Pinning است: حفاظتی که توسعه‌دهندگان به‌طور عمدی در برنامه قرار می‌دهند تا از ضبط درخواست‌های HTTPS جلوگیری کنند. این یک دردسر برای همه کسانی است که رفتار برنامه‌های رقیب را تحلیل می‌کنند، ادغام‌های تبلیغاتی را تست می‌کنند یا API بازارها را مطالعه می‌کنند.

در این راهنما بررسی خواهیم کرد که SSL Pinning چیست، چرا مانع کار با پروکسی می‌شود و چگونه می‌توان آن را دور زد - به‌صورت گام به گام، بدون نظریه اضافی.

SSL Pinning چیست و چرا در برنامه‌ها قرار داده می‌شود

SSL Pinning (یا Certificate Pinning) یک مکانیزم امنیتی است که در آن برنامه موبایل به‌طور پیش‌فرض یک گواهی SSL خاص یا کلید عمومی سرور را در خود «سوزانده» می‌کند. در هر اتصال، برنامه بررسی می‌کند که آیا گواهی سرور با آنچه درون آن قرار دارد مطابقت دارد یا خیر. اگر نه - اتصال قطع می‌شود.

در یک طرح HTTPS معمولی، مرورگر یا برنامه به هر گواهی‌ای که توسط یک مرکز صدور گواهی معتبر (CA) امضا شده است اعتماد می‌کند. این همان چیزی است که ابزارهای پروکسی مانند Charles Proxy یا mitmproxy از آن استفاده می‌کنند: آنها گواهی خود را جایگزین می‌کنند، ترافیک را رمزگشایی می‌کنند و آن را به جلو ارسال می‌کنند. کاربر تمام تبادل داده‌ها را به‌صورت باز مشاهده می‌کند.

SSL Pinning این طرح را خراب می‌کند. برنامه گواهی ابزار پروکسی را می‌بیند، متوجه می‌شود که با گواهی «محلی» سرور مطابقت ندارد و از کار کردن خودداری می‌کند. به همین دلیل است که شما خطاهایی مانند SSL handshake failed، Certificate verification failed یا فقط یک صفحه خالی در برنامه مشاهده می‌کنید.

توسعه‌دهندگان SSL Pinning را به چند دلیل پیاده‌سازی می‌کنند:

  • محافظت در برابر حملات نوع Man-in-the-Middle (MITM)
  • جلوگیری از مهندسی معکوس API
  • محافظت در برابر ربات‌ها و درخواست‌های خودکار
  • پنهان کردن منطق داخلی درآمدزایی و ادغام‌های تبلیغاتی

از جمله برنامه‌هایی که به‌طور فعال از SSL Pinning استفاده می‌کنند: برنامه‌های بانکی، بازارها (Wildberries، Ozon)، SDKهای تبلیغاتی (Facebook، TikTok)، سیستم‌های پرداخت و پلتفرم‌های بزرگ تجارت الکترونیک. به همین دلیل است که دور زدن SSL Pinning برای بازاریابان، آربیتراژکنندگان و متخصصان تحلیل رقبا بسیار مهم است.

چرا پروکسی کار نمی‌کند اگر در برنامه SSL Pinning وجود داشته باشد

وقتی شما پروکسی را روی تلفن خود تنظیم می‌کنید (به‌عنوان مثال، از طریق تنظیمات Wi-Fi)، تمام ترافیک HTTP و HTTPS از طریق سرور پروکسی عبور می‌کند. برای HTTP این بدون مشکل کار می‌کند - ترافیک به‌هرحال باز است. اما برای HTTPS، ابزار پروکسی باید خود را به‌عنوان سرور معرفی کند و گواهی خود را جایگزین کند.

اینجا است که تعارض به وجود می‌آید. برنامه‌های معمولی این گواهی را می‌پذیرند، اگر شما گواهی ریشه ابزار پروکسی را در ذخیره‌سازی سیستم دستگاه نصب کرده باشید. اما برنامه‌های با SSL Pinning ذخیره‌سازی سیستم را نادیده می‌گیرند - آنها فقط گواهی «سوزانده‌شده» خود را بررسی می‌کنند.

این چگونه در عمل به نظر می‌رسد:

شما Charles Proxy را متصل می‌کنید، گواهی ریشه آن را روی iPhone نصب می‌کنید، برنامه بازار را راه‌اندازی می‌کنید - و خطا یا صفحه خالی را مشاهده می‌کنید. در لاگ‌های Charles - خالی یا رکوردهایی با خطای SSL وجود دارد. این تصویر کلاسیک SSL Pinning در عمل است.

مهم است که بفهمید: مشکل در سرور پروکسی (محلی، موبایل یا مرکز داده) نیست. پروکسی در اینجا به‌عنوان یک گره میانی برای مسیریابی ترافیک عمل می‌کند. مشکل در خود برنامه است که از پذیرش گواهی تغییر یافته خودداری می‌کند. بنابراین، راه‌حل باید در سطح برنامه یا دستگاه جستجو شود، نه در سطح سرور پروکسی.

چندین نوع SSL Pinning وجود دارد و آنها از نظر پیچیدگی دور زدن متفاوت هستند:

نوع Pinning چه چیزی بررسی می‌شود پیچیدگی دور زدن
Certificate Pinning گواهی کامل سرور متوسط
Public Key Pinning کلید عمومی از گواهی بالا
Hash Pinning هش گواهی یا کلید بالا
Network Security Config فایل پیکربندی Android (XML) پایین-متوسط

ابزارها برای ضبط ترافیک: Charles، mitmproxy، Burp Suite

قبل از اینکه به دور زدن SSL Pinning بپردازید، باید ابزاری برای ضبط ترافیک انتخاب کنید. همه آنها بر اساس یک اصل کار می‌کنند: یک سرور پروکسی محلی راه‌اندازی می‌کنند که از طریق آن ترافیک دستگاه عبور می‌کند. تفاوت در راحتی، ویژگی‌ها و قیمت است.

Charles Proxy

محبوب‌ترین ابزار در میان بازاریابان و تست‌کنندگان بدون پیش‌زمینه فنی عمیق. دارای رابط گرافیکی است و بر روی Windows و macOS کار می‌کند. به شما اجازه می‌دهد تمام درخواست‌ها و پاسخ‌ها را در یک درخت راحت مشاهده کنید، بر اساس دامنه فیلتر کنید و درخواست‌ها را به‌صورت زنده ویرایش کنید. پولی است، اما دوره آزمایشی دارد. برای تحلیل API بازارها و SDKهای تبلیغاتی بسیار مناسب است.

mitmproxy

ابزاری رایگان با کد منبع باز. از طریق خط فرمان کار می‌کند، اما یک رابط وب (mitmweb) دارد. بسیار انعطاف‌پذیر است: از اسکریپت‌ها برای تغییر خودکار ترافیک پشتیبانی می‌کند. برای کسانی که می‌خواهند تحلیل را خودکار کنند یا ضبط را در خط لوله تست ادغام کنند، مناسب است. کمی در تنظیمات پیچیده‌تر از Charles است.

Burp Suite

ابزاری حرفه‌ای برای تست امنیت. دارای نسخه رایگان Community با عملکرد پایه است. به‌ویژه برای تحلیل دقیق درخواست‌ها، کار با کوکی‌ها و جلسات مناسب است. به‌طور فعال در تحلیل API رقبا و بررسی ادغام‌های تبلیغاتی استفاده می‌شود. رابط آن پیچیده‌تر از Charles است، اما امکانات بیشتری دارد.

ابزار رابط قیمت برای چه کسانی
Charles Proxy GUI (راحت) پولی (~$50) بازاریابان، تحلیل‌گران
mitmproxy CLI + Web UI رایگان متخصصان فنی
Burp Suite GUI (پیچیده) رایگان / پرو تست‌کنندگان امنیت

برای بیشتر وظایف بازاریاب یا آربیتراژکننده - تحلیل درخواست‌های تبلیغاتی، مطالعه API بازار، نظارت بر ترافیک برنامه - Charles Proxy انتخاب بهینه خواهد بود. اگر نیاز به خودکارسازی یا کار بدون GUI دارید - mitmproxy.

روش‌های دور زدن SSL Pinning: از ساده به پیشرفته

چندین رویکرد برای دور زدن SSL Pinning وجود دارد. آنها از نظر پیچیدگی، الزامات دستگاه و قابلیت اطمینان متفاوت هستند. هر یک را بررسی می‌کنیم - از ساده‌ترین تا قدرتمندترین.

روش 1: نصب گواهی در ذخیره‌سازی سیستم (فقط Android)

ساده‌ترین روش - اما فقط برای برنامه‌هایی کار می‌کند که از ذخیره‌سازی سیستم گواهی‌ها استفاده می‌کنند. در Android تا نسخه 7.0، گواهی‌های کاربر به‌طور هم‌سطح با گواهی‌های سیستمی پذیرفته می‌شدند. از Android 7.0 به بعد، برنامه‌ها به‌طور پیش‌فرض گواهی‌های CA کاربر را نادیده می‌گیرند. اگر برنامه به‌طور صریح اجازه گواهی‌های کاربر را در network_security_config.xml بدهد - این روش کار خواهد کرد. برای بیشتر برنامه‌های مدرن با SSL Pinning - کار نخواهد کرد.

روش 2: Frida - پچ‌کردن دینامیک برنامه

Frida ابزاری برای ابزارسازی دینامیک برنامه‌ها است. این امکان را می‌دهد که «در حال پرواز» فراخوانی‌های توابع درون برنامه را ضبط کرده و رفتار آنها را تغییر دهید. برای دور زدن SSL Pinning، اسکریپت‌های آماده‌ای وجود دارد که بررسی گواهی را بدون تغییر APK غیرفعال می‌کنند. نیاز به روت در Android یا جیلبریک در iOS دارد. این روش مطمئن‌ترین و چندمنظوره‌ترین است.

روش 3: پچ‌کردن APK (Android)

دیکامپایل کردن فایل APK با استفاده از apktool، حذف یا تغییر کد SSL Pinning، بازسازی و امضای مجدد برنامه. نیاز به روت ندارد، اما نیاز به مهارت‌های فنی در کار با کد smali دارد. برای برنامه‌هایی با پیاده‌سازی ساده Pinning از طریق Network Security Config خوب کار می‌کند. برای برنامه‌هایی با کد بومی (C/C++) - به‌طور قابل توجهی پیچیده‌تر است.

روش 4: Objection - پوششی بر روی Frida برای مبتدیان

Objection ابزاری مبتنی بر Frida با رابط خط فرمان ساده‌تر است. شامل دستورات داخلی برای دور زدن SSL Pinning با یک دستور است: android sslpinning disable. مناسب برای کسانی که نمی‌خواهند با نوشتن اسکریپت‌های Frida به‌صورت دستی سر و کار داشته باشند. نیاز به روت یا جیلبریک دارد.

روش 5: استفاده از شبیه‌ساز با روت

به‌جای دستگاه فیزیکی می‌توانید از شبیه‌ساز Android (به‌عنوان مثال، Genymotion یا AVD استاندارد از Android Studio) با دسترسی روت استفاده کنید. این امکان را می‌دهد که گواهی‌های سیستمی را نصب کنید و Frida را بدون خطر «خراب کردن» تلفن واقعی اجرا کنید. گزینه‌ای راحت برای تست‌های منظم در محیط کاری.

دور زدن SSL Pinning در Android به‌صورت گام به گام

بیایید سناریوی عملی‌ترین را بررسی کنیم: دستگاه Android یا شبیه‌ساز با روت، ابزار Objection + Frida، ابزار پروکسی Charles Proxy یا mitmproxy.

چه چیزهایی لازم است:

  • دستگاه Android با روت یا شبیه‌ساز Genymotion
  • کامپیوتری با Python 3 نصب‌شده
  • سرور Frida برای Android (دانلود از GitHub)
  • Objection (از طریق pip نصب می‌شود)
  • Charles Proxy یا mitmproxy روی کامپیوتر
  • ADB (Android Debug Bridge)

گام 1: ابزار پروکسی را روی کامپیوتر تنظیم کنید

Charles Proxy یا mitmproxy را راه‌اندازی کنید. به‌طور پیش‌فرض آنها به پورت 8888 (Charles) یا 8080 (mitmproxy) گوش می‌دهند. آدرس IP کامپیوتر خود را در شبکه محلی به خاطر بسپارید - برای تنظیم پروکسی روی دستگاه به آن نیاز دارید.

گام 2: پروکسی را روی دستگاه Android تنظیم کنید

به تنظیمات Wi-Fi بروید → شبکه خود را انتخاب کنید → روی «تغییر» کلیک کنید → «تنظیمات اضافی» → پروکسی: دستی. آدرس IP کامپیوتر و پورت ابزار را مشخص کنید. اکنون تمام ترافیک دستگاه از طریق پروکسی شما عبور می‌کند.

گام 3: گواهی ابزار پروکسی را نصب کنید

مرورگر را روی دستگاه باز کنید و به آدرس chls.pro/ssl (برای Charles) یا mitm.it (برای mitmproxy) بروید. گواهی را دانلود و نصب کنید. در Android با روت، گواهی را به ذخیره‌سازی سیستم منتقل کنید - این برای برخی برنامه‌ها لازم است.

گام 4: سرور Frida را روی دستگاه راه‌اندازی کنید

نسخه مناسب سرور frida را از GitHub دانلود کنید (نسخه باید با نسخه Frida روی کامپیوتر مطابقت داشته باشد). فایل را از طریق ADB به دستگاه منتقل کنید:

adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "su -c /data/local/tmp/frida-server &"

گام 5: از طریق Objection متصل شوید و SSL Pinning را غیرفعال کنید

روی کامپیوتر، Objection را از طریق pip نصب کرده و آن را با نام بسته برنامه راه‌اندازی کنید:

pip install objection
objection -g com.example.app explore

پس از اتصال، در کنسول Objection دستور غیرفعال‌سازی SSL Pinning را اجرا کنید:

android sslpinning disable

پس از این، برنامه را باز کنید و شروع به تعامل با آن کنید. ترافیک به‌صورت رمزگشایی‌شده در Charles یا mitmproxy ظاهر خواهد شد.

گام 6: برای برنامه‌هایی با Network Security Config

اگر برنامه از network_security_config.xml استفاده می‌کند، می‌توانید APK را از طریق apktool دیکامپایل کنید، این فایل را پیدا کنید و اجازه‌ای برای گواهی‌های کاربر اضافه کنید، سپس APK را دوباره بسازید و امضا کنید. این بدون روت کار می‌کند، اما نیاز به غیرفعال کردن بررسی امضای برنامه دارد.

دور زدن SSL Pinning در iOS به‌صورت گام به گام

در iOS وضعیت پیچیده‌تر است: برای بیشتر روش‌ها نیاز به جیلبریک است. بدون آن، امکانات محدود است. هر دو گزینه را بررسی می‌کنیم.

گزینه A: با جیلبریک (iOS 14-16، checkra1n / palera1n)

گام 1: پروکسی را تنظیم کنید

در iPhone به تنظیمات → Wi-Fi → شبکه خود → تنظیم پروکسی → دستی بروید. آدرس IP کامپیوتر و پورت Charles/mitmproxy را مشخص کنید.

گام 2: گواهی را نصب کنید

Safari را باز کنید و به chls.pro/ssl بروید. پروفایل را از طریق تنظیمات → عمومی → VPN و مدیریت دستگاه نصب کنید. سپس آن را در تنظیمات → عمومی → اعتماد به گواهی‌ها فعال کنید.

گام 3: SSL Kill Switch 2 را از طریق Cydia/Sileo نصب کنید

SSL Kill Switch 2 یک تریک برای iOS جیلبریک شده است که SSL Pinning را به‌طور جهانی برای تمام برنامه‌ها غیرفعال می‌کند. آن را در Cydia یا Sileo پیدا کنید، نصب کنید و دستگاه را ریستارت کنید. پس از این، بیشتر برنامه‌ها دیگر گواهی‌ها را بررسی نخواهند کرد و ترافیک در Charles قابل مشاهده خواهد بود.

گام 4: جایگزین - Frida + Objection در iOS

مشابه Android: سرور frida را از طریق Cydia نصب کنید، از طریق Objection به کامپیوتر متصل شوید و ios sslpinning disable را اجرا کنید. این روش انعطاف‌پذیرتر است و برای برنامه‌هایی که SSL Kill Switch 2 پوشش نمی‌دهد، کار می‌کند.

گزینه B: بدون جیلبریک (امکانات محدود)

بدون جیلبریک دور زدن SSL Pinning در iOS به‌طور قابل توجهی پیچیده‌تر است. یکی از گزینه‌ها استفاده از ابزار Proxyman با قابلیت SSL Proxying برای iOS بدون جیلبریک است. Proxyman یک پروفایل خاص را روی دستگاه نصب کرده و از رابط VPN برای ضبط ترافیک استفاده می‌کند. برای بسیاری از برنامه‌ها کار می‌کند، اما نه برای همه با Pinning سخت.

گزینه دیگر استفاده از شبیه‌ساز iOS در Xcode است. شبیه‌ساز در سطح سیستم عامل SSL Pinning ندارد و بسیاری از برنامه‌ها را می‌توان در آن اجرا کرد (اگر از شبیه‌ساز پشتیبانی کنند). اما این فقط برای تست مناسب است و نه برای تحلیل برنامه‌های تولیدی.

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

پس از اینکه SSL Pinning دور زده شد، ترافیک برنامه از طریق ابزار پروکسی شما (Charles، mitmproxy) عبور می‌کند. اما برای برخی وظایف، باید ترافیک را از طریق یک سرور پروکسی خارجی نیز هدایت کنید - به‌عنوان مثال، تا برنامه «منطقه» یا آدرس IP دیگری را «ببیند». در اینجا انتخاب نوع پروکسی به‌درستی مهم است.

پروکسی‌های مقیم

پروکسی‌های مقیم از آدرس‌های IP کاربران واقعی خانگی استفاده می‌کنند. برنامه‌های موبایل، به‌ویژه SDKهای تبلیغاتی و بازارها، به این آدرس‌ها به‌مراتب بیشتر از آدرس‌های مراکز داده اعتماد می‌کنند. اگر شما رفتار برنامه را بر اساس منطقه تحلیل می‌کنید - پروکسی‌های مقیم تصویر «پاک‌تری» را نزدیک به کاربر واقعی ارائه می‌دهند.

پروکسی‌های موبایل

پروکسی‌های موبایل از طریق شبکه‌های موبایل واقعی (3G/4G/5G) کار می‌کنند. این به‌ویژه در هنگام تست برنامه‌های موبایل مهم است: IP از شبکه موبایل بالاترین سطح اعتماد را در SDKهای تبلیغاتی Facebook، TikTok و سایر پلتفرم‌های تبلیغاتی دارد. اگر هدف شما تحلیل درخواست‌های تبلیغاتی برنامه یا تست رفتار SDK در محیط موبایل است، پروکسی‌های موبایل انتخاب بهینه هستند.

پروکسی‌های مراکز داده

پروکسی‌های مراکز داده برای وظایفی که سرعت مهم است و نه «طبیعی بودن» IP مناسب هستند: به‌عنوان مثال، برای پارس کردن انبوه API‌های باز یا تست عملکرد. برای تحلیل SDKهای تبلیغاتی و برنامه‌های محافظت‌شده، آنها کمتر مطلوب هستند، زیرا به‌راحتی توسط سیستم‌های ضد تقلب شناسایی می‌شوند.

نوع پروکسی اعتماد برنامه‌ها سرعت بهترین سناریو
مقیم بالا متوسط تحلیل بر اساس مناطق، بازارها
موبایل حداکثر متوسط SDKهای تبلیغاتی، Facebook، TikTok
مراکز داده پایین بالا پارس کردن API‌های باز، تست بار

سناریوهای عملی: آربیتراژ، تجارت الکترونیک، بازاریابی

بیایید وظایف خاصی را بررسی کنیم که به خاطر آنها بازاریابان و آربیتراژکنندگان به دور زدن SSL Pinning می‌پردازند.

سناریو 1: تحلیل SDK تبلیغاتی Facebook و TikTok

آربیتراژکنندگان که با Facebook Ads و TikTok Ads کار می‌کنند، اغلب می‌خواهند بفهمند که چه داده‌هایی SDK به سرور ارسال می‌کند: چه رویدادهایی ثبت می‌شوند، چگونه درخواست‌های تخصیص شکل می‌گیرند، چه پارامترهایی بر بهینه‌سازی کمپین‌ها تأثیر می‌گذارند. بدون دور زدن SSL Pinning این امکان‌پذیر نیست - هر دو SDK از Certificate Pinning استفاده می‌کنند.

پس از دور زدن از طریق Frida/Objection، می‌توان تمام رویدادهای SDK را در Charles مشاهده کرد: نصب‌ها، خریدها، ثبت‌نام‌ها - و اطمینان حاصل کرد که ردیابی به‌درستی تنظیم شده است. این به‌ویژه در هنگام تنظیم CAPI (Conversions API) و بررسی ددپلیکیشن رویدادها مهم است.

سناریو 2: نظارت بر قیمت‌ها در Wildberries و Ozon از طریق برنامه

برنامه‌های Wildberries و Ozon از SSL Pinning برای محافظت از API‌های خود استفاده می‌کنند. فروشندگانی که می‌خواهند قیمت‌های رقبای خود را از طریق برنامه موبایل (نه نسخه وب) نظارت کنند، با این حفاظت مواجه می‌شوند. پس از دور زدن SSL Pinning می‌توان ساختار درخواست‌های API را بررسی کرد و فهمید که کدام نقطه‌های پایانی برای دریافت داده‌های قیمت، موجودی و رتبه‌بندی کالاها استفاده می‌شوند.

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

سناریو 3: تست خلاقیت‌های تبلیغاتی از مناطق مختلف

بازاریابانی که تبلیغات را در Facebook Ads و TikTok Ads از مناطق مختلف تست می‌کنند، می‌خواهند ببینند که برنامه چگونه در هنگام اتصال از طریق IP از یک کشور خاص عمل می‌کند. ترکیب دور زدن SSL Pinning + پروکسی مقیم از منطقه مورد نظر این امکان را می‌دهد که ببینید چه محتوایی و چه قیمت‌هایی به کاربران این منطقه نمایش داده می‌شود.

سناریو 4: تست QA برنامه خود

اگر شما برنامه موبایل خود را توسعه می‌دهید یا با تیم توسعه کار می‌کنید، ضبط ترافیک با دور زدن SSL Pinning یک عمل استاندارد QA است. این امکان را می‌دهد که صحت درخواست‌ها را بررسی کنید، نشت داده‌ها را پیدا کنید و عملکرد تحلیل و SDKهای تبلیغاتی را در شرایط واقعی قبل از انتشار بررسی کنید.

سناریو 5: تحلیل رقبا در حوزه بازی‌ها و برنامه‌های موبایل

بازاریابان بازی‌های موبایل از ضبط ترافیک برای تحلیل درآمدزایی رقبا استفاده می‌کنند: چه پیشنهاداتی نمایش داده می‌شود، سیستم خریدهای درون‌برنامه‌ای چگونه کار می‌کند، چه شبکه‌های تبلیغاتی استفاده می‌شود. این به ساخت استراتژی‌های موثرتر UA (User Acquisition) و درآمدزایی کمک می‌کند.

چک‌لیست: تنظیمات را قبل از تست بررسی کنید

قبل از اینکه به ضبط ترافیک بپردازید، اطمینان حاصل کنید که همه چیز به‌درستی تنظیم شده است. اینجا چک‌لیست کامل است:

✅ چک‌لیست تنظیمات

  • ابزار پروکسی (Charles/mitmproxy) روی کامپیوتر راه‌اندازی شده و به پورت مورد نظر گوش می‌دهد
  • کامپیوتر و دستگاه در یک شبکه Wi-Fi هستند
  • آدرس IP کامپیوتر و پورت پروکسی در تنظیمات Wi-Fi دستگاه به‌درستی مشخص شده است
  • گواهی ریشه ابزار پروکسی روی دستگاه نصب شده است
  • در Android: گواهی به ذخیره‌سازی سیستم منتقل شده است (اگر روت وجود دارد)
  • در iOS: گواهی در بخش «اعتماد به گواهی‌ها» فعال شده است
  • سرور Frida روی دستگاه راه‌اندازی شده است (اگر از Frida/Objection استفاده می‌کنید)
  • نسخه Frida روی کامپیوتر با نسخه frida-server روی دستگاه مطابقت دارد
  • Objection به‌طور موفق به فرآیند برنامه متصل شده است
  • دستور android sslpinning disable بدون خطا اجرا شده است
  • در Charles/mitmproxy رکوردهایی در حین کار با برنامه ظاهر می‌شود
  • درخواست‌های HTTPS رمزگشایی می‌شوند (خطای SSL نشان نمی‌دهند)

مشکلات رایج و راه‌حل‌های آنها

مشکل دلیل راه‌حل
ترافیک در Charles ظاهر نمی‌شود IP/پورت پروکسی نادرست آدرس IP کامپیوتر و پورت را بررسی کنید
خطای SSL در Charles گواهی نصب نشده یا فعال نشده است گواهی را دوباره نصب و فعال کنید
Frida متصل نمی‌شود عدم تطابق نسخه‌های frida/frida-server نسخه‌ها را همگام‌سازی کنید
Objection Pinning را غیرفعال نمی‌کند کد بومی (C/C++) با Pinning از اسکریپت سفارشی Frida استفاده کنید
برنامه پس از دور زدن کرش می‌کند برنامه صحت را بررسی می‌کند همچنین تشخیص روت را از طریق Objection غیرفعال کنید

نتیجه‌گیری

SSL Pinning یک حفاظت جدی است، اما غیرقابل عبور نیست. برای بیشتر وظایف عملی بازاریاب یا آربیتراژکننده، ترکیب: شبیه‌ساز Android با روت + Frida/Objection + Charles Proxy کافی است. در iOS - SSL Kill Switch 2 در صورت وجود جیلبریک یا Proxyman بدون آن. نکته اصلی این است که زنجیره را به‌درستی تنظیم کنید: ابزار پروکسی روی کامپیوتر → ترافیک از طریق آن → دور زدن Pinning روی دستگاه.

به یاد داشته باشید که دور زدن SSL Pinning در برنامه‌های شخص ثالث فقط برای تحلیل و تحقیق شخصی مجاز است. پارسینگ خودکار و بازپخش درخواست‌های API شرایط استفاده از اکثر پلتفرم‌ها را نقض می‌کند.

اگر هدف شما تحلیل ترافیک برنامه‌های موبایل در مناطق مختلف یا تست رفتار SDKهای تبلیغاتی از کشورهای خاص است، به‌غیر از دور زدن SSL Pinning، به یک سرور پروکسی باکیفیت نیز نیاز دارید. برای کار با پلتفرم‌های تبلیغاتی (Facebook Ads، TikTok Ads) و بازارها، پیشنهاد می‌کنیم از پروکسی‌های موبایل استفاده کنید - آنها بالاترین سطح اعتماد را در سیستم‌های ضد تقلب دارند و اجازه می‌دهند محیط واقعی موبایل را به‌درستی شبیه‌سازی کنید.

```