最近用Python写了个Fetion的库

上周大部分的时间在写这个东西,现在基本上实现了我所需要的功能,网上有一些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/

坚持原创技术分享,您的支持将鼓励我继续创作!