instagram-private-api 亲密好友(Besties)接口:FriendshipRepositorySetBestiesResponseRootObject 响应结构全解析
后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载导读本文聚焦instagram-private-apiNodeJS 编写的 TypeScript 版 Instagram 私有 API SDK中设置亲密好友Besties / 挚友功能的核心响应数据结构FriendshipRepositorySetBestiesResponseRootObject。你将理解该接口在 SDK 中的定位、其两个字段friendship_statuses与status的精确类型定义与语义、底层请求的构造方式以及如何在实际代码中调用ig.friendship.setBesties()并解析返回值用于批量管理账号的亲密好友关系。一、接口在 SDK 中的位置FriendshipRepositorySetBestiesResponseRootObject属于 SDK 的responses 模块在文档体系中挂在docs/interfaces/responses/目录下并在 responses 模块索引 中对外暴露。它描述的是 Instagram 私密接口POST /api/v1/friendships/set_besties/返回的根对象结构。该响应由FriendshipRepository.setBesties()方法使用方法签名定义在 FriendshipRepository 类文档 中setBesties(input?: SetBestiesInput): PromiseRecordstring, FriendshipRepositorySetBestiesResponseRootObject_status注意setBesties方法返回时已经解包了响应根对象直接返回内部的friendship_statuses映射Recordstring, ...也就是说方法层面的返回类型比网络响应少了一层。因此FriendshipRepositorySetBestiesResponseRootObject主要在底层类型契约层面发挥作用——它约束了仓库层request.send...泛型参数所对应的真实 HTTP 响应体。二、根对象接口字段详解该接口共两个属性定义于 src/responses/friendship.repository.besties.response.tsexport interface FriendshipRepositorySetBestiesResponseRootObject { friendship_statuses: Recordstring, FriendshipRepositorySetBestiesResponseRootObject_status; status: string; }字段类型说明friendship_statusesRecordstring, FriendshipRepositorySetBestiesResponseRootObject_status以用户 PK数字 ID 的字符串形式为键、以单用户亲密状态为值的映射表覆盖本次操作涉及的所有目标用户statusstringInstagram API 通用的响应状态标识正常时值为okfriendship_statuses批量结果的载体之所以是Recordstring, ...而非数组是因为一次set_besties请求可以同时传入add与remove两组用户列表见下文 SetBestiesInput服务端需要为每一个受影响的用户分别回传一份最新的关系快照。使用用户 PK 作为映射键调用方可以 O(1) 地按 ID 精确查询某个用户的亲密状态是否已成功变更无需遍历数组。这与单用户操作接口如show、create返回单个friendship_status对象的模式形成鲜明对比——例如 FriendshipRepositoryChangeResponseRootObject 中字段名为单数friendship_status而本接口是复数friendship_statuses。三、子对象 FriendshipRepositorySetBestiesResponseRootObject_status 逐字段解析映射的每个值是一个FriendshipRepositorySetBestiesResponseRootObject_status它刻画了某个用户与当前登录账号之间完整的关注关系状态字段定义于 src/responses/friendship.repository.besties.response.ts同时有独立的接口文档 FriendshipRepositorySetBestiesResponseRootObject_statusexport interface FriendshipRepositorySetBestiesResponseRootObject_status { following: boolean; followed_by: boolean; blocking: boolean; muting: boolean; is_private: boolean; incoming_request: boolean; outgoing_request: boolean; is_bestie: boolean; }字段类型语义followingboolean当前登录账号是否已关注该用户followed_byboolean该用户是否已关注当前登录账号blockingboolean当前登录账号是否已拉黑该用户mutingboolean当前登录账号是否已屏蔽静音该用户的帖文或动态is_privateboolean该用户账号是否为私密账号private accountincoming_requestboolean是否存在来自该用户的关注请求对方请求关注我们outgoing_requestboolean是否存在发往该用户的关注请求我们请求关注对方is_bestieboolean该用户是否为当前登录账号的亲密好友——本操作的核心结果字段is_bestie 是关键判别字段设置成功后目标用户的is_bestie应为true如果同时执行了移除操作被移除用户的is_bestie则应为false。因此在编程实践中正确解读friendship_statuses的方式是// 假设我们添加了两个用户并移除了一个用户 const statuses await ig.friendship.setBesties({ add: [userIdA, userIdB], remove: [userIdC], }); for (const [pk, friendship] of Object.entries(statuses)) { console.log(用户 ${pk} 的最新关系快照); console.log( is_bestie: ${friendship.is_bestie}); console.log( following: ${friendship.following}, followed_by: ${friendship.followed_by}); console.log( is_private: ${friendship.is_private}, muting: ${friendship.muting}); }与其他响应结构的关联这个子对象结构与 SDK 中其他多处出现的friendship_status结构高度一致例如FriendshipRepositoryChangeResponseFriendship_statusblock/unblock/create/destroy等变更操作的返回FriendshipRepositoryShowResponseRootObject单用户关系查询额外多出is_blocking_reel、is_muting_reel两个字段BestiesFeedResponseUsersItemBesties 列表流中的用户项。它们都包含is_bestie说明is_bestie是整个 SDK 中贯穿“亲密好友”这一概念的统一状态标志无论你通过 set 接口写入、通过 show 接口查询还是通过 Besties 列表读取都能用同一个字段判断亲密关系。从源码结构看这些相似结构是 SDK 为不同 endpoint 分别建模的产物尚未统一抽取为单一公共类型。四、底层调用链setBesties 方法如何产生该响应FriendshipRepository.setBesties()的实现位于 src/repositories/friendship.repository.ts是唯一产生FriendshipRepositorySetBestiesResponseRootObject响应的入口async setBesties(input: SetBestiesInput {}) { const { body } await this.client.request.sendFriendshipRepositorySetBestiesResponseRootObject({ url: /api/v1/friendships/set_besties/, method: POST, form: this.client.request.sign({ _csrftoken: this.client.state.cookieCsrfToken, _uid: this.client.state.cookieUserId, device_id: this.client.state.deviceId, _uuid: this.client.state.uuid, module: favorites_home_list, source: audience_manager, add: input.add, remove: input.remove, }), }); return body.friendship_statuses; }调用链可概括为组装表单除业务参数add/remove外还会附加_csrftoken、_uid、device_id、_uuid等会话标识以及module: favorites_home_list与source: audience_manager两个用于模拟客户端来源的字段签名通过this.client.request.sign(...)进行端点签名Instagram 私有端口的签名要求随后以表单form形式 POST类型约束request.sendFriendshipRepositorySetBestiesResponseRootObject用该接口约束响应体类型保证body.friendship_statuses与body.status的静态类型安全解包返回方法最终返回body.friendship_statuses把Recordstring, FriendshipRepositorySetBestiesResponseRootObject_status直接暴露给调用方与上面文档中setBesties的PromiseRecord...返回类型完全对应。输入类型 SetBestiesInput入参input的类型定义于 src/types/set-besties.input.ts并在 types 模块索引 中导出export type SetBestiesInput { add?: Arraystring | number; remove?: Arraystring | number; };参数类型说明add?Arraystring \| number要添加为亲密好友的用户 PK 列表可为空表示本次只做移除remove?Arraystring \| number要移除亲密好友关系的用户 PK 列表可为空表示本次只做添加两者均为可选且可同时传入因此一次调用即可完成“增删”的批量操作。需要注意set_besties的添加方向通常是单向的“你将对方标为亲密”最终以响应中的is_bestie为权威结果。五、实战示例完整使用流程结合 session.example.ts 中的会话建立模式一个完整的调用示例如下import { IgApiClient } from ./src; (async () { const ig new IgApiClient(); ig.state.generateDevice(你的用户名); await ig.account.login(你的用户名, 你的密码); // 批量设置亲密好友添加两个用户同时移除一个用户 const statuses await ig.friendship.setBesties({ add: [1234567890, 2234567891], remove: [3234567892], }); console.log(接口 status:, statuses); // 注意方法已解包这里即 friendship_statuses // 验证每个目标用户的新关系状态 for (const [pk, s] of Object.entries(statuses)) { console.log(用户 ${pk}: is_bestie${s.is_bestie}, following${s.following}, followed_by${s.followed_by}); } // 若只做添加可不传 remove若只做移除可不传 add const onlyAdd await ig.friendship.setBesties({ add: [2234567891] }); const onlyRemove await ig.friendship.setBesties({ remove: [1234567890] }); })();验证亲密好友结果使用 Besties 列表流设置之后可以通过BestiesFeed读取当前的亲密好友列表进行交叉验证。该 Feed 定义于 src/feeds/account-friendships-besties.feed.ts请求GET /api/v1/friendships/besties返回BestiesFeedResponseUsersItem[]其中每个用户项同样携带is_bestie与friendship_status字段见 account-friendships-besties.feed.response.tsconst bestiesFeed ig.feed.besties(); const besties await bestiesFeed.items(); for (const user of besties) { console.log(${user.username} (pk${user.pk}) is_bestie${user.is_bestie}); }六、最佳实践与注意事项使用解包后的返回值setBesties()直接返回friendship_statuses映射无需再从根对象中手动取字段但如果你在仓库层或其他场景需要完整的根对象含status字段以校验ok则需自行构造与 friendship.repository.besties.response.ts 一致的结构来承接原始响应。批量优于单次与逐用户调用关注/取关接口不同set_besties天然支持批量应在程序设计中尽量一次提交多个 PK减少请求次数、降低触发风控的概率。以服务端返回为准是否真正生效应以响应中各用户的is_bestie为准由于涉及账号风控、网络波动等情况若某项未按预期生效可通过 FriendshipRepository.show() 单独复查该用户关系。控制操作频率频繁大批量变更亲密关系可能触发 Instagram 的限制SDK 亦内置了如 IgActionSpamError 等错误类型建议分批执行并加入适当延时。类型安全收益由于响应类型是显式接口配合 TypeScript 严格模式可在编译期发现字段名拼写错误例如把friendship_statuses误写为friendship_status这是 SDK 将响应结构建模为独立接口文件src/responses/*.response.ts的核心价值。七、总结FriendshipRepositorySetBestiesResponseRootObject是instagram-private-api中亲密好友批量管理功能的类型基石根对象通过friendship_statuses: Recordstring, FriendshipRepositorySetBestiesResponseRootObject_status承载多用户关系快照子对象以 8 个布尔字段完整刻画每个目标用户的关注、拉黑、静音、私密与亲密状态。配合 FriendshipRepository.setBesties() 与 SetBestiesInput 输入类型开发者可以在一次请求内完成批量添加/移除亲密好友并通过is_bestie字段精确校验操作结果。若需进一步阅读可查看 FriendshipRepository 类完整文档、responses 模块索引 以及源码目录 src/responses深入理解 SDK 的响应建模与仓库调用设计。赞分享后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载相关推荐instagram-private-api 亲密好友Besties响应接口 BestiesFeedResponse 全解析instagram private api 亲密好友Besties响应接口 BestiesFeedResponse 全解析 本文基于 instagram p后端Artillery 自定义指标跟踪实战用 afterResponse 处理器统计请求计数与延迟直方图Artillery 自定义指标跟踪实战用 afterResponse 处理器统计请求计数与延迟直方图 Artillery 内置的 HTTP 引擎在每次请求后都后端instagram-private-api 响应结构解析DirectThreadRepositoryGetByParticipantsResponseFriendshipStatus 接口详解instagram private api 响应结构解析DirectThreadRepositoryGetByParticipantsResponseFrie后端上一篇Seed-VC零样本语音转换技术深度解析扩散变换器架构与实时性能优化下一篇解决表单验证痛点Zod异步验证完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

珠心算测验:从暴力枚举到标记数组的算法优化实战

珠心算测验:从暴力枚举到标记数组的算法优化实战

1. 从一道经典题看算法思维的本质珠心算测验这道题,在算法练习平台上是很多初学者绕不过去的一道坎。题目本身描述很简洁:给定一组正整数,统计其中有多少个数恰好等于另外两个不同数之和。看起来像是小学数学题,但真正动手写代码时…

2026/10/15 6:26:45 阅读更多 →
从CTR到LTV:一文讲透用户增长指标体系的底层逻辑

从CTR到LTV:一文讲透用户增长指标体系的底层逻辑

做用增(用户增长)的同学,日常工作离不开一长串指标:CTR、CVR、CPA、ROI、LTV、次留……但对很多刚接触这块的人来说,这些名词满天飞,自己写报表的时候很容易陷入“每个数都见过,但解释不清到底代…

2026/10/15 6:26:45 阅读更多 →
点评类网站反爬机制深度拆解:从浏览器指纹到动态签名与字体映射

点评类网站反爬机制深度拆解:从浏览器指纹到动态签名与字体映射

1. 从一次数据采集任务说起:为什么点评类网站的反爬这么难缠做过本地生活类数据采集的人大概都有同感:电商网站的商品页结构相对规整,新闻资讯站的正文提取也有成熟套路,唯独点评类平台,采集难度是断崖式上升的。我最早…

