bthost请求例子-Python编程论坛-python编程-青柠博客

bthost请求例子

关于bthost

btHost(btai.cc)是一款基于宝塔面板开发的一款用于独立控制虚拟主机管理的程序,具有丰富的API,强大管理功能,丰富的模块,完整的权限控制,自适配Linux、Windows版宝塔面板(最新)

使用文档:https://www.kancloud.cn/youngxj/bthost_manual/1926353

api开发文档:https://docs.apipost.cn/view/bad40855d7b411f5#2685899

 

Api的简单使用

首先就是官方的接口demo

1.公共参数

就像官方所说,公共参数,发起调用时必须存在

请求参数 说明 请求方式
time uinx当前时间戳 1598500617 get、post
random 随机字符串,每次请求时随机生成 SPZJoB get、post
signature 签名,请查看下文签名生成方法 A2F18OXO6UEYS4FSHEP8Q3PLR9OZ4N0Z get、post

2.请求示例(其中signature值为签名,签名方法具体看第四步)

 
https://bthost.yum6.cn/api/vhost/index?time=1598500617&random=SPZJoB&signature=A2F18OXO6UEYS4FSHEP8Q3PLR9OZ4N0Z

 

3.后台令牌设置

此图片的alt属性为空;文件名为image.png

 
 

4.签名方法

PHP示例

 
$data['time']   = time();
$data['random'] = mt_rand(); 
$data['token']  = $access_token;    //API通信密钥 自行配置的令牌,不清楚可看概述章节。
sort($data,SORT_STRING);
$str = implode($data);
$signature = md5($str);
$signature = strtoupper($signature);    //最终得到加密后全大写的签名

 

PHP demo

 
<?php

$api = 'https://bthost.yum6.cn/api/vhost';      // API地址,bthost.yum6.cn替换自己的域名或IP
$access_token = '55744dsadasd';                 // API通信密钥 自行配置的令牌,不清楚可看概述章节。
$data['time']   = time();
$data['random'] = mt_rand();
$data['token']  = $access_token;
$datas = $data;

sort($data, SORT_STRING);
$str = implode($data);
$signature = md5($str);
$signature = strtoupper($signature);

unset($datas['token']);                          // 安全起见,不传递token参数
$get_data = http_build_query($datas);
$url = $api. '/index?'. $get_data. '&signature='.$signature;
echo file_get_contents($url);

 

js请求demo

 
function timest() {
  var tmp = Date.parse( new Date() ).toString();
  tmp = tmp.substr(0,10);
  return tmp;
}

function randomString(e) {  
  e = e || 32;
  var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
  a = t.length,
  n = "";
  for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));
  return n;
}

function implode (glue, pieces) {
  var i = '',
    retVal = '',
    tGlue = '';
  if (arguments.length === 1) {
    pieces = glue;
    glue = '';
  }
  if (typeof pieces === 'object') {
    if (Object.prototype.toString.call(pieces) === '[object Array]') {
      return pieces.join(glue);
    }
    for (i in pieces) {
      retVal += tGlue + pieces[i];
      tGlue = glue;
    }
    return retVal;
  }
  return pieces;
}

$timesss = timest();                    // 时间戳
$randdddd = randomString(6);            // 随机字符
$acctoken = '0VWx31Gd2kc5';             // API通信密钥 自行配置的令牌,不清楚可看概述章节。
$data = [$timesss,$randdddd,$acctoken];
$data.sort();
$str = implode($data);
$signature = $.md5($str);
$signature = $signature.toUpperCase();    //最终得到加密后全大写的签名

 

python请求Demo

 
import requests
import time
import random
import hashlib
def bt_api(): 
    t=int(time.time())
    r1=random.sample('ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678',6)
    r=r1[0]+r1[1]+r1[2]+r1[3]+r1[4]+r1[5]#随机数
    token='API通信密钥 自行配置的令牌'
    m=m=str(t)+str(r)+str(token)
    m1 = hashlib.md5()
    m1.update(m.encode(encoding='utf-8'))
    m2=m1.hexdigest().upper()  #得到的签名
    url='https://bthost.yum6.cn/api/vhost/index?time='+str(t)+'&random='+r+'&signature='+m2
    res=requests.get(url).text

 

    没有回复内容