最近用Python写了个Fetion的库

上周大部分的时间在写这个东西,现在基本上实现了我所需要的功能,网上有一些Fetion的实现,不过都比较凑合,也有一个叫LibFetion的东西,不过不开放源代码,所以就自己写了这个PyFetion的库。

目前这个库有以下功能

  • 支持飞信2006,2008协议(其实就是分别使用MD5、SHA1算法进行登录认证);
  • 支持HTTP、TCP方式;
  • 支持给自己手机发短信(这个也是我的主要目的);
  • 支持直接发送信息到指定手机号(前提是加为好友,好处是直接使用手机号,而不需要知道飞信号);
  • 支持添加好友
  • …….
  • 在设计好整个框架以后,再有一些功能添加进来也就比较方便了

    特点

  • 纯Python代码,可以运行到任何地方,只要有Python的地方就有fetion;
  • 封装程度比较高,使用方便;
  • 好的,吹完了。本来还想把这个写成一个完整的飞信客户端,但是觉得没什么必要,已经有Pidgin自带的飞信插件,还有个不开源的LibFetion我再写一个就没什么意义了,而且我这个PyFetion的定位本来也不是做完整的客户端。何况写GUI的程序我想把界面做得漂亮些,我现在也没什么做GUI的经验,wxPython也用的不熟。我还有个想法就是用SDL(Pygame)之类的做一个很炫的客户端,不过这肯定得花不少的时间,最近公司可能要开始忙了,这些还是先放一放吧。

    刚公司开了两个多小时会,这会儿都下班好久了,今天就到此结束吧。

    This entry was posted in Python, 编程相关 and tagged , , . Bookmark the permalink.

    17 Responses to 最近用Python写了个Fetion的库

    1. Solrex Yang says:

      不错不错
      只是为什么没有开放下载呀

    2. luguo says:

      好,不过fetion协议你怎么知道的?貌似不是公开的吧?

    3. 可可熊 says:

      因为还有后续的东西要做,所以暂时还不想公开,希望弄得完整一些。
      fetion的协议其实比较“公开”,网上有一些分析的资料。

    4. 草儿 says:

      如果只是实现了目前的进度,按照你的设想来说只是打下了基础,就看后续你做到什么时候了。

      PS:飞信加为好友之后,不管是手机号还是飞信号,只要知道一个就可以发送短信的。没必要非得给手机号发啊,可能我不太理解你的意思。

    5. 可可熊 says:

      我的意思是你大部时间是记得别人的手机号,而不是飞信号,所以直接以 “send 手机号 内容” 的方式发短信更方便,其实程序真正发送的时候是飞信号。

    6. kongove says:

      期待看到源代码。

    7. lanzhu says:

      楼主你好,你写的文章太好了,我最近也在研究sip方面的协议 但是都是略微知道点 实际开发的时候 有点摸不着头绪 所以能烦请你能给我详细描述下你的设计方案么 谢谢 最好是能将你的代码写玩后给我作下参考 谢谢了 我的邮箱是lazypig01@gmail.com

    8. 可可熊 says:

      我对sip也仅仅是了解一点,这个库也只是实现很简单的一些东西,也没有什么设计方案,就是对抓包信息自己组装一下,看来我是帮不到你的。
      :-)

    9. fishman says:

      一直期望有个python版的飞信,没想到您已经做到了,Great Work!
      个人觉得GUI意义不大,就像您一样能给自己发短信就帮助很大了!
      期望能早日看到pyfetion发布,可能的话一起除bug!

    10. Pingback: 可可熊的窝 » Blog Archive » PyFetion发布

    11. aadebuger says:

      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
      我没测试过你的程序,接收能用吗?

    12. 可可熊 says:

      我就是在Linux写的,超时这个没考虑过,俺只测试正常的网络情况。
      接收当然是可以的,需要使用TCP连接方式,只是没写代码。
      HTTP方式不知道可不可以接收,不太清楚。

    13. IDisposable says:

      可可熊你好,你的pyfetion代码哪里可以下载?谢谢!

    14. aegiryy says:

      可可兄,如何做到一个实时交互呢?譬如我可以发送到别人电脑登录的飞信而不是手机,而也可以别人发回来的?

    15. cocobear says:

      send_msg就是发送到PC端;
      没太明白你指的交互

    16. 森动 says:

      你好,我下载了PyFetion0.3,然后输入正确的手机号和密码,但是/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLD。。。。。网络通信出错 请检查网络连接
      请问应该怎么解决

    Leave a Reply

    Your email address will not be published.

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>