利用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
转载于:https://blog.51cto.com/xieyusong/1563370