宝塔API使用范例
import hashlib
import time
import json
import requests
class BtApi:
__BT_KEY = 'LKk*************'
__BT_PANEL = 'http://*******:***'
# 如果希望多台面板,可以在实例化对象时,将面板地址与密钥传入
def __init__(self, bt_panel=None, bt_key=None):
if bt_panel:
self.__BT_PANEL = bt_panel
self.__BT_KEY = bt_key
self.cookies = {}
# 自定义命令
def sudo(self, url, other=None):
url = self.__BT_PANEL + url
p_data = self.__get_key_data()
if other:
p_data.update(other)
result = self.__post(url=url, data=p_data)
print(json.loads(result.text))
# Post
def __post(self, url, data):
if not self.cookies:
result = requests.post(url=url, data=data)
self.cookies['cookies'] = result.cookies.values()[0]
return result
else:
result = requests.post(url=url, data=data, cookies=self.cookies)
self.cookies['cookies'] = result.cookies.values()[0]
return result
# 构造带有签名的关联数组
def __get_key_data(self):
now_time = int(time.time())
data = {
'request_token': self.__get_md5(str(now_time) + '' + self.__get_md5(self.__BT_KEY)),
'request_time': now_time
}
return data
@staticmethod
def __get_md5(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()
if __name__ == '__main__':
api = BtApi()
p = {
'table': 'logs',
'limit': 10,
'tojs': 'test'
}
api.sudo('/data?action=getData', other=p)
api.sudo('/system?action=GetSystemTotal')
api.sudo('/site?action=get_site_types')
文档最后编辑于3年前
评论已关闭