用CURL实现微信公众平台的消息推送功能

2013.3.21更新:腾讯最近修改了验证码的bug,但是我们可以截获他的验证码网址然后保存Cookie,并拉取验证码图片。通过手动输入验证码,并每次访问都用新浪的KVDB高速数据库保存cookie,可以实现很长时间内不受其影响

原文

麻花藤家发布的微信发展实在是快。最近公众平台也炒的很火,特别是开放了开发者接口以后,各种应用正如火如荼。但是开发者接口却没有开放主动的消息推送功能,这使得公众平台的宣传效果大打折扣。 最近在帮忙一个歌唱比赛的微信平台开发,午饭后测试了一下用模拟登陆的方法来实现消息推送,没想到一试还真能用。但是不知道腾讯会不会抵制这种行为,给我来个封号什么的。。。所以各位就算实现了这个功能,也不要乱发垃圾消息为妙。

实现的方法很简单,首先需要使用curl来发送get和post请求。

第一步是登陆,也就是给登陆地址发送一个post请求。关于URL嘛。。。有个神器叫做Firebug,在Firefox上运行的,可以抓包什么的,用来看各种请求的内容非常方便。 获取了登陆界面的地址之后,将post请求的各个参数都填好,密码的话腾讯是把明文密码做md5加密之后发送的,咱也做个md5之后填上去就好咯。另外腾讯对于这样的登陆方式竟然没有返回验证码要求,而是通通放行。我对此表示无语。。。

登陆之后,请使用curl来保存和读取cookies到临时文件中,每次请求都请更新cookies。

登陆之后的活动就随意啦~你可以扫描一下用户列表,也可以发送消息。这些URL请自己Firebug。。。要截获发送消息的URL请用浏览器自己试着发一条消息,会截获一个post请求,就在那个里面

发送消息需要使用用户的Fakeid,获取方法是点开用户列表里面的头像,弹出的对话网页链接里面有个参数叫fromfakeid的就是了。

这种方法有个问题就是对于水果用户发出的消息没有推送提醒。。不过好像直接用浏览器发的也没有,估计是腾讯为了防范骚扰信息吧。

最后重复一遍,风险自负,请不要用来发送垃圾消息。。。

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。