PylinuxQQ 实现linux平台使用qq

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,速度很快。主要难点就在算法的分析,和逻辑了。

  1. 使用ie,firefox,chrome的f12功能,截取整个登陆流程的get,post请求

    分析出qq需要登陆2次,而且都是用js请求。如果不会分析source里面的js文件就没法做。

  2. 分析出js的算法后,使用debug找出每个参数,还有cookies的情况。详细流程在项目源码里面一目了然
  3. qq的协议经常变,建议把核心写成一个模块和UI分离,以后更新直接下载py模块和js文件就行。

好友列表

首先获取一份qqhash密文,作为请求好友列表的参数,然后通过返回的json用pyqt做界面。

接收信息

主要就是不断的提交一个名叫poll2的POST,如果有值,就说明接收到了消息。接收信息采用和QQ类似的闪动头像,还有聊天对话框合并。

发送信息

群组,讨论组,好友发送消息都是类似的一个POST,带上参数就行了。

PyQt的GUI

主界面采用tabwidget+toolbox+listwidget 实现好友列表和选项卡

下面是一些效果图片:

本文出自www.younfor.com

时间: 2024-10-14 17:42:10

PylinuxQQ 实现linux平台使用qq的相关文章

搜狗云输入法移植到linux平台的想法

在ubuntu9.04的时代,自带的输入法一直认为不够好用,看到了搜狗的云输入法,故产生了移植的想法. 通过chrome的inspect Element功能,我发现了搜狗.百度.QQ云输入法的接口.公布一下,供大家参考. 百度http://olime.baidu.com/py?py=bit&rn=0&pn=5 搜狗http://web.pinyin.sogou.com/api/py?key=938cdfe9e1e39f8dd5da428b1a6a69cb&query=bit QQh

linux平台搭建postfix邮件服务器

一,搭建邮件服务器前准备如下: Centos 7.2 64位Postfix-2.8.12.tar.gz Postfix MTA(邮件传输代理)Dovecot-2.1.8.tar.gz IMAP 和 POP3 邮件服务器Postfixadmin-2.3.5.tar.gz 采用PHP编写的开源WEB邮箱及域名账号管理工具Roundcubemail-0.8.1.tar.gz 采用PHP编写的开源IMAP邮件WEB客户端 二,安装过程 1.安装Postfix yum -y install postfix

linux平台下防火墙iptables原理(转)

原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能. iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“

记一次在linux 平台上的优化调试

Author:DriverMonkey Mail:[email protected] Phone:13410905075 QQ:196568501 测试平台:AM335X 优化前状态:采样速度  105次/S 优化目标:速度为 130次/S 以上(注:根据ADC的采样率理论上可以达到 330次/S) 优化步骤: 1)代码框架可分为四大模块(UI, 业务逻辑管理,设备管理,远程管理)共10个线程 模块间有项目依赖关系,不能一下全部停掉,先去掉一些辅助功能线程(如:按键扫描线程,远程命令处理线程等)

Linux 平台下 误删 oracle 数据文件的恢复方法

1  问题描述 之前写过一篇删除oracle home目录的blog,参考: Linux 平台误删 home oracle 根目录的解决方法 http://blog.csdn.net/tianlesoftware/article/details/43794273 本篇是这边的引深,本来应该是年前整理的,拖到年后了. 模拟现状: 数据库在正常运行,误操作,直接rm 掉了数据文件. 测试环境: [[email protected] trace]$ cat /etc/redhat-release Re

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

在 Linux 平台下使用 JNI

引言 Java 的出现给大家开发带来的极大的方便.但是,如果我们有大量原有的经过广泛测试的非 Java 代码,将它们全部用 Java 来重写,恐怕会带来巨大的工作量和长期的测试:如果我们的应用中需要访问到特定的设备,甚至是仅符合公司内部信息交互规范的设备,或某个特定的操作系统才有的特性,Java 就显得有些力不从心了.面对这些问题,Sun 公司在 JDK1.0 中就定义了 JNI 规范,它规定了 Java 应用程序对本地方法的调用规则. 实现步骤及相关函数使用 本文将一步步说明在 Linux 平

Windows 和 Linux 平台下的端口转发工具

原文地址: http://unmi.cc/windows-linux-port-forwarding/ 这里记录一下我曾经使用过的几个端口转发工具,即端口映射.端口重定向,和 NAT 也是差不多的概念. Linux 下用过 iptables,rinetd:Windows 下用过某个防火墙的 NAT 功能.RemoteAnywhere 的端口重定向.FPipe,还有最近刚找到的 PassPort.试着去设置一下 Windows 2000 的 NAT  功能,但未成功,还是特定的软件简单易用,下面介

Linux平台oracle 11g单实例 安装部署配置 快速参考

1.重建主机的Oracle用户 组 统一规范 uid gid 以保证共享存储挂接或其他需求的权限规范 userdel -r oracle groupadd -g 500 oinstall groupadd -g 501 dba useradd -g oinstall -G dba -u 500 oracle #id oracle uid=500(oracle) gid=500(oinstall) 组=500(oinstall),501(dba) 2.安装好Oracle 需要的rpm包.安装rpm