第三方飞信抓包分析和实现
作者:linger
源代码地址:http://vdisk.weibo.com/s/9B45G
另一篇《第三方飞信设计思路(php实现)》http://blog.csdn.net/linger2012liu/article/details/7799420
用curl实现get或者post方法,用simplehtmldom这个第三方写的php类来解析html文件。
登陆:
$postData = array(
'm'=>$m,
'pass'=> $pass,
'checkCode'=>$checkCode,
'codeKey'=>$codeKey
);
do{
$curl=
curl_init('http://f.10086.cn/im5/login/loginHtml5.action');//登录post
//curl_init('http://f.10086.cn/im5/login/cklogin.action');
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//curl_exec返回的字符串而不是简单的true false
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,$postData);//竟然真的去掉http_build_query就可以了
$result= curl_exec($curl);
//print_r($result);//结果输出
curl_close($curl);
}while($result== false);
-------------------------------------------------------------------------------------------------------------------------------
--
获取首页信息(包含小组信息):
do
{
$curl=
curl_init('http://f.10086.cn/im5/index/html5.action');//get获取首页信息
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$result= curl_exec($curl);
curl_close($curl);
}while($result == false);
-------------------------------------------------------------------------------------------------------------------------------
获取好友信息,循环实现,每次获取一组的好友信息:
$url = 'http://f.10086.cn/im5/index/contactlistView.action?fromUrl=&idContactList='.$id;
do{
$curl=
curl_init($url);//分组好友信息获取
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$result= curl_exec($curl);
curl_close($curl);
} while($result == false);
-------------------------------------------------------------------------------------------------------------------------------
获取csrfToken:
//Get方法获得csrfToken码
$url ='http://f.10086.cn/im5/chat/toChatMsg.action?touserid=' . $touserid .'&html5Url=toChat';
do
{
$curl =
curl_init($url);
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$result =curl_exec($curl);
curl_close($curl);
}while($result == false);
//echo $result;
$html =str_get_html($result);
$input = $html ->find('input[name=csrfToken]');//返回的是一个数组
$csrfToken =$input[0]->value;
-------------------------------------------------------------------------------------------------------------------------------
发送飞信:
//post方法发送消息
$postData = array(
'touserid'=>$touserid,
'msg' => $msg,
'csrfToken' =>$csrfToken
);
do{
$curl=
curl_init('http://f.10086.cn/im5/chat/sendNewMsg.action');
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_COOKIEFILE,$cookie);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,$postData);
$result =curl_exec($curl);
//这里记一下流水
curl_close($curl);
}while($result ==false);
-------------------------------------------------------------------------------------------------------------------------------
我的技术博客:http://linger.devhub.com/blog/925118-blog-post/