Этот репозиторий содержит мои заметки и открытия при приложении для обратного инженеризации. Не стесняйтесь PR, если вы нашли что -то новое, или создавать клиентов с этой информацией (с кредитом OFC).
В настоящее время веб-версия теме только для чтения, поэтому об аутентификации или публикации мало что можно узнать. Он использует клиент Meta Relay GraphQL для общения с бэкэнд ( threads.net/api/graphql ), который, по -видимому, настроен на отказ произвольных запросов. Это оставляет нас ограничивающимися существующими запросами, найденными в источнике бренда:
Примечание при запросе бэкэнд GraphQL, обязательно установите пользовательский агент (кажется, что все работает здесь) и установите заголовок
x-ig-app-idна238260118697367.
DOC ID:
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=23996318473300828DOC ID:
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=6232751443445612DOC ID:
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=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(идентификатор сообщения)
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.
Мобильные приложения используют Meta's Bloks Framework (изначально созданная для 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"}} ' Threads использует ту же систему ID, что и Instagram. Лучший подход к преобразованию из имени пользователя в ID, кажется, запрашивает страницу пользователя в Instagram ( instagram.com/:username ) и вручную разрабатывает ответ HTML. Для других методов см. Этот вопрос Stackoverflow.