宝塔API使用范例

宝塔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年前

评论

评论已关闭

小小英雄杜恩

子曰:“弟子入则孝,出则弟,谨而信,泛爱众,而亲仁。行有余力,则以学文。”


:D 获取中...