PylinuxQQ 实现linux平台使用qq
2015-03-07 21:49
561 查看
pylinuxqq是博主在linux平台下面使用webqq或者其他第三方插件,或者wine模拟,都或多或少的有一些缺陷。而且一直想锻炼一下,自己写一个linux平台下面的QQ。pylinuxqq基于python,目前博主还算小菜,正在开发当中。下面就记录下开发中遇到的一些问题:
项目地址:https://github.com/younfor/PyLinuxQQ
有兴趣的可以fork一份来一起开发
如何连接QQ
结合网上的方法,发现webqq最新版smartqq是相对比较容易的一种方法。通过python的request,urllib2等包可以方便的实现post,get模拟它的协议。
登陆QQ
最难的就是这一步,qq使用了rsa,md5加密还添加了各种规则。好在web端都暴露在js里面。最简单的方法是直接在python里面调用js。当然这个只是一种想法,因为易语言,c语言都能这样,于是经过查阅资料发现,mozila,google都有js引擎。而且都有python的api版本。于是就安装了mozila的spidermonkey,速度很快。主要难点就在算法的分析,和逻辑了。
使用ie,firefox,chrome的f12功能,截取整个登陆流程的get,post请求
分析出qq需要登陆2次,而且都是用js请求。如果不会分析source里面的js文件就没法做。
分析出js的算法后,使用debug找出每个参数,还有cookies的情况。详细流程在项目源码里面一目了然
qq的协议经常变,建议把核心写成一个模块和UI分离,以后更新直接下载py模块和js文件就行。
好友列表
首先获取一份qqhash密文,作为请求好友列表的参数,然后通过返回的json用pyqt做界面。
接收信息
主要就是不断的提交一个名叫poll2的POST,如果有值,就说明接收到了消息。接收信息采用和QQ类似的闪动头像,还有聊天对话框合并。
发送信息
群组,讨论组,好友发送消息都是类似的一个POST,带上参数就行了。
PyQt的GUI
主界面采用tabwidget+toolbox+listwidget 实现好友列表和选项卡
下面是一些效果图片:
本文出自www.younfor.com
项目地址:https://github.com/younfor/PyLinuxQQ
有兴趣的可以fork一份来一起开发
如何连接QQ
结合网上的方法,发现webqq最新版smartqq是相对比较容易的一种方法。通过python的request,urllib2等包可以方便的实现post,get模拟它的协议。
登陆QQ
最难的就是这一步,qq使用了rsa,md5加密还添加了各种规则。好在web端都暴露在js里面。最简单的方法是直接在python里面调用js。当然这个只是一种想法,因为易语言,c语言都能这样,于是经过查阅资料发现,mozila,google都有js引擎。而且都有python的api版本。于是就安装了mozila的spidermonkey,速度很快。主要难点就在算法的分析,和逻辑了。
使用ie,firefox,chrome的f12功能,截取整个登陆流程的get,post请求
分析出qq需要登陆2次,而且都是用js请求。如果不会分析source里面的js文件就没法做。
分析出js的算法后,使用debug找出每个参数,还有cookies的情况。详细流程在项目源码里面一目了然
qq的协议经常变,建议把核心写成一个模块和UI分离,以后更新直接下载py模块和js文件就行。
好友列表
首先获取一份qqhash密文,作为请求好友列表的参数,然后通过返回的json用pyqt做界面。
接收信息
主要就是不断的提交一个名叫poll2的POST,如果有值,就说明接收到了消息。接收信息采用和QQ类似的闪动头像,还有聊天对话框合并。
发送信息
群组,讨论组,好友发送消息都是类似的一个POST,带上参数就行了。
PyQt的GUI
主界面采用tabwidget+toolbox+listwidget 实现好友列表和选项卡
下面是一些效果图片:
本文出自www.younfor.com
相关文章推荐
- Linux平台,使用JavaComm3 API及SMSLib项目实现在Web Application中发送手机短信的功能
- 快速实现配置Windows客户端访问在linux平台上所搭建的Samba服务器&&使用swat软件
- 使用Sharesdk实现第三方平台登录(qq,新浪微博)
- 使用Sharesdk实现第三方平台登录(qq,新浪微博)
- 熟练使用语言在Linux平台实现具体的算法和数据结构
- Linux平台中使用PHP把word转pdf的实现方法
- 使用Mkfifo和Script命令实现在Linux平台上实时演示
- 20151208linux系统日常管理第三部分(linux下使用iptables实现内网的ftp端口映射 )扩展3
- Linux 大页面使用与实现简介(转)
- Linux:使用rpcgen实现64位程序调用32位库函数
- thinkPHP3.2.2使用thinkSDK实现第三方登录(以QQ登录)为例。
- 通过CuteFTP用VBScript使用SFTP,实现Win与Linux的文件传输
- 如何使用QQ实现简单客服
- linux下使用iptables实现内网的ftp端口映射
- Linux平台Java调用so库-JNI使用例子
- 使用pscp实现linux与windows之间文件传输
- Linux平台Oracle ODBC安装使用
- Linux使用Shell脚本实现ftp的自动上传下载
- 在Linux上使用Wine安装轻聊版的QQ的步骤讲解
- Linux平台下线程池的原理及实现