利用python模拟登录到微信公众平台订阅号,给用户列表中的用户发送微信。
说明:用户列表中的每个用户都有一个tofakeid,为微信用户的唯一标识,本来是做一个微信报警的,可是腾讯没有对外提供这方面的接口,这样模拟登录的话也有一个48小时的互动时间的限制。学习爬虫的时候试着写的。
# coding=utf-8 import urllib import urllib2 import cookielib import json import sys data={'username':'yaokuaile-99', 'pwd':'f4bb2d8abe7a799ad62495a912ae3363', 'imgcode':'', 'f':'json' } cj=cookielib.LWPCookieJar() opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) def getToken(): headers = {'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Content-Length': '74', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Host': 'mp.weixin.qq.com', 'Origin': 'https://mp.weixin.qq.com', 'Referer': 'https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', } req = urllib2.Request('https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN',urllib.urlencode(data),headers) ret = urllib2.urlopen(req) retread= ret.read() token = json.loads(retread) token=token['redirect_url'][44:] return token ### send msg def sendWeixin(msg,token,tofakeid): msg = msg token = token data1 = {'type':'1','content':msg,'imgcode':'','imgcode':'','tofakeid':tofakeid,'f':'json','token':token,'ajax':'1'} headers = {'Accept':'*/*', 'Accept-Encoding': 'gzip,deflate,sdch', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Host': 'mp.weixin.qq.com', 'Origin': 'https://mp.weixin.qq.com', 'Referer': 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?msgid=&source=&count=20&t=wxm-singlechat&fromfakeid=150890&token=%s&lang=zh_CN', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36', 'X-Requested-With':'XMLHttpRequest', } req2 = urllib2.Request('https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&f=json&lang=zh_CN',urllib.urlencode(data1),headers) ret2=urllib2.urlopen(req2) if __name__=='__main__': ''' useage: ./send_wx.py msg ''' token = getToken() msg = sys.argv[1:] msg = '\n'.join(msg) tofakeid = '2443746922' sendWeixin(msg, token, tofakeid)
运行:python send_wx.py msg