您的位置:首页 > 移动开发 > 微信开发

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

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

参考了另外一位兄弟的文章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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: