利用CURL抓取3GQQ的网页实现的。
这里只是简单实现了功能,可以修改代码实现更多可能。
如:定时发送消息、机器人客服等高级功能。
展示代码,分两个步骤完成。

第一步:登录获取sid,有sid是发送消息的前提。

//发送方QQ账号和密码
$qq  = '';
$pwd = '';
//准备要POST数据
$data = array(
    'qq'            => $qq,
    'pwd'           => $pwd,
    'bid_code'      => '3GQQ',
    'toQQchat'      => true,
    'login_url'     => 'http://pt.3g.qq.com/s?aid=nLoginnew&q_from=3GQQ',
    'q_from'        => '',
    'modifySKey'    => 0,
    'loginType:'    => 1,
    'aid'           => 'nLoginHandle',
    'i_p_w'         => 'qq|pwd|',
);
//开始CURL模拟登录
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://pt.3g.qq.com/psw3gqqLogin');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
$file = curl_exec($ch);
curl_close($ch);
//分析登录是否成功
preg_match('%sid=(.*?)&%si',$file,$sid);
$sid = $sid[1];
if($sid){
    echo '登陆成功!'.$sid;
}else{
    echo '登陆失败!请检查用户名和密码是否正确!';
    exit();
}

获取到sid后就可以发送消息了。
第二步:发送消息,利用上一步获取到的sid。

$sid='';
$qq   = "909047801";
$text = "你好,豆豆!";
//准备要POST的数据
$data = array(
    'u'         => $qq,
    'saveUrl'   => 0,
    'do'        => 'send',
    'on'        => 1,
    'aid'       => '发送',
    'msg'       => $text,
);
//开始CURL模拟发送
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://q16.3g.qq.com/g/s?sid=' . $sid);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
$file = curl_exec($ch);
curl_close($ch);
//分析发送是否成功
preg_match('%

(.*?) %si',$file,$callback); $callback = $callback[1]; echo $callback;