ที่เก็บนี้มีบันทึกและการค้นพบของฉันในขณะที่แอพพลิเคชั่นย้อนกลับของวิศวกรรม อย่าลังเลที่จะประชาสัมพันธ์หากคุณพบสิ่งใหม่หรือสร้างลูกค้าด้วยข้อมูลนี้ (พร้อมเครดิต OFC)
เธรดเวอร์ชันเว็บเป็นแบบอ่านอย่างเดียวดังนั้นจึงไม่สามารถเรียนรู้ได้มากเกี่ยวกับการตรวจสอบหรือโพสต์ มันใช้ไคลเอนต์รีเลย์ของเมตารีเลย์ของเมตาเพื่อพูดคุยกับแบ็กเอนด์ ( threads.net/api/graphql ) ซึ่งดูเหมือนว่าจะถูกกำหนดค่าให้ไม่อนุญาตการสืบค้นโดยพลการ สิ่งนี้ทำให้เรา จำกัด อยู่ที่คำค้นหาที่มีอยู่ในแหล่งข้อมูลส่วนหน้า:
หมายเหตุ เมื่อสอบถามแบ็กเอนด์ GraphQL ตรวจสอบให้แน่ใจว่าได้ตั้งค่าตัวแทนผู้ใช้ (ดูเหมือนว่าทุกอย่างทำงานที่นี่) และตั้งส่วนหัว
x-ig-app-idเป็น238260118697367
เอกสารเอกสาร:
23996318473300828ตัวแปร:
userID(ID ของผู้ใช้)
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=23996318473300828Doc ID:
6232751443445612ตัวแปร:
userID(ID ของผู้ใช้)
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เอกสารเอกสาร:
6307072669391286ตัวแปร:
userID(ID ของผู้ใช้)
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=6307072669391286DOC ID:
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=5587632691339264DOC ID:
9360915773983802ตัวแปร:
mediaID(ID ของโพสต์)
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
แอพมือถือใช้เฟรมเวิร์ก Bloks ของ Meta (เดิมสร้างขึ้นสำหรับ Instagram Lite) สำหรับการตรวจสอบสิทธิ์
ID เวอร์ชัน bloks สำหรับเธรดคือ 00ba6fa565c3c707243ad976fa30a071a625f2a3d158d9412091176fe35027d8 Bloks ยังต้องการให้คุณให้รหัสอุปกรณ์ (ของรูปร่าง ios-RANDOM | android-RANDOM RANDOM เป็นชุดสุ่มของ 13 ตัวอักษร)
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"}} ' เธรดใช้ระบบ ID เดียวกับที่ใช้โดย Instagram วิธีที่ดีที่สุดในการแปลงจากชื่อผู้ใช้เป็น ID ดูเหมือนว่าจะขอหน้า Instagram ของผู้ใช้ ( instagram.com/:username ) และแยกวิเคราะห์การตอบกลับ HTML ด้วยตนเอง สำหรับวิธีการอื่น ๆ ดูคำถาม Stackoverflow นี้