您的位置:首页 > 运维架构 > Apache

第三方飞信设计思路

2012-07-29 17:27 127 查看
                                   第三方飞信设计思路(php实现)

作者:linger

另一篇:《第三方飞信抓包分析和实现》http://blog.csdn.net/linger2012liu/article/details/7799406

       貌似在大二的时候就想做一个,当时找到一个叫可可熊的网友用python写的版本,甚是佩服。不过当时发现飞信有个不足之处,为毛不能群发短信,自动添加收信者的姓名呢,如果可以,那么短信就看起来不是群发的了。当时研究了一下,发现PC版本的飞信的通信协议还是挺复杂的,加上自己计算机网络都没学好,去逆向飞信的协议,谈何容易。于是停下来了,没有弄。后来,就是最近,发现有人分析手机版的飞信http://blog.quanhz.com/archives/118。手机版的飞信就简单很多了,就是http协议。不过人家是很久之前分析的,现在已不能使用了。那哥们写的时候,还不用输入验证码,飞信当时也没有防止跨域提交,所以要自己重新分析。现在连域名都变了,http://f.10086.cn/im5/login/login.action这个为登陆页面。

       这里是源代码下载地址:http://vdisk.weibo.com/s/9B45G

       使用环境需求:浏览器,apache服务器+PHP。由于我用了php的curl库,而curl默认是关闭使用的,所以要启用curl才能运行代码。具体怎么做,可以google之或者baidu之。本来想直接用socket的,但socket太底层,需要自己动手处理cookie,后来发现curl对socket封装了一下,更方便使用。

       有兴趣可以到这里体验以下:http://anglea.sinaapp.com/fetion/login.php

       读者如果有兴趣可以改写或者重写一个,在我看来,我的这个版本存在以下问题:

              1用户体验,可以把界面写好看点,可以添加一次性选一组好友的功能

              2响应较久,特别是登陆的时候,网络编程学得不太好,不会处理

              3不能多人同时使用,因为飞信登陆后的cookie信息存在apache服务器上的cookie.txt,而我没有为不同的请求重新生成一个保存cookie信息的文件

       我实现的群发短息自动带收信人姓名,其实是这样子的,重复发送短信,每个人的发飞信的请求是分开的。

       以下是所谓的sequence diagram。不知道画得对不对,不过看了至少知道整个通信的逻辑过程。

 


 

以下是文字说明:

Login.php页面html表单提交登陆信息给 index.php

       于是页面会跳转到index.php这一页

 

       index.php接受到登陆信息

       跟飞信服务端通信

       登陆(post)

       获取好友信息(get)

       把这些好友信息通过html代码分组打印出来

 

       每一组的格式这样子:

       组名

       好友备注名

       好友touserid(这个隐藏)

      

       用户通过checkbox选择要发送信息好友的对象

 

       通过ajax把好友的touserid和备注名,信息内容发给proxy.Php这一页

      

       proxy.Php通过get方法,获取csrfToken码

       再通过post方法发短信

我的技术博客:http://linger.devhub.com/blog/925120-php/

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息