第三方飞信设计思路
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/
作者: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/
相关文章推荐
- 如何编写一个第三方框架,我的设计思路及看法
- 解读Android 4.0 Camera原生应用程序的设计思路
- 设计一个高并发IM即时通讯软件的思路要点
- 走火入魔通用权限管理之权限设计入门整体思路图解
- 让灵感落地!4种帮助设计师整理设计思路的方法
- 微信小程序:设计思路
- 用户角色权限设计思路
- 蛇形矩阵的打印;开拓思路与设计方法的面试题;编程技巧比较巧妙;转自CSDN论坛;
- “评论盖楼”的设计思路
- 网上考试设计思路是怎样的?
- 浅谈CMS标签设计思路
- EventStore的设计思路
- 第三方支付架构设计之:商户回调通知系统的悲观和乐观策略
- 跨平台的个人知识管理工具设计思路
- Hybrid APP架构设计思路
- [原创] jQuery源码分析-04 选择器-Sizzle-设计思路
- 一个高性能交互式查询与分析引擎的设计思路
- 一个“解决一个第三方应用一个功能打不开的问题”思路。
- 站内信数据库设计思路
- 对积分业务,表设计过程的思路分享