网站改版|WAP网站制作|域名注册|虚拟主机|服务器|海微商|海微信|海微通| 无障碍| 24小时服务电话:13807590485
海南网站建设海南网站制作海口网站建设三亚网站建设儋州网站建设五指山网站建设文昌网站建设琼海网站建设万宁网站建设东方网站建设定安网站建设 网站首页网站首页 网站建设网站建设 微信开发微信开发 网站推广网站推广 临高网站建设,临高网站开发制作,临高网页设计,临高小程序开发,临高微信公众号开发,临高网络公司,临高世纪华联临高世纪华联 网站超市网站超市 客户案例客户案例 网站模板网站模板 关于我们关于我们
  • 微信开发
  • 持之以恒
  • 网站设计制作
  • 中立五年回报客户
无障碍
微信开发
微信系统开发 微信开发功能 公众号基础教程 开发技术资讯 公众号推广营销 客户案例
联系我们
QQ服务群:28519571 工作时间:86-0898-31568080 传真号码:86-0898-31568085 24小时服务:0138-07590485
 您现在的位置: 首页 >> 微信开发 >> 开发技术资讯 开发技术资讯
利用公众平台模拟登录发送微信消息给指定用户
世纪华联 | 2018-01-26 23:54:31 | 阅读:12202
看到微信公众平台,开始有点兴奋,能做个机器人玩玩,随后用Node.js写了一个,觉得其实这没什么意思,很快就觉得腻了,于是有了做发送微信接口的想法。首先要做的我们就要模拟公众平台的登陆。对于微信的这些lib,当然不能直接写在routes里面,那要怎么办呢?没错,就要封装起来,方便复用。

你可以打开控制台看到公众平台的登录请求,还有所需的参数,其中密码它是用它本身的md5进行加密的,那么我们需要做的只是将它copy过来放在一个 helpers/wx/md5.js文件里就可以直接用了,以下是微信公众平台解析后格式化的js提交代码:
  1. submit: function() { 
  2.       if (!n()) return; 
  3.         var e = d.getVal(); 
  4.          t.post("/cgi-bin/login?lang=zh_CN", { 
  5.             username: e.account, 
  6.             pwd1: t.md5(e.password.substr(0, 15)), 
  7.             pwd2: t.md5(e.password), 
  8.             imgcode: f.data("isHide") ? "": e.verify, 
  9.             register: e.isRegister, 
  10.             f: "json" 
  11.          },
复制代码
我们要建立一个login的方法:
  1. request = require 'superagent' 
  2. require __basename + '/helpers/wx/md5' 
  3. config = require __basename + '/config/config' 
  4. module.exports =  
  5.   login: (fn) -> 
  6.     wx_usr = config.wx.user 
  7.     wx_pwd = md5 config.wx.pwd.substr(0, 16) 
  8.     request 
  9.       .post('http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN') 
  10.       .type('form') 
  11.       .send( 
  12.         username: wx_usr 
  13.         pwd: wx_pwd 
  14.         imgcode : '' 
  15.         f : 'json' 
  16.         register : 0 
  17.       ) 
  18.       .end (res) -> 
  19.           //在这里你已经成功获取cookie了
复制代码
但是经过分析我想你会发现,这里的cookie其实并非你想要的cookie,因为它包含一些没用的信息Path=,我们设置cookie的时候,事实上 是不能用直接设置这样的cookie,应该是一个cookie里面不应该有其他的东西,而分号后面的path应该将它去掉,这里是返回的结果:

  1. "mp_user=xxxxxx; Path=/", 
  2. "mp_sid=NlJ2Tm5hb1NXRGxOU3V1MzF2a25tSFVWRHhTNkhwek1nMXlEOVZzMnZMUG1lZ29nSkdENGt3WlgwUjBJZnhydndYNkZSd0ZsaHRHdEozSHBIa3QwT3FWTmdXc3RxVFhYUDBCR3dnWkxIRWVvRlZObG15UC83SzU1aEZPZWpocU8=; Path=/" 
  3. ]
复制代码
以下是完整的login代码:
  1. login: (fn) -> 
  2.     wx_usr = config.wx.user 
  3.     wx_pwd = md5 config.wx.pwd 
  4.     request 
  5.       .post('http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN') 
  6.       .type('form') 
  7.       .send( 
  8.         username: wx_usr 
  9.         pwd1: wx_pwd 
  10.         pwd2: wx_pwd 
  11.         imgcode : '' 
  12.         f : 'json' 
  13.       ) 
  14.       .end (res) -> 
  15.         cookie = '' 
  16.         for rs in res.header['set-cookie'] 
  17.           cookie += rs.replace(/Path=\//g, '') 
  18.         fn null, cookie
复制代码
在这里,我们已经完成登录的操作了,接下来,我们要做的是进行发送,在发送的时候,要把这个cookie设置在请求的地址中,接下来的代码比较简单:
  1. sender: (options, fn) -> 
  2.     msg = options.msg 
  3.     fakeid = options.fakeid 

  4.     unless msg 
  5.       fn error: 'missing msg' 
  6.       return 

  7.     unless fakeid 
  8.       fn error: 'missing fakeid' 
  9.       return 

  10.     psotParams = 
  11.       type: 1 
  12.       content: msg 
  13.       error: false 
  14.       tofakeid : fakeid 
  15.       ajax : 1 

  16.     request 
  17.       .post('http://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN') 
  18.       .type('form') 
  19.       .send(psotParams) 
  20.       .set('Cookie', options.cookie) 
  21.       .end (res) -> 
  22.         fn null, JSON.parse res.text
复制代码
这里,我们已经能完全发送了,因为返回的结果是一个json,所要最好先JSON.parse一下,里面的成功判断大家可以加上,返回的接口有个叫ret的参数,0为发送成功。

  1. ret: "0", 
  2. msg: "ok" 
  3. }
复制代码

海南网站建设|海南网站制作|海口网站建设|三亚网站建设|儋州网站建设|五指山网站建设|文昌网站建设|琼海网站建设|万宁网站建设|东方网站建设|定安网站建设|屯昌网站建设|澄迈网站建设|临高网站建设|白沙网站建设|昌江网站建设|乐东网站建设|陵水网站建设|保亭网站建设|琼中网站建设|海口精英网|三亚精英网|文昌精英网|琼海精英网|陵水精英网|儋州精英网|万宁精英网|澄迈精英网|海微通
合作伙伴 企业发展 企业文化 联系我们 在线订购 网站地图 返回首页手机版
海口世纪华联科技有限公司2024版权所有 24小时服务热线:13807590485   欢迎来电咨询
地址:海南省.海口市.海甸二东路环惠大厦6楼(南宝路明都大厦107#) 公司电话:0898-31568080 31568060 QQ:85398489
全国合作联盟分布:海南海口 四川成都 湖北武汉 湖南长沙 安徽合肥 广东深圳 山西太原 西藏拉萨
技术服务: E_mail:server@hnzlweb.com 服务订购:E_mail:server@hnzlweb.com 在线客服邀请 琼ICP备10201086号-15
推广关键字:临高网站建设,临高网站制作,临高网站开发,临高微信开发,临高微信公众号开发,临高微信公众号代运营,临高模板网站制作,临高网页设计,临高网络公司