利用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;