本文阅读时间约:5~7 分钟 ; 关键词: Mojo-Webqq
请注意,本文在 Ubuntu 16.04 x64 上测试通过,其他 OS 请自测。
有时候,你不得不承认,国产软件在某些方面有着恐怖的实力,比如想尽一切办法在后台常驻,保留服务,总之就是想尽办法“获得你的注意”一来二去的你的手机电量就会是「直接受害者」了,有没有什么办法能让它们在不常驻后台/服务的前提下还能很好的完成本职工作呢?今天我们来介绍一个工具,它在原生 Android 用户口中十分有名,它就是 Mojo-Webqq 。
什么是 Mojo-Webqq ?
根据作者在 Github 上所述:
使用 Perl 语言编写的 Smartqq 客户端框架,基于 Mojolicious ,要求 Perl 版本 5.10+ ,可通过插件提供基于 HTTP 协议的 api 接口供其他语言或系统调用.
谁也看不懂对么,我个人的见解是 : Mojo-Webqq 就是使用一个更加轻量省电的工具来替代 QQ 臃肿的通知系统。
它使用 Mojo-Webqq 当作服务端获取信息,通过 GCM 等推送方式推送到你的手机上来达到「更轻量」解决 QQ 通知的问题
准备工作
- 一部 VPS 服务器,或者一部 Android 手机,安卓手机可能需要安装 LinuxDeploy 应用来继续操作,关于 Android 手机部署 LinuxDeploy 的方法我会单独介绍。
- 如要使用 GCM 推送,所选的服务器可能还会需要拥有能访问 Google 的能力。
- 一个 SSH 管理软件,Windows下推荐使用 PUTTY,OSX 下可以使用自带的终端机(Terminal)功能。
开始连接
首先我们先来连接到 SSH ,如果是 Windows 则可以使用 PUTTY 的连接功能,PUTTY 的登录窗口如图所示

在 1 处输入服务器的 IP 地址,选择 SSH 连接即可,IP 地址的查看请咨询您的 IDC 。OSX 的登录方式是在终端机中输入
ssh root@your ip address
如果登陆成功。 PUTTY / Terminal 则会以命令行形式展示

环境准备
要使用 Mojo-Webqq ,我们需要一些环境的支持,现在我们来安装开发工具
sudo apt-get install build-essential
提示是否安装时我们选择 Y 进行确认

安装完开发工具之后我们再来安装一些必要的小工具,值得一提的是有的工具在您使用的 VPS 之下是默认安装的,这种情况下您真实被安装的项目可能会为零个,这是正常现象,安装指令为
apt-get install vim git perl make gcc g++
接下来我们继续安装 openssl-devel,安装指令为
sudo apt-get install openssl
sudo apt-get install libssl-dev
由于 Ubuntu 安装任意模块时都会先把 cpan 装上,所以我们直接执行 cpan 模块的安装指令:
cpan -i App::cpanminus
随后服务器开始执行安装指令

安装完成后会返回如下提示

cpan 安装完成之后,就可以开始正式安装 Mojo-Webqq了。
正式安装
Mojo-Webqq 提供了 cpan 一行命令安装方法,具体是:
cpanm Mojo::Webqq
安装完成后的返回结果如下

