抓包验证状态 / 实现清单
依据:module-apis-421.md(JADX 静态)+ 源仓库 frida/threads/.../apis/(Burp 实测,更权威,逐端点字段)
用途:逐端点标注是否抓包验证过,作为 SDK 实现的进度清单与 TODO 依据。
维护:某端点抓包核对通过后,把状态从 ⚠️/❓ 升级为 ✅,并删除代码里对应的 TODO(抓包核对)。
真实 gRPC 基线(2026-07-24):Python grpc.aio → Go gRPC server → Threads 真实 API 已覆盖当时定义的
14 个 RPC,共记录 40 次 gRPC 调用和 16 次上游 HTTP 往返。2026-07-25 新增图片上传/单图发布 2 个 RPC
及真实黑盒测试,仍待配置图片夹具执行,不计入上述已通过基线。2026-07-30 新增回复发帖(复用
CreateTextPost + reply_id)、点赞/取消点赞与关注/取关共 4 个 RPC,真机黑盒测试已就位,
同样待授权写操作后执行。
2026-07-30 新增抓包批次(同机 Burp 导出,含真实凭据,不入库)
| 抓包文件 |
覆盖动作 |
解锁内容 |
登录+ 单图发帖.xml |
冷启动 → 2FA 登录 → 单图发帖 |
单图链路金样本、主时间线请求体、通知、关注列表 |
登录+ 发帖(单图)、点赞、评论 帖子.xml |
同上 + 点赞 + 评论 |
media/{id}/like/、回复发帖(reply_id)、replies_streaming/ |
新增关注取关.xml |
同上 + 关注 + 取关 |
friendships/create/、friendships/destroy/、accounts_recs/ 参数、profile/reposts/ |
由这批抓包纠正的既有实现偏差(发帖全链路的请求指纹,均已修复并由
internal/client/posts_configure_golden_test.go 逐字节回归;关系状态模型的字段缺口见 §9):
| 项 |
原实现 |
真机 |
text_post_app_info / location / caption_add_on |
内联 JSON 对象 |
转义 JSON 字符串 |
device / extra |
内联对象 |
内联对象(一致) |
| 嵌套对象字段顺序 |
json.Marshal(map) 字母序 |
客户端插入序(已改用 transport.Body) |
text_post_app_info 字段集 |
缺 4 键 |
补 self_thread_context_id/is_ghost_post/is_dm_me_post/is_reply_approval_enabled |
| 多发字段 |
app_attribution_android_namespace、from_drafts |
真机不发送,已删除 |
| 文字帖字段集 |
缺 2 键 |
补 bottom_camera_dial_selected/hide_from_profile_grid |
| rupload 头名 |
X-Fb-Photo-Waterfall-Id |
X_fb_photo_waterfall_id(下划线) |
Friendly-Name |
IgApi: media/{media_id}/delete/ 模板 |
完整实际 path(含具体 id 与 query) |
实现进度(Go SDK 与 gRPC)
下表同时记录 Go SDK 能力和 gRPC RPC。当前共 7 个公开 gRPC 服务、19 个 RPC;insights /
mentions 缺真实 GraphQL doc_id,只保留为研究域,不进入公开 Proto/SDK。
| 模块 |
已实现 SDK 方法 / gRPC RPC |
端点 |
依赖签名 |
| profile |
GetUserInfo / ListProfileThreads / EditProfile |
users/{uid}/info/、text_feed/{uid}/profile/、accounts/edit_profile/ |
否(edit_profile 为纯 form;主页帖子流已强类型化) |
| friendships |
GetFriendshipStatus / FollowUser / UnfollowUser |
friendships/show/{uid}/、friendships/create/{uid}/、friendships/destroy/{uid}/ |
读否;写是 |
| auth/login |
Login / GetCurrentUser(含 edit=true) |
CAA/Bloks 登录链 / accounts/current_user/ |
登录需要 signed_body + 密码 RSA 加密 + 默认硬件 attestation 门禁 |
| feed |
ListRecommendedUsers |
text_feed/recommended_users/ |
否 |
| replies |
ListProfileReplies |
text_feed/{uid}/profile/replies/ |
否 |
| search |
KeywordSearch / ValidateTag |
fbsearch/text_app/keyword/search/、text_feed/tags_validate/ |
否 |
| posts |
CheckOffensiveText / CreateTextPost(含回复)/ UploadImage / CreateImagePost / DeletePost / LikeMedia / UnlikeMedia |
warning/...、media/configure_text_only_post/、rupload_igphoto/、media/configure_text_post_app_feed/、media/{id}/delete/、media/{id}/like/、media/{id}/unlike/ |
configure 与 like 是;rupload 为原始二进制 |
列表端点 feed/replies/search 返回结构化 ListPage(items/paging/metadata),调用方不再解析 JSON 字符串。
profile-threads 已按动态抓包的 threads[].thread_items[].post 升级为业务强类型。
图例
| 状态 |
含义 |
实现要求 |
| ✅ 已抓包 |
报告标「已确认」,抓包命中 |
可直接实现,无需 TODO |
| ⚠️ 高概率 |
JADX 字面量,未抓包核对 |
实现 + TODO(抓包核对): 置信度=高概率 |
| ❓ 推测 |
仅 path/调用链/加密常量推断 |
实现 + TODO(抓包核对): 置信度=推测,优先补抓包 |
| ⛔ 缺源 |
报告未覆盖,业务需要 |
禁止臆造 path,TODO(缺源): 需 Frida hook/抓包补 |
0. 基建(transport 层)
| 项 |
状态 |
备注 |
Host:i.instagram.com/api/v1/、/graphql/query、/graphql_www |
✅ 已抓包 |
|
头:Authorization: Bearer IGT:2:... |
✅ 已抓包 |
gRPC 业务调用从完整 AccountState.session 取得;Go SDK 登录成功后生成并返回同类 session |
账号级出口:LoginRequest.proxy / AccountState.proxy |
✅ 已实现,待真实代理验收 |
Python/Proto Proxy → Go ProxyConfig;支持 HTTP(S)/SOCKS5/SOCKS5H、IP 白名单与认证代理;同账号复用、跨账号隔离连接池 |
头:X-Ig-App-Id: 3419628305025917 |
✅ 已抓包 |
|
头:User-Agent: Barcelona 421.0.0.50.67 ... |
✅ 已抓包 |
|
头:X-Fb-Friendly-Name |
✅ 已抓包 |
|
signed_body 签名算法 |
✅ 已确认 |
本版本无 HMAC:signed_body=SIGNATURE.<json> 即线上格式,服务端不校验签名段。见 signed-body-421.md。嵌套对象分两类,逐字段以抓包为准:text_post_app_info/location/caption_add_on 是转义 JSON 字符串(Body.Set),device/extra 是内联对象(Body.SetRaw) |
1. auth 模块
| 端点 |
协议 |
状态 |
备注 |
完整 AccountState 认证 |
— |
✅ 策略已定 |
业务 RPC 显式携带完整状态;Go transport 从 session 生成 Authorization,公开 SDK 不提供 token/设备拆参 |
accounts/current_user/(?edit=true) |
REST |
✅ 已抓包 |
编辑资料页读取,字段更全(bio_links/封面图/is_private);见 apis/accounts/编辑主页.md |
| CAA/Bloks 登录状态机(Go SDK + gRPC) |
REST/Bloks |
⚠️ gRPC 已实现,真实验收待执行 |
AuthService.Login 默认要求硬件 signer;无证明软件路径必须显式授权,返回结果永不把即时 whoami 等价为长期稳定 |
2. profile 模块
| 端点 |
协议 |
状态 |
备注 |
users/{user_id}/info/ |
REST |
✅ 已抓包 |
Friendly-Name user_info_by_id |
text_feed/{user_id}/profile/ |
REST |
✅ 已抓包 |
主页帖列表 |
text_feed/{user_id}/profile/media/ |
REST |
✅ 已抓包 |
|
accounts/edit_profile/ |
REST |
✅ 已抓包 |
纯 form,不走 signed_body;整表回传;已支持 username/显示名/简介/隐私/链接及标题;头像、封面为独立缺源端点,location 不是该端点字段 |
accounts/set_biography/ |
REST |
⚠️ 高概率 |
|
accounts/change_profile_picture/(头像/封面) |
REST |
⛔ 缺源 |
待抓包 |
GQL xdt_text_app_edit_display_name / create_or_update_user_bio_link |
GQL |
⚠️ 高概率 |
|
GQL ProfileCompletionPercentage |
GQL |
✅ 抓包出现 |
|
users/search/、check_username/、blocked_list/ |
REST |
⚠️ 高概率 |
|
3. posts 模块(发帖 / 媒体)
| 端点 |
协议 |
状态 |
备注 |
media/configure_text_only_post/ |
REST |
✅ 已抓包 |
纯文字贴主路径 |
media/configure_text_only_post/ + text_post_app_info.reply_id |
REST |
✅ 已抓包 |
回复/评论:同端点不同形态;entry_point=permalink_inline_composer、container_module=ig_text_post_permalink、source_of_action=PermalinkInlineComposer,带 ranking_info_token,不带 camera_session_id/creation_logger_session_id/is_spoiler_media/self_thread_context_id(登录+ 发帖(单图)、点赞、评论 帖子.xml item146) |
media/{media_id}/like/ |
REST |
✅ 已抓包 |
点赞;media_id 为 {pk}_{author_uid} 复合 id;14 个 signed_body 字段 + signed_body 之外一个明文 d=0;响应仅 {"status":"ok"}(同上 item140) |
media/{media_id}/unlike/ |
REST |
❓ 推测 |
取消点赞;与 like 对称推导,本轮抓包未覆盖。已实现并标 TODO,唯一真机判据是 test_posts_like_and_unlike_own_post |
/rupload_igphoto/{name} |
REST |
✅ 已抓包 |
原始图片二进制上传,返回 upload_id |
media/configure_text_post_app_feed/ |
REST |
✅ 已抓包 |
单图帖,关联 rupload 的 upload_id |
/rupload_igvideo/{name} |
REST |
🚫 平台不支持 |
Threads 客户端不提供发布视频帖的能力,该路径是 IG 共用残留。不是「缺抓包」,不要再列为待办 |
media/configure_text_post_app_sidecar/ |
REST |
⚠️ 高概率 |
轮播 |
media/upload_finish/ |
REST |
⚠️ 高概率 |
上传收尾 |
warning/check_offensive_multi_text/ |
REST |
✅ 请求已抓包,响应不可用 |
请求字段与真实 App 一致;真实 App 抓包及 2026-07-24 线上回归均返回 HTTP 404,gRPC 按真实错误路径验收 |
warning/check_offensive_text/ |
REST |
⚠️ 高概率 |
单条 |
发帖 body 完整字段(caption/text_post_app_info/publish_mode/audience…) |
— |
✅ 已抓包 |
单图帖与文字回复的完整 body 已逐字节固化为 golden test(见上文「由这批抓包纠正的既有实现偏差」);带位置/投票的样本另见 burp/发帖-删除-位置-投票.xml |
4. replies 模块
| 端点 |
协议 |
状态 |
备注 |
text_feed/{user_id}/profile/replies/ |
REST |
✅ 已抓包 |
回复 tab |
text_feed/{post_pk}/replies_streaming/ |
REST |
✅ 已抓包 |
未实现。单帖回复流;query filter_type=all/sort_order=top/is_app_start/deeplink_*;响应是多段流式 JSON(首段只含目标帖,后续段带 reply_threads),字段 target_post_id/containing_thread/reply_threads[]/paging_tokens/sibling_threads/related_threads。适合设计为 gRPC server-streaming |
GQL xdt_text_app_approve_reply / ignore_reply / bulk_*_pending_replies |
GQL |
⚠️ 高概率 |
|
text_feed/is_private_replies_user_minor/ |
REST |
✅ 已抓包 |
响应 is_eligible_youth_messaging |
5. insights 研究域(不属于公共 API)
| 端点 |
协议 |
状态 |
备注 |
GQL TextAppAccountInsightsQuery |
GQL |
✅ 抓包出现 |
账号洞察 |
GQL profile_completion_percentage |
GQL |
✅ 抓包出现 |
|
6. search 模块
| 端点 |
协议 |
状态 |
备注 |
fbsearch/text_app/keyword/search/ |
REST |
⚠️ 高概率 |
关键词搜索 |
fbsearch/ig_typeahead/、keyword_typeahead/、typeahead_stream/ |
REST |
⚠️ 高概率 |
参数见报告 §9.2 |
text_feed/tags_validate/ |
REST |
✅ 已抓包 |
发帖选主题前置校验,响应 is_valid/is_sensitive |
text_feed/tags_search/ |
REST |
⚠️ 高概率 |
|
GQL xdt_text_app_keyword_search_results |
GQL |
⚠️ 高概率 |
|
GQL TagTypeaheadNullState |
GQL |
✅ 抓包出现 |
|
7. mentions 研究域(不属于公共 API)
| 端点 |
协议 |
状态 |
备注 |
GQL xdt_text_app_mention_suggestions |
GQL |
❓ 推测 |
仅字段名 |
BcnMentionNullStateApi 对应端点 |
GQL |
❓ 推测 |
|
8. feed 模块(时间线 / 推荐流)
| 端点 |
协议 |
状态 |
备注 |
feed/text_post_app_timeline/ |
REST |
✅ 已抓包 |
未实现。Threads 主时间线,请求体全部明文(此前误判为加密)。冷启动 10 字段:client_startup_type=cold/reason=cold_start_fetch/pagination_source=text_post_feed_threads/is_pull_to_refresh=0/_uuid/startup_origin=normal/priming_cache_setting/is_dark_mode/session_id/bloks_versioning_id;翻页改 reason=pagination + 不透明 max_id;feed_view_info/client_in_session_features 是遥测,冷启动不带。响应 feed_items[].text_post_app_thread.thread_items[].post,与主页帖子流同构。也是点赞 logging_info_token / 回复 ranking_info_token 的来源 |
text_feed/recommended_users/ |
REST |
✅ 路径已抓包 |
参数 ⚠️ 高概率(报告 §5.1);响应 users[]/paging_token/has_more |
text_feed/accounts_recs/ |
REST |
✅ 已抓包 |
未实现。参数 media_id/target_user_id/follow_source=text_app_permalink_follow/is_app_start;响应 users/is_recommend_account/in_feed_su_tracking_token/in_feed_su_title/user_tstf_groups |
feed/timeline/、timeline_stream/ |
REST |
⚠️ 高概率 |
IG 共用残留 |
9. friendships 模块(关系 / 关注)
| 端点 |
协议 |
状态 |
备注 |
friendships/show/{user_id}/ |
REST |
✅ 已抓包 |
关系状态。真机响应(item183)确认 17 个字段中的 13 个;模型此前缺 is_bestie/is_restricted/is_feed_favorite/text_post_app_pre_following,已补齐。JADX 来源的 subscribed/is_viewer_unconnected/should_show_profile_upsell/is_banner_profile_upsell/reachability_status 真机未返回,保留并标 TODO |
friendships/create/{user_id}/ |
REST |
✅ 已抓包 |
已实现。signed_body 12 字段(顺序见 golden test):include_follow_friction_check=1/delivery_class=organic/media_id/ranking_info_token/user_id/radio_type/_uid/device_id/_uuid/media_id_attribution/nav_chain/container_module;响应 friendship_status+previous_following+error(item173) |
friendships/destroy/{user_id}/ |
REST |
✅ 已抓包 |
已实现。同 create 但不发 delivery_class 与 device_id,previous_following 返回 null(item188)。无 media_id 归因的形态(直接按 user_id 操作)真机未覆盖,已标 TODO |
friendships/following/ |
REST |
✅ 已抓包 |
未实现。参数 text_post_app_onboarding_setting=onboarded_only;响应 users/big_list/page_size/has_more/follow_ranking_token/should_limit_list_of_followers |
friendships/show_many/ |
REST |
⚠️ 高概率 |
批量关系 |
friendships/create_many/async/ |
REST |
⚠️ 高概率 |
异步批量关注 |
friendships/followers_you_follow_back/ |
REST |
⚠️ 高概率 |
|
friendships/pending_follow_requests_count/ |
REST |
⚠️ 高概率 |
|
friendships/mute_* / unmute_* |
REST |
⚠️ 高概率 |
|
text_feed/follow_many/ / follow_many_blocking/ |
REST |
⚠️ 高概率 |
参数见报告 §6.2 |
text_feed/approve_all_follow_requests/ / remove_all_prefollows/ |
REST |
⚠️ 高概率 |
|
GQL xdt_text_app_unfollow_many_blocking |
GQL |
⚠️ 高概率 |
含加密键 |
附:暂不立模块的额外域(待评估)
| 域 |
代表端点 |
状态 |
notifications |
text_feed/text_app_notifications/ |
✅ 已抓包。参数 mark_as_seen/timezone_offset/timezone_name/is_app_start;响应 new_stories[]/old_stories/priority_stories/next_max_id/last_checked/continuation_token/counts/is_last_page,story 字段 story_type/type/args/pk/ndid/notif_name/trace_id/counts |
notifications |
notifications/badge/ |
✅ 已抓包(报告未覆盖的新端点)。signed_body user_ids/device_id/_uuid/phone_id/trigger=BARCELONA/is_onboarded_in_current_session/include_direct_map;响应 badge_payload |
notifications |
text_feed/text_app_inbox_seen/ |
⚠️ 高概率;本轮未触发 |
profile |
text_feed/{uid}/profile/reposts/ |
✅ 已抓包(新端点)。转发 tab;响应 medias/threads/next_max_id |
auth |
accounts/fetch_onetap/ |
✅ 已抓包(新端点)。登录后换取 login_nonce,用于 one-tap 复登 |
direct(私信) |
direct_v2/*、text_feed/ranked_share_thread_message_candidates_suggestions/ |
⚠️/❓;后者路径与响应 entities 已抓包,参数 count_per_page |
GraphQL 明文字段全集约 122 条见 api-paths-extract.json,未逐条列入本表;实现到相关功能时按需补。