PHP调用Python模拟微信浏览器查询面试信息

投了大鹅厂的QA,没有等到笔试的通知,周六的下午回学校进行了人生中第一次霸笔,虽然心情比较忐忑但最终还是顺利的得到笔试机会。鹅厂的软开题感觉难度在BAT中算是最低的,同考场的很多人都没有到两个小时就交卷走人了。我也在差不多还是10几分钟结束的时候交卷。感觉答得还可以。鹅厂的校招网站上写16号开始面试,于是15号那天下午到晚上隔一会就要打开微信查一下状态,可惜一直没有结果。

从微信中用Safari打开查询页面的时候提示“请从微信访问”,猜测页面对User-Agent做了判断,需要模拟POST的方式将自定义的查询信息传过去。正好手上在做短信接口的时候有实现的代码,想写一个简单的查询接口。Burp抓了一下包,结果如图:
goosefactory-burp
看来微信浏览器访问的UA信息是Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a MicroMessenger/5.4.1 NetType/WIFI

正常来说按照Header里面的内容传参数就可以了,可是用了两种方式在PHP上都没能成功实现,第二天还要去面试没法继续debug下去了,就让小哥写了一段Python把整个包重发一遍先用,回头再来改我的代码。
PHP下调用外部程序可以通过 exec() , system() passthru() 来实现,具体的区别可以点进去看manual,开始调用的时候设错了python文件的权限,exec()返回值一直是2。正常情况下返回值应该是0或1,2的情况google了一会也没有找到答案,于是建了一个python的hello做对比,同时将发包的python文件全注释了逐行调试,最后找到了问题所在。

然后写了一个查询的表单,在PHP上对参数做了简单的验证,试了一下没问题就睡觉了。睡前想把CSS弄得漂亮点,可以PC上和移动端一直没法弄到同样的效果,Bootstrap的学习还要继续深入,先保证iPad上的样式美观就好,功能第一。

如果今天鹅厂的强面顺利,回来就给这个接口加一个自动查询功能,状态有变之后短信通知查询的手机号。感觉用到redis会比较方便,不知道vps 1G的内存可不可以装,回来研究下。

链接在此 http://goosefactory.bydell.com

补张图
goosefactory-iPad

欢迎留言讨论