2026/10/15 6:26:45 阅读更多 →

最新新闻

企业级网络架构实战:从故障收敛到策略即代码

企业级网络架构实战:从故障收敛到策略即代码

1. 项目概述:这不是教科书里的“理想网络”,而是真实机房里能扛住双十一流量的骨架“企业级网络架构配置细则(贰)”这个标题,乍看像一份内部文档编号,但真正踩过坑的人一眼就懂——它不是讲OSI七层模型怎么…

2026/10/15 7:20:55 阅读更多 →
游戏闪退点不动?从dll排查到运行库修复的完整指南

游戏闪退点不动?从dll排查到运行库修复的完整指南

1. 闪退和点不动,先分清是"启动失败"还是"运行崩溃"很多人一看到游戏图标点下去没反应,或者刚出现厂商logo就弹回桌面,第一反应就是"游戏坏了,重装吧"。这个判断在十年前可能还成立,放到…

2026/10/15 7:20:55 阅读更多 →
手写ResNet:从残差块到完整网络的构建与训练实践

手写ResNet:从残差块到完整网络的构建与训练实践

1. 为什么要手写 ResNet:让网络变深这件事,没那么简单我最早接触 ResNet 是在做图像分类的迁移学习实验时。当时直接调用了现成的接口,模型下载下来就能跑出结果,确实很方便。但一旦进入实际项目——数据是自己拍的,标…

