您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
配置宝塔key
- // ==UserScript==
- // @name Add API Key Config Button
- // @namespace http://tampermonkey.net/
- // @version 0.3
- // @description 配置宝塔key
- // @author You
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // 检查当前页面是否为 IP:端口 格式
- const url = new URL(window.location.href);
- const isIpPort = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/.test(url.host);
- if (isIpPort) {
- // 创建按钮
- const button = document.createElement('button');
- button.textContent = '配置 API Key';
- button.style.position = 'fixed';
- button.style.zIndex = '9999';
- button.style.top = '10px';
- button.style.right = '10px';
- // 添加点击事件处理程序
- button.addEventListener('click', async () => {
- var apiUrl = `http://${url.host}/config?action=set_token`;
- var requestBody = `t_type=3&limit_addr=${document.domain}`;
- var response = await sendRequest(apiUrl, requestBody);
- var decodedResult = decodeUnicode(response);
- alert(`API 响应结果:\n${JSON.stringify(decodedResult, null, 2)}`);
- apiUrl = `http://${url.host}/config?action=set_token`;
- requestBody = `t_type=2`;
- response = await sendRequest(apiUrl, requestBody);
- decodedResult = decodeUnicode(response);
- alert(`API 响应结果:\n${JSON.stringify(decodedResult, null, 2)}`);
- });
- // 将按钮添加到页面
- document.body.appendChild(button);
- const getKeyButton = document.createElement('button');
- getKeyButton.textContent = '获取 API Key';
- getKeyButton.style.position = 'fixed';
- getKeyButton.style.zIndex = '9999';
- getKeyButton.style.top = '50px';
- getKeyButton.style.right = '10px';
- // 添加点击事件处理程序
- getKeyButton.addEventListener('click', async () => {
- var apiUrl = `http://${url.host}/config?action=get_token`;
- var requestBody = `t_type=3&limit_addr=${document.domain}`;
- var response = await sendRequest(apiUrl, requestBody);
- var decodedResult = decodeUnicode(response);
- prompt('复制到shell执行可免输key',`echo -e "${decodedResult.token}\nhttp://${url.host}" >> /home/bt_config.txt`);
- });
- // 将按钮添加到页面
- document.body.appendChild(getKeyButton);
- }
- // 发送 API 请求并返回响应数据
- async function sendRequest(url, body) {
- var request_token = window.vite_public_request_token;
- const response = await fetch(url, {
- headers: {
- "accept": "*/*",
- "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
- "cache-control": "no-cache",
- "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
- "pragma": "no-cache",
- "proxy-connection": "keep-alive",
- "x-http-token": request_token,
- "x-requested-with": "XMLHttpRequest"
- },
- referrer: `http://${url.host}/config`,
- referrerPolicy: "strict-origin-when-cross-origin",
- body,
- method: "POST",
- mode: "cors",
- credentials: "include"
- });
- return await response.json();
- }
- // 解码 Unicode 编码的中文字符
- function decodeUnicode(data) {
- return JSON.parse(JSON.stringify(data).replace(/\\/g, '\\\\').replace(/\u([0-9a-fA-F]{4})/g, '\\u$1'));
- }
- })();