微信公众平台开发实例-校园网流量自动查询

听说微信公众平台很火,刚好最近破解了学校流量查询网站验证码的漏洞。就做了一个查询的公共账号。

参考了另外一位兄弟的文章http://blog.alphatr.com/weixin-api.html

以及一个开源项目https://github.com/zscorpio/weChat ,通过抓包Hack实现平台信息主动推送的(微信官方暂时没有提供主动推送的API)

遇到的比较棘手的问题是: 学校的流量查询网站是教育网,微信的服务器根本无法访问!

想到了使用代理的方案,具体如下:

环境:百度BAE代码,公网主机A,校园网主机B (A不能部署代码)

B SSH 到A上,ssh -NCfg -R 8080:127.0.0.1:8080 root@A

这样在A上所有到8080端口的数据包都会转发到B主机上。

然后就有三种方案:

      A .  在B主机上做一个Squid代理。 这样就形成了一个公网到教育网的HTTP代理服务器。

      B .  如果在B主机上 ssh -NCfg -D 1080 root@B ,就是一个Sock5代理

      C.   在B上直接部署代码。

经过实践,由于BAE的奇葩环境,php_curl不能用Sock5代理,而且同一个脚本中不能多次请求。

最终采用了C方案.(也许用php_curl经过HTTP代理也可以,不过真心不想再试了)

整体思路就是:

 1  用户发送消息到微信公共账号

 2  微信服务器将消息体发送到指定的BAE的URL中

 3  BAE中的代码,通过代理,将消息体再发给主机B。

 4  主机B模拟登陆校内网站,得到数据后,一次返回。

 

具体的技术细节就是PHP的 curl  socket_create , 再就是对HTTP数据包的构造。

碰到的奇葩问题是:

socket_create里不可以有connection: keep-alive

百度BAE环境中,一个PHP脚本,在执行过程中,只能生成一次socket_create

 

 

posted @ 2013-04-09 22:56  wpjsolo  阅读(2615)  评论(1编辑  收藏  举报