linux推送微信消息,自动推送微信公共账号群消息 - Python/Ruby/Perl/PHP - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - ...

本帖最后由 凉白开 于 2014-5-4 10:59 编辑

微信公众平台的基础接口没有推送群消息的api(高级接口貌似也没有),所以用python写了个程序模拟微信公众平台的post请求来实现这个功能,附带实现了发送消息给单个用户。

需要的模块

requests:给人用的HTTP请求模块,python自带的urllib和urllib2实在是难用。requests支持会话模式,意思就是所有的请求都用一个实例,共享同一个cookies,十分方便。具体参考官方文档(中文):http://cn.python-requests.org/zh_CN/latest/index.html

实现

requests.seesion()就是会话模式

首先设置主请求头

然后login()函数登录,获取token。发送的密码用md5加密

最后masssend()函数发送群消息

singlesend()函数用来给单人发送消息,形参tofakeid不是用户的微信号,并且和api中"FromUserName 发送方帐号"也不一样,这样就没办法将用户直接关联起来,只能手动观察绑定-。-

ps:如果在本机浏览器上登录了微信公众平台,然后在另一个电脑上运行脚本,可能会导致脚本登录失败,解决的办法是退出本机登录。

#coding:utf-8

"""

微信公众平台管理界面

"""

import requests

import hashlib

import random

import ttlsa

import json

import sys

session=requests.session()

session.headers={

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0',

'Accept': 'application/json, text/javascript, */*; q=0.01',

'Accept-Language': 'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',

'Accept-Encoding': 'deflate',

'DNT': '1',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'X-Requested-With': 'XMLHttpRequest',

'Referer': 'https://mp.weixin.qq.com/',

'Connection': 'keep-alive',

'Pragma': 'no-cache',

'Cache-Control': 'no-cache'

}

token=None

def login(username,pwd):

"""登录"""

#正确响应:{"base_resp":{"ret":0,"err_msg":"ok"},"redirect_url":"\/cgi-bin\/home?t=home\/index&lang=zh_CN&token=898262162"}

global token

pwd=hashlib.md5(pwd).hexdigest()

url='https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN'

data={'f':'json',

'imgcode':'',

'pwd':pwd,

'username':username}

res=session.post(url,data)

print 'response: login',res.text

j=json.loads(res.text)

status=j['base_resp']['err_msg']

if status=='ok':

token=j['redirect_url'].split('=')[-1]

return True

return False

def singlesend(tofakeid,content):

"""发送消息给单个人

多次发送消息可能需要发送心跳信息(未测试)"""

#正确响应:{"base_resp":{"ret":0,"err_msg":"ok"}}

url='https://mp.weixin.qq.com/cgi-bin/singlesend'

data={'ajax':'1',

'content':content,

'f':'json',

'imgcode':'',

'lang':'zh_CN',

'random':str(random.random()),

't':'ajax-response',

'tofakeid':tofakeid,

'token':token,

'type':'1',

}

res=session.post(url,data)

print 'response: singlesend',res.text

j=json.loads(res.text)

status=j['base_resp']['err_msg']

if status=='ok':

return True

return False

def masssend(content):

"""群发消息"""

#正确响应:{"ret":"0", "msg":"ok"}

url='https://mp.weixin.qq.com/cgi-bin/masssend'

data={'ajax':'1',

'city':'',

'content':content,

'country':'',

'f':'json',

'groupid':'-1',

'imgcode':'',

'lang':'zh_CN',

'province':'',

'random':str(random.random()),

'sex':'0',

'synctxnews':'0',

'synctxweibo':'0',

't':'ajax-response',

'token':token,

'type':'1'

}

res=session.post(url,data)

print 'response: masssend',res.text

j=json.loads(res.text)

if j['msg']=='ok':

return True

return False

if __name__=='__main__':

res=login('username','password')

print 'response: login',res

if not res:

sys.exit()

#群发

res=masssend('呵呵')

print 'response: masssend',str(res)

#发送给单人

#res=singlesend('尼玛蛋')

#print 'response: singlesend',str(res)

文章标题: 自动推送微信公共账号群消息

本文地址: http://www.ttlsa.com/python/wechat-auto-push-group-message/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值