上周大部分的时间在写这个东西,现在基本上实现了我所需要的功能,网上有一些Fetion的实现,不过都比较凑合,也有一个叫LibFetion的东西,不过不开放源代码,所以就自己写了这个PyFetion的库。
目前这个库有以下功能:
- 支持飞信2006,2008协议(其实就是分别使用MD5、SHA1算法进行登录认证);
- 支持HTTP、TCP方式;
- 支持给自己手机发短信(这个也是我的主要目的);
- 支持直接发送信息到指定手机号(前提是加为好友,好处是直接使用手机号,而不需要知道飞信号);
- 支持添加好友
- …….
在设计好整个框架以后,再有一些功能添加进来也就比较方便了
特点:
- 纯Python代码,可以运行到任何地方,只要有Python的地方就有fetion;
- 封装程度比较高,使用方便;
好的,吹完了。本来还想把这个写成一个完整的飞信客户端,但是觉得没什么必要,已经有Pidgin自带的飞信插件,还有个不开源的LibFetion我再写一个就没什么意义了,而且我这个PyFetion的定位本来也不是做完整的客户端。何况写GUI的程序我想把界面做得漂亮些,我现在也没什么做GUI的经验,wxPython也用的不熟。我还有个想法就是用SDL(Pygame)之类的做一个很炫的客户端,不过这肯定得花不少的时间,最近公司可能要开始忙了,这些还是先放一放吧。
刚公司开了两个多小时会,这会儿都下班好久了,今天就到此结束吧。
Comments
可可熊: 因为还有后续的东西要做,所以暂时还不想公开,希望弄得完整一些。 fetion的协议其实比较“公开”,网上有一些分析的资料。
草儿: 如果只是实现了目前的进度,按照你的设想来说只是打下了基础,就看后续你做到什么时候了。 PS:飞信加为好友之后,不管是手机号还是飞信号,只要知道一个就可以发送短信的。没必要非得给手机号发啊,可能我不太理解你的意思。
Solrex Yang: 不错不错 只是为什么没有开放下载呀
luguo: 好,不过fetion协议你怎么知道的?貌似不是公开的吧?
lanzhu: 楼主你好,你写的文章太好了,我最近也在研究sip方面的协议 但是都是略微知道点 实际开发的时候 有点摸不着头绪 所以能烦请你能给我详细描述下你的设计方案么 谢谢 最好是能将你的代码写玩后给我作下参考 谢谢了 我的邮箱是lazypig01@gmail.com
fishman: 一直期望有个python版的飞信,没想到您已经做到了,Great Work! 个人觉得GUI意义不大,就像您一样能给自己发短信就帮助很大了! 期望能早日看到pyfetion发布,可能的话一起除bug!
可可熊: 我的意思是你大部时间是记得别人的手机号,而不是飞信号,所以直接以 “send 手机号 内容” 的方式发短信更方便,其实程序真正发送的时候是飞信号。
kongove: 期待看到源代码。
可可熊: 我对sip也仅仅是了解一点,这个库也只是实现很简单的一些东西,也没有什么设计方案,就是对抓包信息自己组装一下,看来我是帮不到你的。 :-)
可可熊: 我就是在Linux写的,超时这个没考虑过,俺只测试正常的网络情况。 接收当然是可以的,需要使用TCP连接方式,只是没写代码。 HTTP方式不知道可不可以接收,不太清楚。
aadebuger: 1.测试,还不错. 2.不过,有几个问题.timeout,没处理,还有recv 没检查长度,我放到linux 上有点问题,后来我就乱改了一下。 def tcp_recv(self): totaldata=’’ try: while 1: data = self.sock.recv(4096) # print ‘data============’ # print data totaldata = totaldata + data if data.rfind(‘</results’)!=-1: break; if data.rfind(‘Digest’)!=-1: break; if data.rfind(‘XI:’)!=-1: break; except socket.error,e: self.__sock.close() print e.read() sys.exit(-1) return totaldata 我没测试过你的程序,接收能用吗?
IDisposable: 可可熊你好,你的pyfetion代码哪里可以下载?谢谢!
cocobear: send_msg就是发送到PC端; 没太明白你指的交互
aegiryy: 可可兄,如何做到一个实时交互呢?譬如我可以发送到别人电脑登录的飞信而不是手机,而也可以别人发回来的?
森动: 你好,我下载了PyFetion0.3,然后输入正确的手机号和密码,但是/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLD。。。。。网络通信出错 请检查网络连接 请问应该怎么解决
可可熊: 已经更新 2008的协议还是可以用的 http://cocobear.github.io/2010/09/16/update-pyfetion-2/