「分分钟上手weiphp插件开发」Vol.7——模拟请求技术在weiphp插件中的应用

🕓 · ☕4 min read

博主对于curl网页采集技术可谓是研究颇深,上个学期用curl技术写的一个名为“高校头条”的新闻采集系统前段时间刚刚卖出去了,同样用curl技术写的一个微信文章采集的weiphp插件“掌上头条”自发布以来已经卖出去几十个了,衷心感谢各位朋友对博主的支持,也让博主有了更高的热情在网页采集与数据挖掘这一领域更进一步的走下去。

关于curl采集技术在weiphp插件中的实际运用我前面已经写过好多篇文章了,今天要给大家讲的是模拟请求技术,说白了也是curl的一种形式,就是在自己的代码中往目标网址模拟发送数据包,从而获得所需要的内容。很多人做过的刷票、论坛批量发帖基本上都是类似的原理。

在weiphp系统中,有一个自带的插件叫“智能聊天”。在插件配置界面有一个填写图灵机器人key的文本框,用户需要在图灵机器人官网申请到一个正确的key值并填入此框,才能使用图灵机器人智能聊天的功能。

但是呢,经常有朋友反馈说图灵机器人莫名其妙的就失效了。似乎通过申请图灵机器人key来使用智能聊天功能并不是一个很好的解决方案。于是博主便去图灵机器人官网的产品体验区体验了一发。

体验的感觉还是不错的,图灵机器人的回复还算比较智能。于是博主便想到了在weiphp插件中模拟产品体验中与图灵机器人聊天的这个过程。当用户在微信端发送关键词后,把用户的关键词模拟提交到图灵机器人的智能回复处理地址,获得图灵机器人的回复内容,然后再把内容发送给用户。整个思路还是很清晰。下来就来讲一下流程。

1、先来抓个包看一下,不需要安装fiddler、firebug之类的高级抓包工具,用chrome浏览器的F12调试面板就可以了。

2、通过抓包我们可以清晰的看到当用户发送“你吃饭没有”时,数据请求的地址是:http://www.tuling123.com/openapi/productexp.do,请求方式是:POST,带的cookie是:JSESSIONID=aaa4rSE2Lk_HZ-XBWkb2u;(后面那个cookie是cnzz的cookie,没有多大用),发送的数据是:你吃饭没有。

3、再来看一下接收到的数据。可以看到接收的是xml格式的数据,标签里的“刚吃了”就是我们需要的数据。

4、整个与图灵机器人聊天的过程中数据包传输的过程我们已经弄清楚了,只需要写一段代码来模拟这个过程就可以获得我们所需要的数据了。那么现在还需要搞清楚的一个问题就是:聊天过程中发送的cookie是怎么来的。分析之后我们可以发现,模拟聊天过程中并没有要求我们登陆,也就是说这个cookie不是在用户登陆之后才得到的,而是访问这个聊天页面时自动生成的。所以我们只需要在模拟聊天之前访问这个页面,获得相应的cookie,然后再带着这个cookie去模拟发送数据到处理聊天的地址,就可以获得图灵机器人的回复内容了。

5、整个思路搞清楚了,下面上代码。我们更改一下weiphp自带的智能聊天插件Chat,把模拟图灵机器人聊天的代码加上,让每次用户在微信端输入内容后,把用户输入的内容模拟发送到图灵机器人的聊天处理地址,然后通过正则表达式匹配出图灵机器人回复的内容,再把匹配出的内容回复给用户,整个微信端智能聊天过程就这么搞定了。直接上代码,看不懂的请百度 curl教程。

6、代码写完之后只要在微信端发送内容,系统就会自动的把用户发送的内容post到图灵机器人的聊天处理地址,然后把匹配出来的内容回复给用户。妥妥的整个数据模拟请求的过程就实现了。不过由于整个数据模拟请求过程中涉及到跨域请求,内容回复可能会有一点点的延迟~

由于博主时间、精力有些,一些细节过程就没有详细写出来了,但凡有点php基础的朋友对整个过程理解起来应该不是很费劲。