用于 QQ 机器人对接,覆盖从登录到设置的完整流程 · 独立 API 入口 api.php
接口地址:
请求方式:支持 POST 和 GET(参数优先读取 POST,其次 GET;cookie 内容较长且含特殊字符,强烈建议用 POST)
统一返回格式(JSON):
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 状态码,0 表示成功,-1 表示失败 |
msg | string | 状态说明,成功为 success,失败为具体错误原因 |
data | object/null | 返回数据,失败时为 null |
act 参数区分动作:api.php?act=动作名工具网复用 QQ 的登录凭证(cookie)来调用腾讯接口。不同功能需要不同类型的 cookie:
| 登录类型 | 关键字段 | 适用接口 |
|---|---|---|
qzone(QQ空间) | p_skey、uin | setnick(改昵称)、friendlist(好友)、shuoshuolist(说说)、login(验证) |
vip(QQ会员) | skey、pt4_token、uin | setmodel(自定义机型)、getisvip(查VIP) |
qun(QQ群) | skey、uin | grouplist、groupmembers、announcelist、delannounce、dismissgroup、getjoinlink |
getqrpic + qrlogin 扫码登录获取(登录成功后返回完整 cookie),或由机器人端已登录的 QQ 直接提供。获取 QQ 扫码登录二维码,返回 base64 图片和 qrsig 会话标识。
GETPOSTact=getqrpic
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
act | string | 是 | 固定值 getqrpic |
type | string | 否 | 登录类型:qzone(默认)/ vip / qun / qqid |
请求示例
GET https://你的域名/api.php?act=getqrpic&type=vip
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 成功,-1 失败 |
msg | string | 状态说明 |
data.qrsig | string | 二维码会话标识,轮询登录时需回传 |
data.data | string | 二维码图片的 base64 编码(机器人可解码后展示给用户扫码) |
data.type | string | 登录类型 |
返回示例
{
"code": 0,
"msg": "success",
"data": {
"qrsig": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"data": "iVBORw0KGgoAAAANSUhEUg...(base64 图片)",
"type": "vip"
}
}
用户扫码后,轮询此接口获取登录结果。成功时返回 QQ 号和完整 cookie。
GETPOSTact=qrlogin
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
act | string | 是 | 固定值 qrlogin |
type | string | 是 | 与获取二维码时一致的登录类型 |
qrsig | string | 是 | 获取二维码时返回的 qrsig |
请求示例
GET https://你的域名/api.php?act=qrlogin&type=vip&qrsig=xxxxxxxx
返回参数(登录成功)
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 成功 |
msg | string | 登录成功时为 登录成功 |
data.uin | string | 登录的 QQ 号 |
data.cookie | string | 完整登录 cookie(含 skey / p_skey / pt4_token 等,后续接口需用到) |
data.nickname | string | QQ 昵称 |
data.type | string | 登录类型 |
返回参数(等待中)
| data.status | 说明 |
|---|---|
waiting | 未扫码 / 未确认,继续轮询 |
verifying | 正在验证,继续轮询 |
expired | 二维码已失效,需重新获取二维码 |
返回示例(登录成功)
{
"code": 0,
"msg": "登录成功",
"data": {
"uin": "123456789",
"cookie": "uin=o0123456789; skey=@xxxxxxx; p_skey=xxxxxxxx; pt4_token=xxxx; ...",
"nickname": "小辞",
"type": "vip"
}
}
返回示例(等待扫码)
{
"code": 0,
"msg": "waiting",
"data": { "status": "waiting" }
}
验证 QQ 号和 cookie 是否有效(通过拉取好友列表探测)。
GETPOSTact=login
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
act | string | 是 | 固定值 login |
qq | string | 是 | QQ 号 |
cookie | string | 是 | qzone 类型 cookie(含 p_skey) |
请求示例
POST https://你的域名/api.php
Content-Type: application/x-www-form-urlencoded
act=login&qq=123456789&cookie=uin=o0123456789; p_skey=xxxxxxxx; ...
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 凭证有效,-1 凭证失效/错误 |
data.qq | string | 验证的 QQ 号 |
返回示例
{
"code": 0,
"msg": "凭证有效",
"data": { "qq": "123456789" }
}
修改指定 QQ 账号的昵称(复用 qzone cookie 的 p_skey)。
GETPOSTact=setnick
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
act | string | 是 | 固定值 setnick |
qq | string | 是 | 要修改昵称的 QQ 号 |
cookie | string | 是 | qzone 类型 cookie(含 p_skey) |
nickname | string | 是 | 新昵称内容 |
请求示例
POST https://你的域名/api.php
Content-Type: application/x-www-form-urlencoded
act=setnick&qq=123456789&cookie=uin=o0123456789; p_skey=xxxxxxxx; ...&nickname=我的新昵称
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 修改成功,-1 失败 |
data.nickname | string | 已设置的昵称 |
返回示例
{
"code": 0,
"msg": "修改成功",
"data": { "nickname": "我的新昵称" }
}
自定义 QQ 在线状态设备名(需 vip 类型 cookie,含 skey + pt4_token)。
GETPOSTact=setmodel
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
act | string | 是 | 固定值 setmodel |
qq | string | 是 | QQ 号 |
cookie | string | 是 | vip 类型 cookie(含 skey、pt4_token) |
model | string | 是 | 机型名称,如 iPhone 16 Pro Max |
imei | string | 是 | 设备 IMEI(安卓为 androidID,iPhone 为 msf_identifier) |
desc | string | 否 | 自定义前缀描述,可为空 |
请求示例
POST https://你的域名/api.php
Content-Type: application/x-www-form-urlencoded
act=setmodel&qq=123456789&cookie=uin=o0123456789; skey=@xxxxx; pt4_token=xxxx; ...&model=iPhone 16 Pro Max&imei=askle79087446&desc=
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 修改成功,-1 失败 |
data.model | string | 已设置的机型名称 |
返回示例
{
"code": 0,
"msg": "修改成功",
"data": { "model": "iPhone 16 Pro Max" }
}
act=friendlist 参数:qq(必填)、cookie(必填,qzone 类型)
请求示例
POST https://你的域名/api.php
act=friendlist&qq=123456789&cookie=uin=o0123456789; p_skey=xxxx; ...
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data.list | array | 好友列表(uin、nick、remark、groupid) |
data.gpnames | array | 好友分组名称 |
返回示例
{
"code": 0,
"msg": "success",
"data": {
"list": [ { "uin": "987654321", "nick": "好友A", "remark": "", "groupid": 0 } ],
"gpnames": [ { "gpid": 0, "gpname": "我的好友" } ]
}
}
act=shuoshuolist 参数:qq(必填)、cookie(必填,qzone 类型)、count(可选,默认 20)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data | array | 说说动态列表(vFeeds) |
act=getisvip 参数:cookie(必填,vip 类型,含 skey)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data.is_vip | int | 是否 QQ 会员,1 是 / 0 否 |
返回示例
{ "code": 0, "msg": "success", "data": { "is_vip": 1 } }
act=grouplist 参数:qq(必填)、cookie(必填,qun 类型,含 skey)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data | array | 群列表(含 gc、gn 群号群名等) |
act=groupmembers 参数:cookie(必填,qun 类型)、groupid(必填)、start(可选,默认 0)、end(可选,默认 20)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data.count | int | 群成员总数 |
data.mems | array | 本页成员列表 |
data.start | int | 下一页起始位置(0 表示已取完) |
act=announcelist 参数:cookie(必填,qun 类型)、groupid(必填)、start(可选,默认 0)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data[] | array | 公告列表,每项含 fid(公告ID)、uin、nick、time、msg |
act=delannounce 参数:cookie(必填)、groupid(必填)、fid(必填,公告ID)
返回示例
{ "code": 0, "msg": "删除成功", "data": null }
act=dismissgroup 参数:qq(必填)、cookie(必填,qun 类型)、groupid(必填)
返回示例
{ "code": 0, "msg": "解散成功", "data": null }
act=getjoinlink 参数:cookie(必填,qun 类型)、groupid(必填)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data | string | 加群链接 |
返回示例
{ "code": 0, "msg": "success", "data": "https://qm.qq.com/q/xxxxx" }
查询 QQ 等级(走第三方接口,需在 api.php 顶部配置 $QQLEVEL_API_URL / $QQLEVEL_API_KEY 或 $YAPI_TOKEN)。
act=qqlevel 参数:qq(必填)
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
data.sNickName | string | QQ 昵称 |
data.iQQLevel | int | QQ 等级 |
data.iTotalActiveDay | int | 注册时长(天) |
data.iNextLevelDay | int | 下次升级天数 |
| code | 说明 |
|---|---|
0 | 成功 |
-1 | 失败,具体原因见 msg 字段 |