이 저장소에는 리버스 엔지니어링 스레드 앱에서 내 메모와 검색이 포함되어 있습니다. 새로운 것을 찾았 거나이 정보를 사용하여 클라이언트 (Credit OFC)를 구축하는 경우 PR에 자유롭게하십시오.
스레드의 웹 버전은 현재 읽기 전용이므로 인증 또는 게시에 대해 많이 배울 수 없습니다. Meta의 릴레이 GraphQL 클라이언트를 사용하여 백엔드 ( threads.net/api/graphql )와 대화하는데, 이는 임의의 쿼리를 허용하지 않도록 구성된 것으로 보입니다. 이로 인해 Frontend의 출처에있는 기존 쿼리로 제한됩니다.
참고 GraphQL 백엔드를 쿼리 할 때는 사용자 에이전트를 설정하고 (여기에서 작동하는 것 같습니다)
x-ig-app-id헤더를238260118697367로 설정하십시오.
DOC ID :
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=6232751443445612DOC ID :
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(Post 's 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={"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 활성화없이 계정에 대해서만 작동합니다.
모바일 앱은 인증을 위해 Meta의 Bloks 프레임 워크 (원래 Instagram Lite 용으로 구축)를 사용합니다.
스레드의 Bloks 버전 지정 ID는 00ba6fa565c3c707243ad976fa30a071a625f2a3d158d9412091176fe35027d8 입니다. Bloks는 또한 장치 ID를 제공해야합니다 ( 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 페이로드를 반환합니다. 당신의 토큰은 String 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 시스템을 사용합니다. 사용자 이름에서 ID로 변환하는 가장 좋은 방법은 사용자의 Instagram 페이지 ( instagram.com/:username )를 요청하고 응답 HTML을 수동으로 구문 분석하는 것으로 보입니다. 다른 방법은이 stackoverflow 질문을 참조하십시오.