默认模块信息
基础接口地址(Base URLs): wechatapi.net
认证与登录流程说明
本系统通过分步式接口实现API登录,需依次完成二维码获取与登录状态检测。
第一步:获取微信登录二维码
请求方式: POST
接口路径: /login/getLoginQrCode
参数说明:
- appId:设备唯一标识。首次登录请留空,系统将自动创建新设备并返回appId;后续登录必须携带此前获取的appId。注意避免为同一账号重复创建设备,以防触发平台风控机制。
- proxyIp:可选代理配置,格式为 socks5://username:password@ip:port。若需使用全局代理,可在所有接口中添加 "useProxy": true 字段(默认为 false)。
- regionId:地区编码,必填项。建议选择用户所在省份的ID进行登录操作。若无对应区域ID,请使用本地或本市代理IP支持。
- type:设备类型,支持 ipad 和 mac,默认为 ipad。当使用 iPad 类型扫码提示“在新设备完成验证”时,应切换至 mac 类型尝试登录(推荐顺序:ipad → mac)。mac 类型支持滑块验证流程。
- ttuid:本地网络标识符,需配合 regionId 或 proxyIp 使用,不可单独传入。借用真实用户本地网络环境取码,约有50%概率跳过iPad端验证环节。
注意事项:
- 每次取码所使用的 appId 必须与上次扫码登录的微信实例一致,否则将导致登录失败。
- 如需全局走代理,请在请求体中加入 "useProxy": true 参数,但可能影响接口响应速度。
- ttuid 工具包可点击下载(代理TTUID)。
支持的地区ID列表(格式:ID*地区名称)
110000*北京市|120000*天津市|130000*河北省|140000*山西省|150000*内蒙古
210000*辽宁省|220000*吉林省|230000*黑龙江
310000*上海市|320000*江苏省|330000*浙江省|340000*安徽省|350000*福建省|360000*江西省|370000*山东省
410000*河南省|420000*湖北省|430000*湖南省|440000*广东省|450000*广西省|460000*海南省
500000*重庆市|510000*四川省|520000*贵州省|530000*云南省|540000*西藏自治区
610000*陕西省|620000*甘肃省|630000*青海省|640000*宁夏自治区|650000*新疆自治区
若当前列表未包含您的所在地区,可通过购买 SOCKS5 协议代理 IP,并填写至 proxyIp 参数中以实现访问。
请求示例 Body
{
"appId": "",
"proxyIp": "",
"regionId": "320000",
"type": "ipad",
"ttuid": "配合regionId/proxyIp使用,传ttuid程序生成的id"
}
请求头(Headers)
| 名称 | 位置 | 类型 | 是否必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 前往API后台 → 访问控制 → 生成Token |
Body 参数详情
| 参数名 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
| appId | string | 否 | 设备ID,首次为空,后续使用返回值 |
| proxyIp | string | 否 | 代理IP,格式:socks5://user:pass@123.2.2.2 |
| regionId | string | 是 | 地区编码 |
| type | string | 是 | 设备类型:ipad、mac(默认ipad) |
| ttuid | string | 否 | 本地网络ID,需结合regionId/proxyIp使用 |
成功响应示例(200 OK)
{
"ret": 0,
"msg": "string",
"data": {
"qrData": "string",
"qrUrl": "string",
"appId": "string",
"qrImgBase64": "string",
"uuid": "string"
}
}
返回字段说明
| 字段名 | 类型 | 是否必选 | 中文说明 | 描述 |
|---|---|---|---|---|
| ret | integer | true | 返回码 | 0表示成功 |
| msg | string | true | 消息提示 | 状态描述信息 |
| data | object | true | 响应数据 | 包含二维码相关信息 |
| qrData | string | true | 二维码内容 | 用于生成二维码的数据 |
| qrUrl | string | true | 二维码跳转链接 | 扫码后直接打开的URL |
| appId | string | true | 设备ID | 本次生成的设备标识 |
| qrImgBase64 | string | true | 二维码图像Base64 | 前端可直接展示该图片供用户扫码 |
| uuid | string | true | 二维码唯一标识 | 用于轮询检查登录状态 |
第二步:检查登录状态(执行登录)
请求方式: POST
接口路径: /login/checkLogin
此步骤用于轮询检测用户是否已完成扫码及授权操作。系统现已支持:
- iPad 设备的人脸识别验证
- Mac 设备的滑块验证机制
特别提醒: iPad 类型仅支持 iOS 平台 App 扫码,请确保客户端兼容性。
支持多种验证方式,包括APP扫码验证与系统自动验证。开发者可根据需要在集成平台中自行接入APP滑块验证功能。具体操作流程可参考iPad或Mac登录相关说明。
调用接口以获取登录二维码后,需每隔5秒轮询一次该接口,用于判断用户是否已完成扫码及登录操作。二维码的有效时长为120秒,超时后需重新获取。
当返回数据中的logininfo字段包含信息时,表示登录成功;若无数据,则需持续轮询直至登录成功或确认失败为止。
对于新设备首次登录的情况,平台将在次日凌晨主动断开连接一次。用户需重新触发登录流程,并在调用接口时传入appId以重新获取二维码。成功登录后即可保持长期在线状态。
建议在登录成功后妥善保存appId与wxid之间的对应关系,后续接口调用将依赖此映射信息。
iPad首次登录场景处理
若出现“新设备验证”且未提供数字验证码:
- 接口将返回一个二维码链接。
- 开发者需使用iOS设备下载安盾APP,并通过其扫描二维码进行人脸识别验证。
- 验证通过后,在手机端点击确认,再次调用本接口即可获取登录结果。
- 如未完成人脸认证,建议切换至Mac登录流程继续操作。
若出现“新设备验证”并附带数字验证码:
- 直接在请求参数的captchCode字段中填入收到的验证码即可继续登录流程。
Mac首次登录场景处理
若触发新设备验证:
- 可选择开启自动验证模式(autoSliding=true),无需额外下载APP即可完成验证。
- 若关闭自动验证(autoSliding=false),接口将返回一个验证URL。
- 开发者需将该URL生成二维码,并使用安卓设备下载指定APP进行扫码图形验证。
- 验证完成后,继续调用本接口即可通过新设备校验。
对于已有自有平台App的开发者,支持代码级接入验证逻辑,无需引导用户下载第三方应用。
<Frame caption="Mac登录流程图,不清楚流程必看">
请求参数(Body)
{
"appId": "",
"proxyIp": "",
"uuid": "",
"autoSliding": "true"
}
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 认证令牌 |
| body | body | object | 否 | 请求体对象 |
| appId | body | string | 是 | 设备唯一标识ID |
| proxyIp | body | string | 否 | 代理IP地址,格式示例:socks5://username:password@123.2.2.2 |
| uuid | body | string | 是 | 从获取二维码接口返回的uuid值 |
| captchCode | body | string | 否 | 扫码后手机提示输入的数字验证码;若无提示可不传 |
| autoSliding | body | boolean | 是 | 是否启用自动验证:true/false。仅Mac有效。iPad登录时必须设为false |
成功响应示例(HTTP 200)
{
"ret": 0,
"msg": "string",
"data": {
"uuid": "string",
"headImgUrl": "string",
"nickName": "string",
"expiredTime": 0,
"status": 0,
"loginInfo": {
"uin": 0,
"wxid": "string",
"nickName": "string",
"mobile": "string",
"alias": "string"
}
}
}
返回结果说明
| 状态码 | 含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 请求成功 | Inline |
响应数据结构(状态码 200)
| 字段名 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| ret | integer | true | none | 返回码 | 状态标识,0表示成功 |
| msg | string | true | none | 消息提示 | 返回描述信息 |
| data | object | true | none | 响应数据 | 包含登录相关信息的对象 |
| uuid | string | true | none | 二维码UUID | 用于标识当前二维码会话 |
| headImgUrl | string | true | none | 头像地址 | 用户头像链接 |
| nickName | string | true | none | 昵称 | 用户显示名称 |
| expiredTime | integer | true | none | 过期时间 | 二维码失效时间戳 |
| status | integer | true | none | 登录状态 | 0:未扫码;1:已扫码未登录;2:登录成功;4:已扫码但取消登录 |
| loginInfo | object | true | none | 登录信息 | 登录成功后返回的具体数据 |
| uin | integer | true | none | 用户编号 | 系统内部用户标识 |
| wxid | string | true | none | 微信ID | 存在此值代表登录成功 |
| nickName | string | true | none | 昵称 | 用户昵称 |
| mobile | string | true | none | 手机号 | 绑定的手机号码 |
| alias | string | true | none | 微信号 | 用户的微信账号别名 |
弹窗登录接口
POST /login/dialogLogin
调用此接口后,用户的手机端将弹出确认登录页面。用户点击“确认”后,需立即调用执行登录接口,并持续检测登录状态是否成功。
地区编码格式说明:地区ID在前,地区名称在后,以星号分隔,多项之间使用竖线分隔。例如:
110000*北京市|120000*天津市|130000*河北省|140000*山西省|150000*内蒙古
地区代码对照表如下:
- 210000*辽宁省 | 220000*吉林省 | 230000*黑龙江省
- 310000*上海市 | 320000*江苏省 | 330000*浙江省 | 340000*安徽省 | 350000*福建省 | 360000*江西省 | 370000*山东省
- 410000*河南省 | 420000*湖北省 | 430000*湖南省 | 440000*广东省 | 450000*广西省 | 460000*海南省
- 500000*重庆市 | 510000*四川省 | 520000*贵州省 | 530000*云南省 | 540000*西藏自治区
- 610000*陕西省 | 620000*甘肃省 | 630000*青海省 | 640000*宁夏自治区 | 650000*新疆自治区
若当前支持的 regionId 中未包含您所在的地区,可自行采购 socks5 协议代理 IP,并填写至 proxyIp 参数中。
使用本接口登录并非保证 100% 成功。当接口返回失败时,可通过扫码方式进行登录作为替代方案。
以下情况将导致无法通过该接口完成登录:
- 在手机端主动点击退出登录
- 在新设备上登录后的次日
- 因官方风控机制导致账号被强制下线
POST 登录
请求地址:/login
Body 请求参数示例:
{
"appId": "wx_wR_U4zPj2M_OTS3BCyoE4",
"proxyIp": "",
"regionId": "320000"
}
请求参数说明:
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 认证令牌 |
| body | body | object | 否 | 请求体对象 |
| ? appId | body | string | 是 | 设备ID |
| ? proxyIp | body | string | 是 | 代理IP,格式为:socks5://username:password@123.2.2.2 |
| ? regionId | body | string | 是 | 地区代码 |
成功响应示例(200 Response):
{
"ret": 0,
"msg": "string",
"data": {
"appId": "string",
"uuid": "string"
}
}
返回结果说明:
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 请求成功 | Inline |
返回数据结构(状态码 200):
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| ? ret | integer | true | none | 返回码 | 操作状态码 |
| ? msg | string | true | none | 提示信息 | 返回消息描述 |
| ? data | object | true | none | 响应数据 | 包含具体响应内容 |
| ?? appId | string | true | none | 设备ID | 设备唯一标识 |
| ?? uuid | string | true | none | 二维码uuid | 用于执行登录流程中的二维码识别 |
POST 退出登录
请求地址:/login/logout
说明:可仅填写 appId,或按照完整示例传参。
Body 请求参数示例:
{
"appId": "",
"proxyIp": "",
"regionId": "88"
}
请求参数说明:
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 认证令牌 |
| body | body | object | 否 | 请求体对象 |
| ? appId | body | string | 是 | 设备ID |
成功响应示例(200 Response):
{
"ret": 200,
"msg": "操作成功"
}
返回结果说明:
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 请求成功 | Inline |
返回数据结构(状态码 200):
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| ? ret | integer | true | none | 返回码 | 操作状态码 |
| ? msg | string | true | none | 提示信息 | 返回的消息描述 |
POST 检查是否在线
请求地址:/login/checkOnline
说明:响应中的 data 字段为 true 表示账号在线,false 则表示离线。
Body 请求参数示例:
{
"appId": "{{appid}}"
}
请求参数说明:
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 认证令牌 |
| body | body | object | 否 | 请求体对象 |
| ? appId | body | string | 是 | 设备ID |
成功响应示例(200 Response):
{
"ret": 200,
"msg": "操作成功",
"data": true
}
返回结果说明:
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 请求成功 | Inline |
返回数据结构(状态码 200):
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| ? ret | integer | true | none | 返回码 | 操作状态码 |
| ? msg | string | true | none | 提示信息 | 返回的消息描述 |
| ? data | boolean | true | none | 在线状态 | 布尔值,true为在线,false为离线 |
POST 异常断线重连
请求地址:/login/reconnection
适用场景:账号显示在线,但无法接收到回调通知时,可调用此接口尝试恢复连接。
Body 请求参数示例:
{
"appId": ""
}
请求参数说明:
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 认证令牌 |
| body | body | object | 否 | 请求体对象 |
| ? appId | body | string | 是 | 设备ID |
成功响应示例(200 Response):
{
"ret": 200,
"msg": "操作成功",
"data": true
}
返回结果说明:
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 请求成功 | Inline |
返回数据结构(状态码 200):
| 名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| ? ret | integer | true | none | 返回码 | 操作状态码 |
| ? msg | string | true | none | 提示信息 | 返回的消息描述 |
| ? data | boolean | true | none | 重连结果 | 布尔值,true表示重连成功 |
无感切换代理IP功能说明
通过 POST 请求可实现账号在不中断服务的情况下更换代理IP,达到在线无缝切换的效果。此外,也可选择退出后重新登录并传入新的代理IP信息以完成更新。
请求地址:
POST /login/setProxy
请求参数详情
Body 参数结构:
{
"appId": "{{appid}}",
"proxyIp": "socks5://x:x@111.153.185.21:11332"
}
参数说明:
| 参数名称 | 位置 | 类型 | 是否必选 | 说明 |
|---|---|---|---|---|
| VideosApi-token | header | string | 是 | 认证令牌 |
| body | body | object | 否 | 请求体对象 |
| appId | body | string | 是 | 设备唯一标识ID |
| proxyIp | body | string | 是 | 代理IP地址,格式支持如 socks5://用户名:密码@IP:端口 |
返回结果示例(状态码 200)
{
"ret": 0,
"msg": "string"
}
响应状态码说明
| 状态码 | 含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | 请求成功 | Inline |
返回数据结构(状态码 200)
| 字段名 | 类型 | 必选 | 约束 | 中文名 | 说明 |
|---|---|---|---|---|---|
| ret | integer | true | none | 返回码 | 操作结果标识,0 表示成功 |
| msg | string | true | none | 消息提示 | 返回的描述信息 |


雷达卡


京公网安备 11010802022788号







