首页 / 博客 / API·多语言·接口

微信删除好友接口

分类:API·多语言·接口 · 标签:微信删除好友接口、个人微信API、微信二次开发

前言

在私域运营和 SCRM 系统建设中,好友列表的精细化管理是绕不开的一环。沉默用户占用联系人配额、无效好友稀释标签体系、甚至部分用户主动举报都会带来封号风险——这些痛点最终都指向同一个需求:批量、可编程地删除微信好友。本文围绕"微信删除好友接口"这一技术主题,拆解实现原理、核心参数、调用流程与注意事项,并以 WechatApi 提供的 iPad 协议接口为示例贯穿全文,帮助开发者快速落地。

为什么微信删除好友如此难以自动化

微信官方客户端的删除好友操作藏得很深——进入联系人详情、点击右上角菜单、选择"删除",且每次只能操作一个好友,没有任何官方 API 开放给第三方。对于需要管理数千乃至数万好友的私域账号来说,手动操作成本极高。

从协议层看,微信删除好友的信号在 PC 协议、Web 协议和 iPad 协议三条链路上的实现方式完全不同。PC Hook 方式依赖进程注入,稳定性差、微信版本更新即失效;Web 协议已于 2017 年前后被微信大范围封禁,现存接口极不稳定;iPad 协议是目前最接近官方客户端行为、风控最低的方案,也是 WechatApi 所采用的底层协议。

理解这一背景,才能明白为什么市面上大多数"微信自动化"方案要么封号率极高,要么不支持删除好友这类"破坏性"操作——它们在协议选型上就已经落了下风。

删除好友接口的技术原理

iPad 协议层面的信号流

微信 iPad 端删除好友,底层实际上向服务端发送了两步信号:

  1. 解除好友关系(DelContact):将目标 wxid 从本账号通讯录中移除,同时在服务端标记双向好友状态为单向或无关系。
  2. 可选:拉黑操作(AddToBlacklist):部分场景下配合拉黑,防止对方重新添加。

WechatApi 将上述两步封装为单一 HTTP 接口,开发者只需一次请求即可完成好友删除,无需关注底层握手细节。

鉴权与设备绑定机制

WechatApi 使用两层身份标识:

字段位置说明
VideosApi-tokenHTTP 请求头开发者账号鉴权 Token,在控制台获取
appId请求 Body已登录微信设备的唯一 ID,代表"用哪个号操作"

appId 是设备维度的标识,一个开发者账号下可以挂载多个微信号,每个微信号对应一个独立的 appId。删除好友时必须传入正确的 appId,否则接口会返回设备未找到或未登录错误。

这种设计使得多账号批量操作变得清晰:循环遍历不同 appId,即可对多个微信号并发执行好友清理任务。

接口调用流程详解

第一步:获取好友列表,确定待删除 wxid

删除前必须先拿到目标好友的 wxid。WechatApi 提供好友列表接口,返回完整通讯录,每条记录包含 wxid、备注名、头像等字段。

pythonimport requests

BASE_URL = "https://your-api-endpoint.example.com"  # 替换为实际分配的接入地址
TOKEN = "your_videos_api_token"                      # 控制台复制的 Token
APP_ID = "your_app_id"                               # 目标微信号的设备 ID

headers = {
    "Content-Type": "application/json",
    "VideosApi-token": TOKEN
}

# 拉取好友列表(示意性路径,非真实 endpoint)
resp = requests.post(
    f"{BASE_URL}/contact/list",
    headers=headers,
    json={"appId": APP_ID}
)
data = resp.json()
# data 结构示例:
# {"ret": 200, "msg": "success", "data": {"contactList": [{"wxid": "xxx", "nickName": "张三", ...}]}}

contacts = data["data"]["contactList"]
# 筛选出需要删除的 wxid,例如备注含"已流失"的用户
to_delete = [c["wxid"] for c in contacts if "已流失" in (c.get("remark") or "")]
print(f"待删除好友数:{len(to_delete)}")

第二步:逐一调用删除好友接口

拿到 wxid 列表后,循环调用删除接口。建议每次请求之间加入随机延迟,模拟人工操作节奏,降低风控触发概率。

pythonimport time
import random

def delete_friend(app_id: str, wxid: str) -> dict:
    """
    调用微信删除好友接口(示意性示例)
    实际 endpoint 和参数以 WechatApi 开发文档为准:https://post.wechatapi.net
    """
    payload = {
        "appId": app_id,
        "wxid": wxid,
        # "addToBlacklist": True  # 可选:同时拉黑,防止对方再次添加
    }
    resp = requests.post(
        f"{BASE_URL}/contact/delete",
        headers=headers,
        json=payload,
        timeout=15
    )
    return resp.json()

success_list = []
fail_list = []

for wxid in to_delete:
    result = delete_friend(APP_ID, wxid)
    if result.get("ret") == 200:
        success_list.append(wxid)
        print(f"[OK] 已删除 {wxid}")
    else:
        fail_list.append({"wxid": wxid, "msg": result.get("msg")})
        print(f"[FAIL] {wxid} 删除失败:{result.get('msg')}")
    # 随机等待 2~5 秒,模拟人工节奏
    time.sleep(random.uniform(2, 5))

print(f"\n完成:成功 {len(success_list)} 个,失败 {len(fail_list)} 个")

第三步:处理返回值与异常

