1 行程式碼,實現微信訊息傳送
還是接食行生鮮簽到的問題,之前我們講到,將簽到結果通過簡訊傳送到手機,但是我發現 twilio 有些不穩定,為了防止漏籤,我在伺服器上設定了兩次定時任務,通常情況下第一個收不到簡訊,第二個才會收到。
看到最近好多大神寫操作微信的文章,於是,我又想,是不是可以將訊息傳送到微信上?
微信傳送訊息有如下幾個思路:
- itchat 模組
- 使用個人公眾號
- 使用其他公眾號封裝好的傳送訊息的功能;
itchat
大部分人操作個人微信都是使用這個模組。
itchat 是一個開源的微信個人介面,它可以模擬網頁端的微信登陸,從而用 Python 指令碼或命令列模式來使用個人微訊號,達到推送各種通知到微信上的目的。
其實是基於網頁版微信,通過 HTTP 互動來實現微信的一些操作,被封的風險其實在於,當檢測到賬號異常時,賬號的網頁版登入許可權會被騰訊禁掉,這種情況下 itchat 就不好使了。另外,據說新申請的賬號直接沒有網頁版登入許可權了。
itchat 的使用已經有其他很多大神講了,網上也有很多教程,這裡我們不再贅述,有興趣的自行 Google,也可以後臺找我,一起來研究下~
個人公眾號介面
微信提供了豐富的公眾號介面,可以實現訊息收發、關注使用者資訊獲取等等。
BUT!大部分介面(包括髮送訊息介面)只開放給認證使用者,而個人號又無法認證,所以這條路斷了!
據說以前個人是可以認證的,反正許可權的口子越來越小了。
別人家的公眾號
正所謂「它山之石,可以攻玉」,此處不留爺,爺就去他處!今天的主角登場!
還好我們找到了提供收發訊息功能的公眾號 API,我們只要整合他們的介面即可。
它就是「Server醬」!
Server 醬
使用方法:
- 登入:用 GitHub 賬號登入網站,就能獲得一個 SCKEY(在「傳送訊息」頁面);
- 繫結:點選「微信推送」,掃碼關注同時即可完成繫結;
來個示意圖:
程式碼示例:
>>> import requests >>> requests.get("https://sc.ftqq.com/your-SCKEY.send?text={}&desp={}".format('測試標題','哈哈'))
微信端效果:
是不是很簡單!1 行程式碼就搞定了微信訊息推送,再也不用其他任何複雜的步驟!
另外,顯示發現發件人是Server醬,另外點進去有推廣,畢竟是免費的介面,還要啥自行車!
還有就是傳送訊息是有一些限制的:
每人每天傳送上限 500 條,相同內容 5 分鐘內不能重複傳送,不同內容一分鐘只能傳送 30 條。主要是防止程式出錯的情況。
對於我這種需求肯定夠了。
PushBear
ServerChan 只能推送到一個微信上,若果想一對多傳送資訊,並且向自定義發件人,那麼可以使用 PushBear。
- 無需註冊,直接掃碼登入;
- 建立訊息通道,獲得訂閱二維碼;
- 通過 API 向關注了該二維碼的使用者推送訊息;
PushBear 可以自定義發件人資訊,通過微信登入後,建立一個通道,會生成一個 sendkey 和一個訂閱二維碼, 可以通過「訂閱訊息API」傳送微信給所有掃描過此二維碼的人。
程式碼示例:
import requests
requests.get("https://pushbear.ftqq.com/sub?sendkey=your-sendkey&text={}&desp={}".format('pushbear', '哈哈'))
微信端效果:
發現發件人是我們自己設定的「不正經程式設計師」了!
使用限制:
推送訊息儲存 72 小時、5 分鐘內不可釋出重複訊息、普通使用者每天 1000 條上限、請勿用於傳送廣告和有害資訊。
綜上,若要完成簽到成功後的通知,我們只要使用 ServerChan 或者 PushBear 的介面封裝成傳送訊息的函式即可!
食行生鮮簽到系列也可以到此結束了,回覆【食行生鮮】可以獲取最終程式碼。
總結
也許還有其他微信的使用方法,但是 ServerChan 是我找到的最簡單的一個了,1 行程式碼搞定,簡單高效,很 pythonic!
當然,作為個人傳送一些通知 ServerChan 是綽綽有餘的,但是,若是企業級的應用還是用自己的微信訂閱號來開發介面吧~
如果覺得有用,歡迎關注我的微信,一起學習,共同進步,不定期推出贈書活動~
最近蒐集到慕課網視訊,視訊內容涵蓋 Python、Java、PHP、前端、小程式、演算法、架構、資料庫等等!關注本公眾號,後臺回覆「慕課網」即可獲取下載地址。