2026/10/15 7:20:55 阅读更多 →
Linux 下安装 WorkBuddy:跨发行版本地任务管理工具实战指南

Linux 下安装 WorkBuddy:跨发行版本地任务管理工具实战指南

老实说,在 Linux 桌面上想找一款真正对味的效率工具并不容易。很多任务管理软件要么是“web 套壳”,平时什么都不干也能吃掉两三百 MB 内存;要么绑死某个特定发行版,换个系统就得重新折腾一遍。WorkBuddy 是我最近认真用起来的一款…

2026/10/15 7:20:55 阅读更多 →
基于Flask与Selenium的电商比价系统:从爬虫到DeepSeek智能问答

基于Flask与Selenium的电商比价系统:从爬虫到DeepSeek智能问答

做电商比价系统这个想法,我一开始以为核心难点在爬虫。等真正动手做完这套基于 Flask 与 Python 的多平台电商比价可视化系统,我才反应过来:爬数据只是地基,真正费精力的是把不同平台千奇百怪的商品信息拉到同一个坐标系里比较&am…

2026/10/15 7:20:55 阅读更多 →
Python迭代器深度解析:for循环、生成器与惰性求值

Python迭代器深度解析:for循环、生成器与惰性求值

写Python代码这些年,我见过太多人在for循环上栽跟头,却很少有人真正停下来问一句:for循环凭什么能遍历列表、字典、文件、甚至无限序列?答案就是标题里这个看似不起眼的名词——Python迭代器(Iterator)。它…

2026/10/15 7:19:55 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →