使用微信公衆平臺發送報警信息(Python版)

    微信公衆有兩種,服務號和訂閱號,服務號需要公司的執照和組織代碼,申請很麻煩,所以我們申請一個訂閱號即可。申請地址https://mp.weixin.qq.com/ 

    網上有一個是利用node.js 寫的,原理就是利用程序模擬用戶登錄微信公衆平臺後臺,通過網頁回覆用戶信息

    

import urllib
import urllib2
import random
import cookielib
import json
import urlparse
import sys

#構造登錄數據
data={'username':'[email protected]',   #用戶名
      'pwd':'20659dd9b89eb83fe4371808daa5477e', #加密後的密碼
      'imgcode':'',
      'f':'json'
      }
#Referer 很重要,不然會報錯的
header = [('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1'),('Referer','
#構造cookie 
cj = cookielib.LWPCookieJar()
cookie_suppot = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_suppot,urllib2.HTTPHandler)
opener.addheaders = header
urllib2.install_opener(opener)
#登錄
request = urllib2.Request('https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN',urllib.urlencode(data))
conn=opener.open(request)
js = json.loads(conn.read())
#獲取令牌,可以從登錄後的返回結果中獲取,PS:因爲這個字符串不是固定的,所以需要獲取
token = dict(urlparse.parse_qsl(js['redirect_url']))['token']
#發送消息的URL
url="https://mp.weixin.qq.com/cgi-bin/singlesend"
#構造發送信息的數據,使用POST方法
data1={'type':'1',
       'content':'這是要發送的數據',
       'tofakeid':'53763645',  #接受消息的訂閱人,可以從頁面中獲取
       'imgcode':'',
       'token': token,         #令牌
       'lang':'zh_CN',
       'random':random.random(),   #小於1的隨機數
       'f':'json',
       'ajax':'1',
       't':'ajax-response',
       }
#發送消息
qe = urllib2.Request(url,urllib.urlencode(data1))
res = opener.open(qe)

    以上只是演示代碼,大家可以自行更改配合nagios,還有個重要的問題就是微信有個48小時限制,意思就是:訂閱號只能回覆48小時內和訂閱號互動的人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章