寶塔面板的api說明手冊及簡單使用
幾年前建站還是有點門檻的,自從各種一鍵安裝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數據格式
官方示例
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不夠全面,比如我要通過指定字段搜索網站,寶塔只提供了一個模糊搜索的接口,不好用,需要自己構造排除數據,浪費時間性能。