接口返回体遵循统一结构:

json{
  "ret": 200,
  "msg": "success",
  "data": {
    "wxid": "target_wxid_here",
    "result": true
  }
}

常见错误码及处理建议:

ret 码msg 说明建议处理方式
200success正常,继续下一条
401token 无效或过期检查请求头 VideosApi-token
404appId 对应设备未找到确认设备已登录,appId 正确
429请求频率过高降低并发,增加延迟
500微信端执行失败可能是网络抖动,建议重试 1 次
503账号已离线重新扫码登录后再操作

对于 500 错误,建议设计指数退避重试机制,最多重试 2 次;对于 429 错误,说明当前操作频率已触及风控阈值,需要立刻暂停并等待至少 5 分钟后再继续。

关键参数说明

除了必填的 appIdwxid,WechatApi 删除好友接口还支持若干可选参数,用于控制操作行为:

参数名类型必填说明
appIdstring操作账号的设备 ID
wxidstring目标好友的微信 ID
addToBlacklistboolean是否同时拉黑,默认 false
deleteConversationboolean是否同时删除会话记录,默认 false

addToBlacklist 参数在以下场景尤为有用:

需要注意的是,deleteConversation 设为 true 后,微信端对应的聊天记录会被删除,且不可恢复。建议在执行前先将重要聊天记录导出存档,或在测试环境充分验证后再应用到生产账号。

实际场景:SCRM 好友清洗流水线

以一个典型私域 SCRM 场景为例:某电商品牌有 20 个客服微信号,每号承载约 3000 好友,定期需要清理 90 天无互动的"沉默用户"以腾出名额给新增潜客。

整个流水线大致如下:

Step 1 — 数据打标:从 CRM 系统查询各微信号下 90 天无消息记录的 wxid 列表,写入待清洗队列。

Step 2 — 批量删除:调度脚本从队列中逐条取出任务,通过 WechatApi 个人微信接口 执行删除,每个微信号每小时控制在 30 次以内。

Step 3 — 结果回写:将删除成功的记录更新至 CRM,标注"已清理",失败的进入重试队列,重试 2 次后人工审核。

Step 4 — 日报汇总:每天晚上自动统计各账号清理数量、失败率、账号健康状态,异常账号发告警到企业微信群。

这套流水线在 微信二次开发 场景中相当典型,核心依赖稳定的接口层,WechatApi 的 iPad 协议方案在这里提供了最关键的底层支撑。

如果你的场景还涉及群管理(踢出群成员、解散群等),WechatApi 同样提供对应接口,可与好友删除操作组合使用,构建完整的账号清理闭环。

操作注意事项与风控建议

删除好友是微信客户端的不可逆操作,同时也是微信风控算法重点关注的行为之一。以下几点务必在上线前充分评估:

频率控制是第一红线

微信对单账号单日删除好友的次数有隐性上限,具体数值随版本和账号权重浮动,但业界实践表明单号单日超过 100 次删除操作后风险显著上升。建议:

账号权重影响容错空间

账号注册时间长、实名认证完整、日常有真实聊天记录的"高权重"账号,在执行批量删除时的容错空间更大。新注册账号或刚导入 WechatApi 的设备建议先"养号"2-4 周再执行批量操作。

删除≠对方感知

微信删除好友后,对方不会收到任何通知。但对方再次给你发消息时,消息会被正常投递(因为你还在对方的通讯录里),此时你的客户端会收到消息并提示"对方不是你的好友"。如果你的业务场景不希望收到这类消息,可在删除时同步拉黑。

测试账号先行,生产账号后跑

任何批量操作上线前,务必用测试账号跑通全流程,核对返回值、检查删除效果,再逐步切换至生产账号。WechatApi 控制台 提供沙箱环境,建议充分利用。

保留操作日志

建议将每次删除操作的时间戳、操作账号 appId、目标 wxid、接口返回码完整记录到数据库或日志系统。一方面方便排查问题,另一方面在账号出现异常时可以快速还原操作历史,判断是否与批量删除有关。

小结

微信删除好友接口的核心门槛在于协议选型和风控策略,而不是接口调用本身——调用其实很简单,三行 HTTP 请求就能搞定。难的是如何在保证效率的同时把封号风险控制在可接受范围内。

WechatApi 基于 iPad 协议实现,提供包括删除好友在内的完整个人微信自动化接口体系,支持多设备并发、完善的错误码体系和稳定的 SLA,是目前个人微信二次开发场景中可靠性较高的选择之一。如果你正在构建私域 SCRM、好友清洗流水线或微信机器人系统,可以访问 开发者文档 查阅完整接口列表,或在 控制台 注册体验。

想动手试试?

WechatApi 提供扫码登录、消息收发、好友与群管理等 REST 接口,注册后几分钟跑通。

立即免费注册查看开发文档

相关产品页

🔗 个人微信API(产品页)🔗 微信二次开发(产品页)🔗 微信机器人开发(产品页)

相关文章

微信API接口返回失败/收不到消息?完整排查清单微信 API 怎么对接?Python 发出第一条消息实战Node.js 微信机器人开发教程(发消息 + 收回调)个人微信API能力清单:消息/好友/群/朋友圈接口一览
© 2025 WechatApi · 企业级微信智能机器人接入平台
官网价格帮助文档博客
苏ICP备2024128799号 · 苏ICP备2023038368号