دیباگ مینی‌اپ تلگرام گوشی اندروید روی کامپیوتر (#همستر رو بخورید!)

مینی وب‌اپ #همستر رو بخورید!😉

به این ویدیو نگاه کنید. این دقیقاً خود گوشی منه، یعنی هر عملی اینجا یا که تو گوشی انجام میدم، همه رکوئست‌هایی که از تو گوشی رد میشه رو میتونم ببینم.

آموزش اینکار رو در ادامه عرض میکنم...

https://youtu.be/2c5nahgKdzs

طرح مسئله

تا اینجا گفته بودم که میتونیم مینی‌اپ رو روی کامپیوتر مستقل بالا بیاریم و درخواست‌ها رو ببینیم و شبیه‌سازی کنیم ولی ریسکی به همراه داشت. چون درمورد #همستر گفتیم بر اساس فینگرپرینت سخت‌افزار یک authToken تولید میشه که توی همه درخواست‌ها هست و به سادگی قابل تشخیص و شناسایی هست اگرکه از توی گوشی ارسال نشن پس خطر بن هست. همچنین هدر کامل رو نداریم.

راستش اول میخواستم درخواست‌های روی گوشی رو اسنیف کنم ولی یه سری مشکلات خوردم که این روش خیلی جالب رو دیدم که براتون توضیح میدم. یه موضوع کلی هست که همه جا بدرد میخوره. (البته بعداً مشکل اسنیف هم حل شد ولی چون خیلی پیچیدگی داره ترجیح میدم فعلاً اینو بگم)

کاری که میکنیم دیباگ مینی‌اپ هست که در واقع یک وب‌ویو محسوب میشه. خلاصه کار هم اینجا نوشته:

https://core.telegram.org/bots/webapps#debug-mode-for-mini-apps

مرحله‌ی اول: فعال‌سازی دیباگ وب‌ویو تلگرام

در تنظیمات تلگرام گوشی، برید پایین جایی که ورژن برنامه رو نوشته دو بار تاچ کنید و انگشتتون رو نگه دارید. پنجره‌ای باز میشه که گزینه Enable WebView debug رو بزنید.

بیشتر:

https://docs.ton.org/develop/dapps/telegram-apps/testing-apps#debug-mode-for-mini-apps

مرحله‌ی دوم: فعال‌سازی دولوپر آپشن اندروید

توی گوشی اندروید باید Developer options رو فعال کنیم.
به مسیر Settings > About phone > Software information > Build number میرید.
این برای گوشی منه، برای شما ممکنه فرق داشته باشه، اینجا از روی مدل گوشیتون چک کنید:

https://developer.android.com/studio/debug/dev-options

حالا روی گزینه Build Number هفت بار پشت سرهم ضربه بزنید تا پیام Developer mode has been enable ظاهر بشه.
منوی جدید Developer options باید ظاهر شده باشه. واردش بشید. USB Debugging رو فعال کنید.

مرحله‌ی سوم: دسترسی به دِوتولز روی کامپیوتر

روی کامپیوتر گوگل کروم رو باز کنید و وارد این آدرس بشید:

chrome://inspect#devices

مطمئن بشید گزینه Discover USB devices تیک خورده.
گوشی رو با کابل USB به کامپیوتر متصل کنید و پیامی که میاد رو تائید کنید.
اگر همه چیز درست باشه، توی صفحه کروم باز شده، باید مدل گوشیتون ظاهر بشه.
بیشتر:

https://developer.chrome.com/docs/devtools/remote-debugging/#discover

و وقتی مینی‌اپ رو باز میکنید (مثلاً همستر توی گوشی) یه چنین چیزی ظاهر میشه:
WebView in org.telegram.messenger

و گزینه inspect رو میزنید و Dev Tools باز میشه و ضمن اینکه عکس گوشی به شکل تعاملی ظاهر میشه، در تب Network رکوئست‌ها رو دقیقاً منطبق با چیزی از توی گوشی ارسال میشه با همون هدرها و توکن میتونید ببینید و بردارید.

و کلاً بریک‌پوینت بگذارید و دیباگ کنید مینی‌اپ رو. حتی local storage گوشی هم میتونید ببینید.

دقت کنید که با اینکه دارید روی تصویر گوشی توی کامپیوتر کلیک میکنید و درخواست‌ها رو تو کامپیوتر میبینید، اما از توی گوشی دارن رد میشن و شبیه به اینه شما ریموت به گوشیتون وصل شدید و اتفاقات داخل گوشی میافته.

حالا همه اتفاقات توی گوشی رو دقیق میتونید رصد کنید. مثلاً هدر رو، یا برای نمونه X-Requested-With: org.telegram.messenger رو در هدر میبینید که شاید هیچوقت بهش فکر نمیکردید تا در روبات‌های روی کامپیوترتون اضافه کنید، که اینجا کشف شد. یا User-Agent گوشی و از همه مهمتر توکن bearer که بر اساس مشخصات سخت‌افزار گوشی توی خود گوشی تولید شده و چیزهای دیگه که میبینید و میتونید عیناً بردارید و روی روباتی که روی پلتفرم دیگه نوشتید ببرید و استفاده کنید.

نکته: اگر خطای 404 گرفتید یا ارتباط مرتب قطع میشد مشکل از فیلترشکن هست. روی گوشی و کامپیوتر باید فیلترشکن روشن باشه.

رفع مسئولیت

لازمه به ذکره که تمام اینها در جهت کمتر کردن ریسک دتکت روبات هست و با اینکه در این روش خیلی مسائل پوشش داده میشه و رفتاری بسیار نزدیک به واقعیت داره اما همچنان هیچ راهی قطعی نیست. بنابراین با مسئولیت خودتون میتونید انجام بدید.


همین مطلب رو روی توئیتر هم نوشتم که اگر سوالی داشتید اونجا بیشتر فعالم:

https://twitter.com/NabiKAZ/status/1806162794506531157

موفق باشید.
نبی