Repositori ini berisi catatan dan penemuan saya saat aplikasi utas rekayasa balik. Jangan ragu untuk PR jika Anda telah menemukan sesuatu yang baru, atau membangun klien dengan info ini (dengan kredit OFC).
Versi web utas saat ini hanya baca, jadi tidak banyak yang dapat dipelajari tentang otentikasi atau posting. Ini menggunakan klien Relay GraphQL Meta untuk berbicara dengan backend ( threads.net/api/graphql ), yang tampaknya dikonfigurasi untuk melarang kueri sewenang -wenang. Ini membuat kita terbatas pada pertanyaan yang ada yang ditemukan di sumber frontend:
CATATAN Saat menanyakan backend GraphQL, pastikan untuk mengatur agen pengguna (sepertinya apa pun berfungsi di sini) dan atur header
x-ig-app-idke238260118697367.
ID DOC:
23996318473300828Variabel:
userID(ID pengguna)
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=23996318473300828ID DOC:
6232751443445612Variabel:
userID(ID pengguna)
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=6232751443445612ID DOC:
6307072669391286Variabel:
userID(ID pengguna)
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=6307072669391286ID DOC:
5587632691339264Variabel:
postID(ID pos)
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=5587632691339264ID DOC:
9360915773983802Variabel:
mediaID(ID pos)
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=9360915773983802Peringatan titik akhir ini saat ini hanya berfungsi untuk akun tanpa 2FA diaktifkan.
Aplikasi seluler menggunakan Meta's Bloks Framework (awalnya dibangun untuk Instagram Lite) untuk otentikasi.
ID versi Bloks untuk utas adalah 00ba6fa565c3c707243ad976fa30a071a625f2a3d158d9412091176fe35027d8 . Blok juga mengharuskan Anda untuk menyediakan ID perangkat (bentuk ios-RANDOM | android-RANDOM , RANDOM menjadi set acak 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 ' Permintaan ini mengembalikan muatan JSON besar. Token Anda akan segera setelah Bearer IGT:2: , dan harus 160 karakter.
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"}} ' Thread menggunakan sistem ID yang sama yang digunakan oleh Instagram. Pendekatan terbaik untuk dikonversi dari nama pengguna ke ID tampaknya meminta halaman Instagram pengguna ( instagram.com/:username ) dan secara manual menguraikan respons HTML. Untuk metode lain, lihat pertanyaan stackoverflow ini.