يحتوي هذا المستودع على ملاحظاتي واكتشاتي أثناء تطبيق خيوط الهندسة العكسية. لا تتردد في العلاقات العامة إذا كنت قد وجدت شيئًا جديدًا ، أو لبناء عملاء مع هذه المعلومات (مع الائتمان OFC).
إصدار الويب من Threads هو القراءة حاليًا فقط ، لذلك لا يمكن تعلم الكثير عن المصادقة أو النشر. يستخدم عميل Meta Relay GraphQL للتحدث إلى الواجهة الخلفية ( threads.net/api/graphql ) ، والذي يبدو أنه تم تكوينه لعدم السماح باستعلامات تعسفية. هذا يجعلنا يقتصرون على الاستعلامات الموجودة الموجودة في مصدر الواجهة الأمامية:
ملاحظة عند الاستعلام عن الواجهة الخلفية لـ GraphQL ، تأكد من تعيين وكيل المستخدم (يبدو أن أي شيء يعمل هنا) وضبط رأس
x-ig-app-idعلى238260118697367.
معرف DOC:
23996318473300828المتغيرات:
userID(معرف المستخدم)
curl --request POST
--url https://www.threads.net/api/graphql
--header ' user-agent: threads-client '
--header ' x-ig-app-id: 238260118697367 '
--header ' content-type: application/x-www-form-urlencoded '
--data ' variables={"userID":"314216"} '
--data doc_id=23996318473300828معرف DOC:
6232751443445612المتغيرات:
userID(معرف المستخدم)
curl --request POST
--url https://www.threads.net/api/graphql
--header ' user-agent: threads-client '
--header ' x-ig-app-id: 238260118697367 '
--header ' content-type: application/x-www-form-urlencoded '
--data ' variables={"userID":"314216"} '
--data doc_id=6232751443445612معرف DOC:
6307072669391286المتغيرات:
userID(معرف المستخدم)
curl --request POST
--url https://www.threads.net/api/graphql
--header ' user-agent: threads-client '
--header ' x-ig-app-id: 238260118697367 '
--header ' content-type: application/x-www-form-urlencoded '
--data ' variables={"userID":"314216"} '
--data doc_id=6307072669391286معرف DOC:
5587632691339264المتغيرات:
postID(معرف المنشور)
curl --request POST
--url https://www.threads.net/api/graphql
--header ' user-agent: threads-client '
--header ' x-ig-app-id: 238260118697367 '
--header ' content-type: application/x-www-form-urlencoded '
--data ' variables={"postID":"3138977881796614961"} '
--data doc_id=5587632691339264معرف DOC:
9360915773983802المتغيرات:
mediaID(معرف المنشور)
curl --request POST
--url https://www.threads.net/api/graphql
--header ' user-agent: threads-client '
--header ' x-ig-app-id: 238260118697367 '
--header ' content-type: application/x-www-form-urlencoded '
--data ' variables={"mediaID":"3138977881796614961"} '
--data doc_id=9360915773983802تحذير نقطة النهاية هذه تعمل حاليًا فقط على الحسابات دون تمكين 2FA.
تستخدم تطبيقات Mobile Framework Meta's BLOKS (تم تصميمها أصلاً لـ Instagram Lite) للمصادقة.
معرف إصدار BLOKS للموضوعات هو 00ba6fa565c3c707243ad976fa30a071a625f2a3d158d9412091176fe35027d8 . يتطلب BLOKS أيضًا توفير معرف الجهاز (من شكل ios-RANDOM | android-RANDOM ، RANDOM كونه مجموعة عشوائية من 13 Chars).
curl --request POST
--url ' https://i.instagram.com/api/v1/bloks/apps/com.bloks.www.bloks.caa.login.async.send_login_request/ '
--header ' user-agent: Barcelona 289.0.0.77.109 Android '
--header ' sec-fetch-site: same-origin '
--header ' content-type: application/x-www-form-urlencoded; charset=UTF-8 '
--data ' params={"client_input_params":{"password":"$PASSWORD","contact_point":"$USERNAME","device_id":"$DEVICE_ID"},"server_params":{"credential_type":"password","device_id":"$DEVICE_ID"}} '
--data ' bloks_versioning_id=00ba6fa565c3c707243ad976fa30a071a625f2a3d158d9412091176fe35027d8 ' يعيد هذا الطلب حمولة JSON كبيرة. سيكون الرمز المميز الخاص بك مباشرة بعد Bearer IGT:2: ، ويجب أن يكون طوله 160 حرفًا.
curl --request POST
--url ' https://i.instagram.com/api/v1/media/configure_text_only_post/ '
--header ' content-type: application/x-www-form-urlencoded; charset=UTF-8 '
--header ' user-agent: Barcelona 289.0.0.77.109 Android '
--header ' authorization: Bearer IGT:2:$TOKEN '
--header ' sec-fetch-site: same-origin '
--data ' signed_body=SIGNATURE.{"publish_mode":"text_post","text_post_app_info":"{"reply_control":0}","timezone_offset":"0","source_type":"4","_uid":"$USER_ID","device_id":"$DEVICE_ID","caption":"$POST_TEXT","device":{"manufacturer":"OnePlus","model":"ONEPLUS+A3003","android_version":26,"android_release":"8.1.0"}} ' يستخدم المواضيع نفس نظام المعرف المستخدم بواسطة Instagram. يبدو أن أفضل طريقة للتحويل من اسم المستخدم إلى ID تطلب صفحة Instagram الخاصة بالمستخدم ( instagram.com/:username ) وتوحل الاستجابة HTML يدويًا. للحصول على طرق أخرى ، راجع سؤال stackoverflow هذا.