Mojo-Wexin 的安装方式大致相同,即 cpanm Mojo::Weixin
故障排除
如果因为网络环境而导致安装中断,一般情况下是 Mojolicious 未成功安装造成的,则我们可以手动安装它
curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious
安装成功后重新运行下面的安装命令即可
cpanm Mojo::Webqq
应用设定
新建一个 Pl 文件来设定
touch Webqq.pl
然后使用 vim 或者 nano 来编辑,这里我们使用 vim
vi Webqq.pl
然后我们给出一个模板,将下面的文本粘贴进刚刚打开的 vim 编辑器里面
use Mojo::Webqq;
#微信使用 use Mojo::Weixin
my $client = Mojo::Webqq->new(log_encoding=>"utf-8");
$client->load("ShowMsg");
#请根据自己所需的推送服务进行选择并删除或注释不需要的部分,填写格式请仿照 GCM 的方式填写
#以下为 GCM 推送
$client->load("GCM",data=>{
api_url => 'https://gcm-http.googleapis.com/gcm/send',
api_key=>'AIzaSyB18io0hduB_3uHxKD3XaebPCecug27ht8',
registration_ids=>["输入你自己从 GCMForMojo APP中获取到的令牌"],
allow_group=>["接受群消息的号码,如需要推送全部群消息可删除这一行,每个群号码之间使用 "", 分隔"],
ban_group=>[],
allow_discuss=>[],
ban_discuss=>[],
#此处为讨论组,填写格式同上
});
#以下为 MiPush 推送
$client->load("MiPush",data=>{
registration_ids=>[""],
allow_group=>[""],
ban_group=>[],
allow_discuss=>[],
ban_discuss=>[],
});
#以下为 HwPush 推送
$client->load("HwPush",data=>{
registration_ids=>[""],
allow_group=>[""],
ban_group=>[],
allow_discuss=>[],
ban_discuss=>[],
});
#以下为 FmPush 推送
$client->load("FmPush",data=>{
registration_ids=>[""],
allow_group=>[""],
ban_group=>[],
allow_discuss=>[],
ban_discuss=>[],
});
$client->load("Openqq",data=>{
#如果是微信改为 Openwx
listen => [{host=>"0.0.0.0",port=>5000}, ] ,
#如果是推送微信的话需要保证端口不重复,并请保证所设定的端口已经在防火墙内放行,同时需要在 APP 内设定好推送服务器的地址和端口
});
#不需要 APP 内回复功能请删除以上三行(不包括被 # 号注释掉的几行)
$client->run();
然后我们修改相关字段,比如
- 自己的 GCM 令牌;
- 允许通知的 QQ 群;
- 允许通知的讨论组等;
然后保存,保存的方法是先按下esc随后依次按下:和wq即可。
获取 GCM 令牌
请注意,笔者默认在您阅读本节下文的所有内容的同时,您的 Android 设备全程具有访问 Google Cloud Messaging 的能力
手机上安装 GCM for Mojo 应用,点击右侧菜单栏中的「设备码」选项,弹出的菜单里的文本即为 GCM 令牌,返回 SSH 粘贴到指定位置即可。

GCM 令牌如图所示

运行与服务常驻
当您的配置全部完成之后,便可尝试运行 Mojo-Webqq 服务端,其运行命令是
perl Webqq.pl
服务器会返回一个由 sm.ms 托管的二维码图片,点击这个图片的地址,使用手机 QQ 的「扫一扫」功能扫描,等待验证完成之后就可以使用了

此时如果推出 SSH 服务将会被中断,这时我们选择 screen 服务来守护这个服务,先按下 ctrl + c 终止上面运行中的 Mojo-Webqq 服务端,然后安装 screen
apt-get install screen
部分 VPS 已经内建了 screen 则会返回如下界面

安装完成后我们启动一个 screen 服务并在这个服务里运行 Mojo-Webqq 服务端
screen -S Mojo-Webqq
perl Webqq.pl
然后请按 Ctrl+A ,再按D键使此 screen 进入后台驻守,然后就可以中断 SSH 连接了。
至此,Mojo-Webqq 安装完毕,您可以使用绿色守护、黑阈或者冰箱结束 QQ 的进程,享受来自 Google 的正统推送服务

写在后面
在 Android O 的 API 27 之后,Google 引入了后台检查功能,能对不需要常驻后台的应用进行更有效的管理,况且随着 Android P 的临近发布,Android 应用的 API 版本也马上就要提升到 API 28 了,预览版的节电模式和适应性电池用量(Adaptive Battery )也都有着很不错的表现;我们也有理由相信也希望这种令人心累的事情不再发生,相信在未来的不久所有的 App 都能按部就班,各司其职;然鹅…

溜了溜了 XDD ~
