使用Perl語言編寫的微信客戶端框架,基於Mojolicious,要求Perl版本5.10+,可透過插件提供基於HTTP協定的api介面供其他語言或系統調用
本計畫完全遵循微信官方提供的原始功能,不包含任何破壞、盜號等行為,本計畫完全開源,目的是為了促進技術交流學習,禁止任何對國家、企業、個人等構成危害的非法用途,否則後果自負
名稱 | 優先權 | 目前狀態 | github作者 | 功能說明 |
---|---|---|---|---|
ShowMsg | 100 | 已發布 | sjdy521 | 列印客戶端接收和發送的訊息 |
IRCShell | 99 | 已發布 | sjdy521 | Linux環境下透過irc客戶端使用微信 |
Openwx | 98 | 已發布 | sjdy521 | 提供微信發送訊息api接口 |
Beauty | 95 | 已發布 | sjdy521 | 辨識指定關鍵字傳送美女圖片 |
Translation | 93 | 已發布 | sjdy521 | 多國語言翻譯功能 |
KnowledgeBase | 2 | 已發布 | sjdy521 | 透過微信訊息自訂問答知識庫 |
AutoVerify | 1 | 已發布 | sjdy521 | 收到好友驗證請求時自動核准同意 |
PostQRcode | 0 | 已發布 | sjdy521 | 登入二維碼發送到郵箱實現遠端掃碼 |
UploadQRcode | 0 | 已發布 | sjdy521 | 二維碼上傳圖床獲得公網訪問url |
XiaoiceReply | 1 | 已發布 | sjdy521 | 利用微軟小冰實現智慧聊天回复 |
ShowQRcode | 0 | 已發布 | sjdy521 | 呼叫系統圖片檢視程式來示二維碼(目前僅支援win) |
SmartReply | 0 | 已發布 | sjdy521 | 智慧聊天回复 |
更多插件參考完整插件列表
敲一行指令就能啟動一個智慧聊天機器人,Perl 和你都如此優雅. Enjoy!
cpanm Mojo::Weixin && perl -MMojo::Weixin -e "Mojo::Weixin->new->load('ShowMsg')->load('SmartReply')->run()"
[16/01/19 23:10:49] [info] 客户端准备登录...
[16/01/19 23:10:50] [info] 清除残留的历史二维码图片
[16/01/19 23:10:30] [info] 二维码已下载到本地[ /tmp/mojo_weixin_qrcode.jpg ]
[16/01/19 23:11:20] [info] 等待手机微信扫描二维码...
[16/01/19 23:12:09] [info] 手机微信扫码成功,请在手机微信上点击 [登录] 按钮...
[16/01/19 23:12:10] [info] 正在进行登录...
[16/01/19 23:12:10] [info] 微信登录成功
[16/01/19 23:13:40] [info] 获取联系人信息...
[16/01/19 23:13:40] [info] 更新个人信息成功
[16/01/19 23:14:41] [info] 更新好友信息成功
[16/01/19 23:15:42] [info] 更新群组[ 红包群 ]信息成功
[16/01/19 23:15:42] [info] 更新群组[ Perl语言交流 ]信息成功
[16/01/19 23:15:42] [info] 开始接收消息...
[16/01/19 23:15:00] [群消息] 小灰|Perl语言交流 : Mojo::Weixin不错哦
[16/01/19 23:15:58] [群消息] 我->Perl语言交流 : 多谢多谢
+-------------------+ +----------------+
| Tencent | | Any IRC Client |
| Weixin Server | | wechat、irssi |
+---v-------------^-+ +-v------------^-+
| | | |
| 微信协议交互| |IRC协议交互 |
+-- --- |-- - - -- | - - - -- - - --- | --- ----- | --+
| +---v-------------^--+ +----v------------^-+ |
| | <——————————————————< | |
| | Weixin Client | Weixin - IRC | IRC Server | |
| | | 协议转换 | 监听本机6667端口 | |
| | >——————————————————> | |
| +--------------------+ +-------------------+ |
| |
| 我们程序实现的部分 |
+--- - - - - -- - -- ---- ------ ------- ------ --- ----+
建議使用cpanm線上安裝Mojo::Weixin模組, 如果使用docker方式請參閱Docker映像安裝及使用方法
安裝perl
在安裝前請先確認下你的系統是否已經安裝了Perl,因為除了windows,其他大部分的平台預設都可能已經預先安裝過
且你的Perl版本至少5.10.1+,建議5.14+
Perl官網下載頁有包含Unix/Linux、Mac OS X、Windows多平台比較全面詳細的安裝說明
建議大家盡量選擇Binaries (二進位預編譯)的版本,安裝即可使用,比較方便
Linux上如果你的perl版本較低,想要升級perl,可以考慮使用工具perlbrew
平台 | 推薦選擇 | 下載地址 |
---|---|---|
Windows | 1. StrawberryPerl 2. ActivePerl 3. Mojo-StrawberryPerl | StrawberryPerl下載地址 Mojo-StrawberryPerl下載網址 ActivePerl下載位址 |
Linux | 1.系統自帶 2. yum/apt等套件管理器 3. 官方原始碼編譯 4. ActivePerl 5. DWIM-Perl | ActivePerl下載位址 DWIM-Perl下載位址 |
Mac | 1.系統自帶 2. ActivePerl | ActivePerl下載位址 |
注意:
Mojo-StrawberryPerl是基於StrawberryPerl精簡打包而成,適用於windows 32位元/64位元系統
安裝cpanm工具(如果系統已經安裝了cpanm可以忽略此步驟)
方法a: 透過cpan安裝cpanm(只適用於root用戶)
$ cpan -i App::cpanminus
方法 b:直接在線安裝cpanm
$ curl -kL http://cpanmin.us | perl - App::cpanminus
官方服务器在国外,如果无法访问,可以选择下面的命令:
$ curl http://share-10066126.cos.myqcloud.com/cpanm.pl|perl - App::cpanminus
使用cpanm在線安裝Mojo::Weixin 模組(如果系統已經安裝了該模組,執行此步驟會對模組進行升級)
$ cpanm Mojo::Weixin
如果安裝過程中一直提示下載失敗,很可能是因為訪問到國外伺服器網路比較差
這種情況下可以嘗試如下手動指定國內的鏡像站點
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Weixin
安裝失敗可能有幫助的解決方法
如果你運氣不佳,透過cpanm沒有一次性安裝成功,這裡提供了一些可能有用的信息
在安裝Mojo::Weixin 的過程中,cpan或cpanm會幫助我們自動安裝許多其他的依賴模組
在眾多的依賴模組中,安裝經常容易出現問題的主要是IO::Socket::SSL
IO::Socket::SSL 主要提供了https 支持,在安裝過程中可能會涉及SSL相關函式庫的編譯
對於Linux 用戶,通常採用的是編譯安裝的方式,系統缺少編譯安裝必要的環境,則會導致編譯失敗
對於Windows 用戶,由於不具備良好的編譯安裝環境,建議採用一些已經打包比較全面的Perl運行環境
例如比較流行的strawberryperl 或activeperl 的最新版本都預設包含Mojo::Weixin 的核心依賴模組
RedHat/Centos:
$ yum install -y openssl-devel
Ubuntu:
$ sudo apt-get install libssl-dev
搞定了編譯和運行環境之後,再回到步驟2 安裝Mojo::Weixin即可
請盡量在root下安裝使用,非root下安裝使用參考FAQ
如果仍然有問題,Linux上可以嘗試執行以下腳本進行依賴模組檢查
$ curl -ks "https://raw.githubusercontent.com/sjdy521/Mojo-Weixin/master/script/check_dependencies.pl"|perl -
我對Perl很熟悉,是個專業的Perler
該專案是一個純粹的Perl模組,已經發佈到了cpan上,請仔細閱讀Mojo::Weixin
模組的使用文檔
除此之外,你可以看下demo 目錄下的更多程式碼範例
我是對Perl不熟悉,是一個其他語言的開發者,只對提供的訊息發送/接收介面感興趣
可以直接把如下程式碼保存成一個原始碼檔案(必須使用UTF8編碼),使用perl 解釋器來運行
#!/usr/bin/env perl
use Mojo::Weixin;
my ($host,$port,$post_api);
$host = "0.0.0.0"; #发送消息接口监听地址,没有特殊需要请不要修改
$port = 3000; #发送消息接口监听端口,修改为自己希望监听的端口
#$post_api = 'http://xxxx'; #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行
my $client = Mojo::Weixin->new(log_level=>"info",http_debug=>0);
$client->load("ShowMsg");
$client->load("Openwx",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api});
$client->run();
上述程式碼儲存成xxxx.pl 文件,然後使用perl 來執行,就會完成微信登入並在本機產生一個監聽指定位址連接埠的http server
$ perl xxxx.pl
發送好友訊息的介面呼叫範例
http://127.0.0.1:3000/openwx/send_friend_message?id=xxxx&content=hello
* About to connect() to 127.0.0.1 port 3000 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)
> GET /openwx/send_friend_message?id=xxxxx&content=hello HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 127.0.0.1:3000
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json;charset=UTF-8
< Date: Sun, 13 Dec 2015 04:54:38 GMT
< Content-Length: 52
< Server: Mojolicious (Perl)
<
* Connection #0 to host 127.0.0.1 left intact
{"status":"发送成功","id":23910327,"code":0}
更多介面參數說明參考Openwx插件API文檔
我是一個極客,我只想能夠在命令列上透過IRC 的方式來玩微信聊天
請閱讀IRCShell外掛程式使用步驟
JavaScript
Python
Java
可以透過掃描支付寶付款二維碼進行贊助,感謝您的支持與鼓勵
特別致謝那些曾經贊助的夥伴們
Copyright (C) 2014 by sjdy521
This library is free software; you can redistribute it and/or modify it under MIT License and Anti 996 License