几年前建站还是有点门槛的,自从各种一键安装web环境,web面板出现后,整个建站行业受到了9999点暴击。最好用的应该就是宝塔面板了,从它发布开始,就受到不少人的追捧。宝塔面板是使用浏览器来进行管理的,那么也就是说它是和网页一样的操作方式来管理服务器。最近宝塔官方发布了部分api,供大家自定义管理面板,这些api通过浏览器进行抓包就能抓到,下面我们一起来看看这些api怎么使用。
宝塔api说明手册pdf地址:https://www.bt.cn/api-doc.pdf
首先是签名算法,每次请求必须有由签名算法计算出的签名服务器才会响应。
api_sk = 接口密钥 (在面板设置页面 – API 接口中获取)
request_time = 当前请求时间的 uinx 时间戳 ( php: time() / python: time.time() )
request_token = md5(string(request_time) + md5(api_sk))
PHP 示例
$request_token = md5($request_time . ‘’ . md5($api_sk))
参数说明
request_time 当前 uinx 时间戳 [必传]
request_token md5(string(request_time) + md5(api_sk)) [必传]
其它参数 功能接口需要的其它参数 [可选]
注意事项:
请统一使用 POST 方式请求 API 接口
为了确保请求效率,请保存 cookie,并在每次请求时附上 cookie
为了面板安全考虑,请务必添加 IP 白名单
所有响应内容统一为 Json 数据格式
官方示例
<?php /** * 宝塔API接口示例Demo * 仅供参考,请根据实际项目需求开发,并做好安全处理 * date 2018/12/12 * author 阿良 */ class bt_api { private $BT_KEY = "u6dS9qE1pyRZDnTpYrZiwaHqo5pSgXCO"; //接口密钥 private $BT_PANEL = "http://127.0.0.1:8888"; //面板地址 //如果希望多台面板,可以在实例化对象时,将面板地址与密钥传入 public function __construct($bt_panel = null,$bt_key = null){ if($bt_panel) $this->BT_PANEL = $bt_panel; if($bt_key) $this->BT_KEY = $bt_key; } //示例取面板日志 public function GetLogs(){ //拼接URL地址 $url = $this->BT_PANEL.'/data?action=getData'; //准备POST数据 $p_data = $this->GetKeyData();//取签名 $p_data['table'] = 'logs'; $p_data['limit'] = 10; $p_data['tojs'] = 'test'; //请求面板接口 $result = $this->HttpPostCookie($url,$p_data); //解析JSON数据 $data = json_decode($result,true); return $data; } /** * 构造带有签名的关联数组 */ private function GetKeyData(){ $now_time = time(); $p_data = array( 'request_token'=>md5($now_time.''.md5($this->BT_KEY)), 'request_time'=>$now_time ); return $p_data; } /** * 发起POST请求 * @param String $url 目标网填,带http:// * @param Array|String $data 欲提交的数据 * @return string */ private function HttpPostCookie($url, $data,$timeout = 60) { //定义cookie保存位置 $cookie_file='./'.md5($this->BT_PANEL).'.cookie'; if(!file_exists($cookie_file)){ $fp = fopen($cookie_file,'w+'); fclose($fp); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output = curl_exec($ch); curl_close($ch); return $output; } } //实例化对象 $api = new bt_api(); //获取面板日志 $r_data = $api->GetLogs(); //输出JSON数据到浏览器 echo json_encode($r_data); ?>
返回的数据都是json类型,目前宝塔提供的api不够全面,比如我要通过指定字段搜索网站,宝塔只提供了一个模糊搜索的接口,不好用,需要自己构造排除数据,浪费时间性能。
版权声明
1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)
- 上一篇: zblog php禁止浏览器直接访问模板文件代码
- 下一篇: 小米小爱触屏音箱LX04安装第三方软件
发表评论