Android v391.0.0.42.82 能力索引¶
本文档对应一手协议目录:
索引只记录 SDK 侧实现状态与暴露边界,不复制一手抓包中的 cookie、session、Authorization、账号凭据或 TOTP secret。
状态说明¶
| 状态 | 含义 |
|---|---|
| 已实现 | 请求构造、关键响应解析或登录闭环行为已进入 SDK,并有测试或流程覆盖。 |
| 部分实现 | 低层 API 或 helper 已接入,但业务响应模型、端到端闭环或部分外部输入仍由调用方承担。 |
| 内部使用 | 作为登录/init 等流程的一部分自动调用,不作为独立用户 API 暴露。 |
| Rust-only | 仅 Rust core 暴露;Python/CLI 暂不绑定。 |
入口总览¶
| 能力 | Rust core | Python | CLI |
|---|---|---|---|
| v391 登录 / 2FA | igapi_core::android::v391::Client |
igapi.android.v391.Client |
--android-version 391 login |
| v391 attestation challenge / provider | client.attestation() / with_attestation_provider(...) / provider 预检方法 |
暂不暴露 | v391-provider-check 本地诊断;challenge 仍库 API only |
| v391 注册 / onboarding / home 稳定摘要 | RegistrationFlow / OnboardingFlow / typed *_response |
稳定 typed wrapper 已暴露 | v391-home-smoke 仅诊断;注册/onboarding 库 API only |
| v391 init / GraphQL / telemetry raw API | client.init() / graphql() / telemetry() |
暂不暴露 | 库 API only |
端点索引¶
| 分类 | 原始文档 | SDK 状态 | 暴露边界 |
|---|---|---|---|
config |
mobileconfig.md |
已实现 | 内部使用:v391 登录第 1 步,表单构造在 android::versions::v391::login。 |
attestation |
create_android_keystore.md |
已实现 | Rust core client.attestation().create_keystore_challenge_nonce(...) / create_keystore_attest_header(...);登录与注册 flow 内部复用;硬件签名由 provider 提供。 |
attestation |
create_android_playintegrity.md |
已实现 | Rust-only challenge 请求;Google integrity_token 只由调用方或外部 provider 生成,默认 provider 返回 token_missing。 |
login |
login_process_client_data_and_redirect.md |
已实现 | 内部使用:v391 登录流程参数构造在 android::versions::v391::login。 |
login |
phone_number_prefill.md |
已实现 | 内部使用:v391 登录流程参数构造在 android::versions::v391::login。 |
login |
login_oauth_token_fetch.md |
已实现 | 内部使用:v391 登录流程参数构造在 android::versions::v391::login。 |
login |
login_send_login_request.md |
已实现 | 内部使用:加密密码与 X-IG-Attest-Params 接入 v391 登录闭环。 |
misc |
dual_tokens.md |
已实现 | 内部使用:登录成功后 best-effort 调用,helper 在 android::versions::v391::init。 |
2fa |
two_step_verification_entrypoint.md |
已实现 | Rust/Python/CLI 通过 complete_two_factor() 间接使用。 |
2fa |
verify_code.md |
已实现 | Rust/Python/CLI 通过 complete_two_factor() 间接使用;错误码保留上下文允许重试。 |
2fa |
caa_notif_status.md |
部分实现 | Rust-only client.two_factor().caa_notif_status(...);AAC 等不透明字段由调用方提供。 |
2fa |
has_been_allowed.md |
部分实现 | Rust-only client.two_factor().has_been_allowed(...);2FA context 由登录返回或调用方提供。 |
2fa |
push_ig_ndx_screen.md |
部分实现 | Rust-only client.two_factor().push_ig_ndx_screen(...);需要已登录 Bearer 授权。 |
2fa |
save_credentials.md |
部分实现 | Rust-only client.two_factor().save_credentials(...);lois token 不伪造。 |
init |
aed_current.md |
部分实现 | 内部使用:登录后 GET 预热 best-effort 调用。 |
init |
loom_fetch_config.md |
部分实现 | 内部使用:登录后 GET 预热 best-effort 调用。 |
init |
get_limited_interactions_reminder.md |
部分实现 | 内部使用:登录后 GET 预热 best-effort 调用。 |
init |
get_presence_disabled.md |
部分实现 | 内部使用:登录后 GET 预热 best-effort 调用。 |
init |
get_account_family.md |
部分实现 | 内部使用:登录后 GET 预热 best-effort 调用。 |
init |
ndx_ig_steps.md |
部分实现 | 内部使用:登录后 GET 预热 best-effort 调用。 |
init |
fetch_onetap.md |
部分实现 | 内部使用:登录后 POST 预热 best-effort 调用。 |
init |
process_contact_point_signals.md |
部分实现 | 内部使用:登录后 POST 预热 best-effort 调用。 |
init |
android_modules_download.md |
部分实现 | Rust-only client.init().android_modules_download(...);SDK 不自动下载或加载 CDN 模块。 |
init |
banyan.md |
部分实现 | Rust-only client.init().banyan(...);业务响应模型待稳定。 |
init |
push_register.md |
部分实现 | Rust-only client.init().push_register(...);真实 FCM token 与 HPKE 公钥由调用方提供。 |
init |
app_reliability_push_blocking.md |
部分实现 | Rust-only client.init().app_reliability_push_blocking();登录后也会 best-effort 预热。 |
home |
feed_timeline.md |
已实现 | Rust feed_timeline*_response() 返回 HomeResponse;Python v391_home_feed_timeline_cold_start();CLI v391-home-smoke --target feed。 |
home |
feed_reels_tray.md |
部分实现 | Rust-only client.home() 快拍托盘低层 API;业务响应模型待补。 |
home |
feed_reels_media.md |
部分实现 | Rust-only;reel ids 由调用方提供,SDK 不伪造。 |
home |
feed_user_story.md |
部分实现 | Rust-only;GET 查询 helper 已接入。 |
home |
highlights_tray.md |
部分实现 | Rust-only;GET 查询 helper 已接入。 |
home |
notifications_badge.md |
已实现 | Rust notifications_badge_response(...) 返回 HomeResponse;CLI 不暴露完整低层参数。 |
home |
news_inbox.md |
部分实现 | Rust-only;GET 查询 helper 已接入。 |
home |
discover_topical_explore.md |
部分实现 | Rust-only;探索页话题网格查询 helper 已接入。 |
home |
discover_ayml.md |
部分实现 | Rust-only;推荐关注请求构造已接入。 |
home |
sectioned_ayml.md |
部分实现 | Rust-only;分区推荐关注查询 helper 已接入。 |
home |
clips_discover.md |
部分实现 | Rust-only;device_status 由调用方提供。 |
home |
clips_discover_stream.md |
部分实现 | Rust-only;默认仅使用抓包中的空 device_status 形态。 |
home |
clips_discover_social.md |
部分实现 | Rust-only;device_status 由调用方提供。 |
home |
share_to_fb_config.md |
部分实现 | Rust-only;device_status 由调用方提供。 |
home |
direct_inbox.md |
已实现 | Rust direct_inbox_response(...) 返回 HomeResponse;Python v391_home_direct_inbox();CLI v391-home-smoke --target direct。 |
home |
pending_requests_preview.md |
部分实现 | Rust-only;待处理请求预览 GET API 已接入。 |
home |
has_interop_upgraded.md |
部分实现 | Rust-only;互通升级状态 GET API 已接入。 |
home |
users_info.md |
已实现 | Rust users_info_response(...) 返回 HomeResponse;Python v391_home_users_info(user_id);CLI v391-home-smoke --target user --user-id <id>。 |
home |
users_info_stream.md |
部分实现 | Rust-only;用户资料流表单 helper 已接入。 |
home |
creator_info.md |
部分实现 | Rust-only;创作者信息 GET API 已接入。 |
home |
write_supported_capabilities.md |
部分实现 | Rust-only;能力上报 signed body helper 已接入。 |
home |
get_good_time_for_live.md |
部分实现 | Rust-only;直播建议时段 signed body helper 已接入。 |
home |
media_blocked.md |
部分实现 | Rust-only;屏蔽媒体 GET API 已接入。 |
home |
get_notification_settings.md |
部分实现 | Rust-only;通知设置查询 helper 已接入。 |
home |
scores_bootstrap_users.md |
部分实现 | Rust-only;用户关系打分查询 helper 已接入。 |
home |
injected_reels_media.md |
部分实现 | Rust-only;client_doc_id 与 tray_user_ids 由调用方提供。 |
home |
store_client_push_permissions.md |
部分实现 | Rust-only;推送权限状态由调用方提供。 |
reg |
fxcal_get_sso_accounts.md |
已实现 | Rust get_active_sso_accounts_response() 返回 RegistrationResponse;Python v391_registration_get_active_sso_accounts();完整注册仍需外部上下文。 |
reg |
spc_create_profile.md |
已实现 | Rust RegistrationFlow::spc_create_profile() 串联状态;Python 暂不暴露该中间步骤。 |
reg |
caa_reg_username.md |
已实现 | Rust validate_username_response(...) / RegistrationFlow::validate_username(...) 返回 RegistrationResponse;Python 暴露 validate username typed wrapper。 |
reg |
caa_reg_ac_optin.md |
已实现 | Rust ac_optin_response(...) / RegistrationFlow::ac_optin();CLI 不暴露完整注册。 |
reg |
caa_reg_create_account.md |
已实现 | Rust create_account_response(...) / RegistrationFlow::create_account();进入 create account 前要求外部 Play Integrity token 状态。 |
onboarding |
dynamic_onboarding_get_steps.md |
已实现 | Rust dynamic_steps_response(...) / OnboardingFlow::dynamic_steps();Python v391_onboarding_dynamic_steps(...)。 |
onboarding |
contact_point_prefill.md |
已实现 | Rust contact_point_prefill_response(...) / OnboardingFlow::contact_point_prefill();Python v391_onboarding_contact_point_prefill(...)。 |
onboarding |
rupload_igphoto.md |
已实现 | Rust v391 onboarding 专用 rupload offset / bytes,flow 记录 upload_id / entity_name;原始图片字节仍由调用方提供。 |
onboarding |
change_profile_picture.md |
已实现 | Rust change_profile_picture_response(...) / OnboardingFlow::change_profile_picture()。 |
onboarding |
fxcal_link.md |
已实现 | Rust fxcal_link_response(...) / OnboardingFlow::fxcal_link_or_skip()。 |
onboarding |
fxcal_link_log.md |
已实现 | Rust fxcal_link_log_response(...);SDK 不高频自动模拟埋点。 |
graphql |
graphql_www.md |
部分实现 | Rust-only client.graphql().graphql_www(...);支持 JSON / Pando / 文本响应。 |
graphql |
graphql_query.md |
部分实现 | Rust-only client.graphql().graphql_query(...);doc id 与 variables 由调用方提供。 |
graphql |
wwwgraphql_ig_query.md |
部分实现 | Rust-only client.graphql().wwwgraphql_ig_query(...);root_field_name 与 variables 由调用方提供。 |
telemetry |
logging_client_events.md |
部分实现 | Rust-only client.telemetry().logging_client_events(...);事件 payload 由调用方提供。 |
telemetry |
mci_ab_asset_manager.md |
部分实现 | Rust-only client.telemetry().mci_ab_asset(...);只接受 HTTPS fbcdn /mci_ab/ URL。 |
telemetry |
pigeon_nest.md |
部分实现 | Rust-only client.telemetry().pigeon_nest(...);二进制 cmsg 由调用方提供。 |
telemetry |
pigeon_health_metrics.md |
部分实现 | Rust-only client.telemetry().pigeon_health_metrics(...);health counters 由调用方提供。 |
暂不暴露到 Python / CLI 的原因¶
除登录、2FA、账号导入导出、部分注册/onboarding/home typed wrapper 和 CLI 诊断外,v391 低层能力大多依赖服务端/Bloks 不透明上下文、硬件 attestation、Play Integrity provider、FCM token、上传状态或业务 doc id。当前 Rust core 保留这些低层接口,Python/CLI 只暴露已稳定的摘要能力,避免形成看似稳定但无法端到端完成的用户接口。
验证入口¶
- Rust core:
cargo test -p igapi-core --lib - Python v391 命名空间:
src/py/.venv/bin/python -m pytest tests/python/android/auth/test_version_select.py -v - CLI v391 参数:
cargo test -p igapi-cli - Android v391 真实账号矩阵本地预检:
cargo test -p igapi-core --test android_v391_matrix - Android v391 真实 API 矩阵:
IGAPI_ANDROID_V391_REAL_E2E=1 cargo test -p igapi-core --test android_v391_matrix -- --ignored --nocapture --test-threads=1