最近,因为一些原因,项目有希望可以通过API的方式去推送每天的百度指数信息。故此,就有了这篇文章。
首先所有人都会想到的一个办法,使用集成接口,这个虽然简单,但是却是收费的。
而且还贼贵。关键是这个数据在页面是免费可以拿到,但是到了黑心供应商这里,就奇货可居了。
还有同学会问,百度指数官方应该是有接口的啊? 为啥不用呢? 阿西吧,最坑的就是这个了,百度指数不提供任何形式的API接口。
不慌不慌,我们先抓个包看看请求把:
果不其然,随便一抓包,我们就发现了相关暴露的API。但是需要做一些预处理,比如添加Cookie头等等等。
不过好在我们解决了第一步,找到预处理的接口。
下面我们来看如何通过云函数把冗余代码做二次封装把:
1. 首先,我们需要创建一个 PHP 云函数 (PHP劝退,哈哈哈哈) https://console.cloud.tencent.com/scf/
2.其次,我们创建一个空白函数,它大致长这样
<?php function main_handler($event, $context) { $event = json_decode(json_encode($event), true); $context = json_decode(json_encode($context), true); $word = $event['queryString']['word']; //获取需要查询的关键词 $startDate = $event['queryString']['startDate']; //获取需要查询起始时间 $endDate = $event['queryString']['endDate']; //获取需要查询截至时间 $curlzb = curl_init(); curl_setopt_array($curlzb , array( CURLOPT_URL => "https://index.baidu.com/api/SearchApi/index?area=0&word=".$word."&startDate=".$startDate."&endDate=".$endDate, //输入参数 CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Cookie: BIDUPSID=B0C30AEB4CE3D; PSTM=95574; BAIDUID=1D274ED03FE39D4D1C38A4:FG=1..." // 百度的 Cookie ), )); $responsezb = curl_exec($curlzb); curl_close($curlzb); $echo_arrzb = json_decode($responsezb, true); return $echo_arrzb['data']['generalRatio'][0]; //返回 generalRatio 字段取值 } ?>
3. 我们创建一个APIGW触发器,大致长这样:
然后,我们尝试访问下:
这样,一个查询百度指数的API就算是封装好了。我们也可以上架云市场去卖钱了。哈哈哈
作为良心博主,我当然不会做这样的事情的。一个小思路,献给大家。