WebQQ腾讯公司推出的使用网页方式上QQ的服务,特点是无需下载和安装QQ软件,只要能打开WebQQ的网站就可以登录QQ与好友保持联系。官网首页 : http://w.qq.com/
smartqq-sdk-php
是对smartqq接口的基础封装。只是把一些处理类分离出sdk的代码层。让用户去实现具体的操作接口。更利代码的解耦。原理其实很简单,就是跨站请求伪造(CSRF), 伪造请求头,调用smartqq官方API。
注:请善待smartqq协议。希望不要因为肆意发送的广告而让此协议突然在某一天不复存在。因为现在的它已经很脆弱了,还web协议一片净土。虽然现在没人用web的协议了,都去用PC,安卓协议。虽然我也在用 溜
- 获取二维码
- 获取二维码验证状态
- 获取vfwebqq
- 二次登录
- 接收消息事件
- 发送好友消息
- 发送群消息
- 获取讨论组消息
- 获取好友列表(uin)
- 获取好友在线状态
- 获取最近联系人列表
- 获取群列表(gid)
- 获取讨论组列表(did)
- 获取个人信息
- 获取好友详细信息
- 获取群详细信息(包括 群成员 群信息)
- 获取讨论组详细信息(包括 讨论组成员 讨论组信息)
- 获取讨论组详细信息
- 获取SingleLongNick
composer require kilingzhang/smartqq-sdk-php
<?php
use kilingzhang\SmartQQ\QQClient;
use kilingzhang\SmartQQ\Entity\ClientToken;
include __DIR__ . '/vendor/autoload.php';
//初始化QQClient,后续讲基于此会话调用各种方法
$QQ = new QQClient();
//设置二维码保存路径
$QQ->setQRCodePath('./qrcode.png');
//初始化用户登录令牌
$clientToken = new ClientToken();
//判断令牌是否为空(有无缓存登录状态)
if ($clientToken->isEmpty()) {
//第一次登录
$QQ->refreshQRCode();
//验证二维码状态
if ($QQ->QRlogin()) {
//二次登陆
$QQ->Login();
//讲用户登录状态信息转换为登录令牌
$clientToken = $QQ->getClienToken();
//保存登录令牌
$clientToken->save();
}
} else {
//获取已缓存的用户登录令牌
$clientToken = ClientToken::toClientToken($clientToken->getClientTokenJson());
//根据令牌设置用户会话
$QQ->setClienToken($clientToken);
}
// 专门作为测试使用 内置了一次的Poll事件
$QQ->test();
基于smartqq-sdk-php 写的一个小Demo。完成了samrtqq中的所有基本事件操作。算是个入门的demo。后续我会基于此sdk更新一个QQ机器人完整的项目。把之前的SmartQQRobotByPHP重写一遍。
当初抱着对QQ机器人的热情,最先接触也是新手最有可能实现的就是Smartqq的协议。但是当时感觉无从下手,网上的资料又老又不详细还不是PHP。所以想着给后来的Phper一个入门的机会。节省很多宝贵的时间。不要像我自己一样兜兜转转的绕圈子。而且个人觉得如果把Smartqq从抓包到分析协议整个流程搞明白,基本大部分web的爬虫抓包分析就没有问题了,剩下的就是熟练。所以也可以当做是一个爬虫分析的入门教程。文章还在更新中。。。
retcode = 103 同一IP禁止多账号登录。 出现此状态码说明你的IP中存在多账号登录。此时只需要去官方地址的把账号注销掉就好了。 登录 http://w.qq.com/ 再从从设置中退出登录状态
retcode = 1202
灵感来自@ScienJus大大的文章。一年前我的入门就是从这位大大这里开始的。给了我进入QQ机器人大门的入场卷。当时大大还只有Ruby和java的版本。我就自己写了Python的版本。后来自己又写了PHP的版本,协议改变,到自己再更新协议。自此也有了这个项目和上文的教程,也算是尽自己的一点点贡献吧。不过最后因为太不稳定就转战去玩PC安卓协议的机器人了。溜