组装http报文调用小黄鸡网页端消息接口
小黄鸡网页端 消息 接口 http报文
作者:http://www.cnblogs.com/hdl1992/
之前看过一篇博文(http://www.cnblogs.com/txw1958/archive/2013/02/07/weixin-if8-simsimi.html)也是调用小黄鸡网页端的消息接口,但是他的做法是直接用GET请求调用,但这样会被检测出来,导致不会返回正确的数据,只会返回{"response":"SimSimi is tired, I only can speak 200 time a day. Please visit again tomorrow. See ya~ ","id":1,"result":100,"msg":"OK."},原因应该是调用这个接口有限制。虽然直接用GET请求不行,但可以组装完整的http报文后在发送GET请求。
但在这之前需要做些准备工作——用wireshark这款软件抓取在小黄鸡网页端发送消息时的数据包。抓包情况如下:
发送消息的包
主要是看cookie的内容,因为太长了贴图看不到,后来经过试验得出cookie要包括这几个变量:sagree、selected_nc、JSESSIONID、AWSELB
接收消息的包
可以看出返回的数据是一个json数据
做到这里就可以组装一个完整的http报文调用小黄鸡的消息接口了,不过在这之前最好了解下http报文的格式。我是用php的curl功能进行调用,整个流程代码如下:
1 <?php 2 function simsimiHttp($keyword) 3 { 4 $JSESSIONID = 'JSESSIONID=B86064A18BB84AB21DF283963671E42C'; 5 $AWSELB = 'AWSELB=15E16D030EBAAAB8ACFf4BD9BB7E0CA8FB501388662941563CCCE3FBA00C1966E7EFC7E79C02 6 70B337A9EB2DC66B3E19A07708673470FDFA0B2C01AB735E6CC2ABE3DC5F3AF'; 7 //模拟http报文发送消息 8 $ch = curl_init('http://www.simsimi.com/func/req?lc=ch&msg='.$keyword); 9 $header = array("Accept: application/json, text/javascript, */*; q=0.01", 10 "X-Requested-With: XMLHttpRequest", 11 "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 12 Chrome/27.0.1453.116 Safari/537.36", 13 "Content-Type: application/json; charset=utf-8", 14 "Referer: http://www.simsimi.com/talk.htm", 15 "Accept-Encoding: gzip,deflate,sdch", 16 "Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3", 17 "Cookie: sagree=true; ".$AWSELB."; selected_nc=ch; ".$JSESSIONID, 18 "Connection: keep-alive" 19 ); 20 21 curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 22 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 23 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 24 $data = curl_exec($ch); 25 curl_close($ch); 26 27 return $data; 28 } 29 30 //转义特殊字符 31 function changeSpecialCharacter($str) 32 { 33 $str = str_replace(' ', '%20', $str); 34 $str = str_replace('@', '%40', $str); 35 $str = str_replace('#', '%23', $str); 36 $str = str_replace('%', '%25', $str); 37 $str = str_replace('&', '%26', $str); 38 $str = str_replace('(', '%28', $str); 39 $str = str_replace(')', '%29', $str); 40 $str = str_replace('+', '%2B', $str); 41 $str = str_replace('=', '%3D', $str); 42 $str = str_replace('<', '%3C', $str); 43 $str = str_replace('>', '%3E', $str); 44 $str = str_replace('"', '%22', $str); 45 $str = str_replace(',', '%2C', $str); 46 $str = str_replace('/', '%2F', $str); 47 $str = str_replace(':', '%3A', $str); 48 $str = str_replace(';', '%3B', $str); 49 $str = str_replace('?', '%3F', $str); 50 $str = str_replace('\\', '%5C', $str); 51 $str = str_replace('|', '%7C', $str); 52 53 return $str; 54 } 55 56 $keyword = 'hello world'; 57 echo simsimiHttp(changeSpecialCharacter($keyword)); 58 ?>
其中simsimiHttp是组装报文调用小黄鸡消息接口的函数,其中最主要的是仿造上面抓取的发送消息包的格式构造正确的http请求报文头。值得注意的是因为我们是用GET请求调用接口,需要把我们发送的消息添加到请求的url中,因此需要发送的消息中的特殊字符(例如空格,<,>这些字符)转义成正确的形式,所以要有changeSpecialCharacter这个函数。以上代码调用的结果为{"response":"侬好","id":24444807,"result":100,"msg":"OK."}。一开始还担心cookie的有效期的问题,但后来总结出不用担心这个问题,甚至不用担心cookie变量的值是否正确,只需要cookie包含那几个变量。
不过这个做法的效率不是很高,可能是因为小黄鸡的服务器在国外的原因,平均一次调用需要1秒左右的时间(在新浪SAE估计更慢)。
效率测试——使用Apache的ab功能,用10个并发完成30请求, 命令行为“ab -n 30 -c 10 http://localhost/test.php”,结果如下
因此,对响应速度要求比较高的应用不推荐使用这种做法。不过也可以尝试使用国外的服务器,这样的话响应速度应该会提高不少。
转载于:https://www.cnblogs.com/hdl1992/p/3264135.html
组装http报文调用小黄鸡网页端消息接口相关推荐
- 小黄鸡 php,PHP调用小黄鸡 api post发送
页面 function do_post_request($url, $data, $optional_headers = null) { $params = array('http' => ar ...
- Python实战系列之调用小黄鸡simsimi
直接从人人网小黄鸡代码里面提取一下了.https://github.com/insun/xiaohuangji 懒得申请SIMSIMI_KEY的话伪造User-Agent和Referer也能获取到 ...
- 通过调用小黄鸡接口进行自聊天
import urllib2 import json import sys reload(sys)sys.setdefaultencoding('utf-8')def xiaohuangji(cont ...
- 小黄鸡 php,php版小黄鸡simsimi聊天机器人接口分享
小黄鸡SimSimi是一个可爱的智能聊天机器人,他能和用户进行有趣的对话,本文主要介绍了php版小黄鸡simsimi接口使用的示例,大家参考使用吧 复制代码 代码如下: //----------- 抓 ...
- 小黄鸡simsimi聊天机器人接口分享
小黄鸡SimSimi是一个可爱的智能聊天机器人,他能和用户进行有趣的对话,本文主要介绍了php版小黄鸡simsimi接口使用的示例,大家参考使用吧 代码如下: <?php function si ...
- Simsimi 小黄鸡机器人最新无限制接口api simsimi机器人接口api 微信公众号
一.什么是Simsimi? simsimi公司是提供智能服务,其中一个服务是simsimi聊天机器人服务,每天有超过百万的用户聊天,国内最大的搜索引擎--百度的产品siri使用的就是simsimi提供 ...
- 小黄鸡微信接口 php,php版小黄鸡simsimi聊天机器人接口分享_PHP教程
复制代码 代码如下: function simsimi($keyword) { $keyword = urlencode(urlencode($keyword)); //---– 获取COOKIE - ...
- php小黄鸡,php版小黄鸡simsimi聊天机器人接口分享_PHP教程
复制代码 代码如下: function simsimi($keyword) { $keyword = urlencode(urlencode($keyword)); //---– 获取COOKIE - ...
- php机器人聊天对话框,php版小黄鸡simsimi聊天机器人接口分享
function simsimi($keyword) { $keyword = urlencode(urlencode($keyword)); //----------- 获取COOKIE ----- ...
- java simsimi_PHP_php版小黄鸡simsimi聊天机器人接口分享,复制代码 代码如下:?phpfuncti - phpStudy...
function simsimi($keyword) { $keyword = urlencode(urlencode($keyword)); //----------- 获取COOKIE ----- ...
最新文章
- lnline Hook初试
- vue 优化CDN加速
- kafka-python 停止消费
- python入门之运算符的使用的答案_python入门教程之基本算术运算符
- background-size 兼容ie8以下浏览器的方法
- 微信又出了一款新的APP
- 计算机系统-Unicode字符集与它包含的UTF-8解决方案
- Bootstrap-datetimepicker控件使用
- JVM垃圾回收机制之引用类型
- skyline 环境配置
- 暑假视力如何保护?护眼台灯可以保护视力
- 禁止计算机使用u盘启动,电脑禁用u盘的设置方法
- Github上的开源项目3
- 【Spark】Spark Quick Start(快速入门翻译)
- Java1.8接口方法都是抽象,判断(1分) Java接口中所有的方法都是抽象的。
- 崩坏星穹铁道PC、安卓、iOS三端配置要求
- 如何在应用中打开系统播放器
- 求个人所得税和税后收入
- IaaS PaaS SaaS云服务三种应用模式
- Linux下 Xpad不能移动拖动 解决办法
热门文章
- 计算机科学 院士 高校,快报!第5轮学科评估计算机科学与技术评委会名单,看有谁上榜了...
- python搜索关键词的公众号文章标题和路径_微信文章关键词爬虫教程
- Adobe Flash Player 是什么
- 计算机再带word打不开怎么办,word打不开怎么办
- 如何解决Word文件打不开呢?几个简单的步骤
- 计算机多媒体中的媒体种类,多媒体计算机中的媒体信息是指什么
- Windows XP/2000实现自动登陆(加入域和未加域两种情况)
- 创业感悟:有舍才会得,舍得才见风景
- 大学综评自招面试 计算机专业,自主招生中的综合评价面试技巧
- 【Win10 + Ubuntu 16.04/18.04双系统 + 双硬盘/单硬盘 安装】传统意义双系统