【支持国际版】硅基流动 Key 余额批量查询工具

[复制链接]
146 |9
发表于 2025-11-4 12:05:53 | 显示全部楼层 |阅读模式
站内原来那个批量查询工具不支持国际版硅基流动站,我就自己写了个支持的

硅基流动key余额批量查询工具

用途说明

发现有很多人不知道这软件干啥的,特此说明一下
每个硅基账号注册时会送14额度,多注册账号,就有多额度
网上,例如海鲜市场,可以低价买别人批量注册的key,然后配合负载均衡软件,自动切换key,从而低价使用硅基的AI;
这个软件就是拿来查买的key的额度使用情况的,防止被骗,在后续使用时也可以查看每一个key的消耗情况,并将用完的key丢弃。
软件优点

官方接口查询:使用/v1/user/info接口,多线程批量查询key的余额
余额分组显示:按用量情况分组,可分别复制
国内国际切换:点按右上角按钮可自由切换国内国际版
分组一键复制:可一键复制对应分组,并粘贴到其他软件(例如GPT-Load)
打包便携exe:使用Pyhinstaller打包py代码为exe,随下随删
链接:https://lanzouq.com/b002v9f7gh
密码:52pj
源码贴在后面了,有需要可以自取






[Python]  
[code]# siliconflow.py
import tkinter as tk
from tkinter import scrolledtext, messagebox
import requests
import threading
from concurrent.futures import ThreadPoolExecutor, as_completed
import sys

# =============== 高DPI支持 ===============
if sys.platform == "win32":
    from ctypes import windll
    windll.shcore.SetProcessDpiAwareness(1)

# =============== API 配置 ===============
def get_api_url():
    """根据国际版选项返回对应的API端点"""
    if international_mode:
        return "https://api.siliconflow.com/v1/user/info"
    else:
        return "https://api.siliconflow.cn/v1/user/info"

HEADERS_TEMPLATE = {
    "accept": "*/*",
    "accept-language": "zh-CN,zh;q=0.9",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
}

# =============== 查询函数 ===============
def query_balance(api_key):
    headers = HEADERS_TEMPLATE.copy()
    headers["authorization"] = f"Bearer {api_key.strip()}"
    try:
        api_url = get_api_url()
        response = requests.get(api_url, headers=headers, timeout=10)
        if response.status_code == 200:
            data = response.json()
            if data.get("status") and "data" in data:
                balance = float(data["data"]["balance"])
                return {"key": api_key.strip(), "balance": balance, "success": True}
    except Exception:
        pass
    return {"key": api_key.strip(), "balance": 0.0, "success": False}

# =============== 全局变量(用于复制)===============
valid_keys_in_range = []  # balance > 0.3
zero_keys = []           # balance  high_threshold:
                groups[high_label].append(r)
                valid_keys_in_range.append(r["key"])  # 高于阈值的都属于>低阈值
            elif low_threshold < bal

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 2025-11-4 12:06:24 | 显示全部楼层
批量注册硅基号,用他免费余额跑AI的才会用这个查询软件
回复

使用道具 举报

发表于 2025-11-4 12:07:05 | 显示全部楼层
请问有没有查第三方的,就是给一个api调用的地址,然后key这样的查询,之前有个,现在查不出来东西了[HTML]  
  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>API 查询工具</title>
  6.     <style>
  7.         /* 样式保持不变 */
  8.         body {
  9.             font-family: Arial, sans-serif;
  10.             line-height: 1.6;
  11.             color: #333;
  12.             max-width: 1200px;
  13.             margin: 0 auto;
  14.             padding: 20px;
  15.             background-color: #f4f4f4;
  16.         }
  17.         .container {
  18.             background-color: #fff;
  19.             padding: 20px;
  20.             border-radius: 5px;
  21.             box-shadow: 0 0 10px rgba(0,0,0,0.1);
  22.         }
  23.         h1, h2 {
  24.             color: #2c3e50;
  25.             text-align: center;
  26.         }
  27.         h3 {
  28.             margin-top: 20px;
  29.             color: #2c3e50;
  30.         }
  31.         input[type="text"], textarea {
  32.             width: 50%;
  33.             padding: 8px;
  34.             margin: 5px auto;
  35.             border: 1px solid #ddd;
  36.             border-radius: 4px;
  37.             box-sizing: border-box;
  38.             display: block;
  39.             text-align: center;
  40.             position: relative;
  41.         }
  42.         textarea {
  43.             height: 68px;
  44.             resize: vertical;
  45.         }
  46.         .editable-dropdown {
  47.             position: relative;
  48.             width: 50%;
  49.             margin: 5px auto;
  50.         }
  51.         .editable-dropdown input,
  52.         .editable-dropdown textarea {
  53.             width: 100%;
  54.             padding: 8px;
  55.             border: 1px solid #ddd;
  56.             border-radius: 4px;
  57.             box-sizing: border-box;
  58.             text-align: center;
  59.         }
  60.         .editable-dropdown .dropdown-icon {
  61.             position: absolute;
  62.             right: 10px;
  63.             top: 50%;
  64.             transform: translateY(-50%);
  65.             cursor: pointer;
  66.             font-size: 12px;
  67.         }
  68.         .dropdown {
  69.             position: absolute;
  70.             width: 100%;
  71.             max-height: 150px;
  72.             overflow-y: auto;
  73.             background-color: #fff;
  74.             border: 1px solid #ddd;
  75.             border-top: none;
  76.             z-index: 1000;
  77.             display: none;
  78.             left: 0;
  79.         }
  80.         .dropdown div {
  81.             padding: 8px;
  82.             cursor: pointer;
  83.             text-align: center; /* 选项居中 */
  84.         }
  85.         .dropdown div:hover {
  86.             background-color: #f2f2f2;
  87.         }
  88.         label {
  89.             display: block;
  90.             margin-top: 10px;
  91.             font-weight: bold;
  92.         }
  93.         button {
  94.             display: block;
  95.             width: 200px;
  96.             padding: 10px;
  97.             margin: 20px auto;
  98.             background-color: #3498db;
  99.             color: white;
  100.             border: none;
  101.             border-radius: 4px;
  102.             cursor: pointer;
  103.             font-size: 16px;
  104.         }
  105.         button:hover {
  106.             background-color: #2980b9;
  107.         }
  108.         table {
  109.             width: 100%;
  110.             border-collapse: collapse;
  111.             margin-top: 20px;
  112.         }
  113.         th, td {
  114.             border: 1px solid #ddd;
  115.             padding: 8px;
  116.             text-align: center;
  117.         }
  118.         th {
  119.             background-color: #f2f2f2;
  120.             font-weight: bold;
  121.         }
  122.         .model-category {
  123.             margin-top: 10px;
  124.         }
  125.         .model-category h3 {
  126.             text-align: left;
  127.         }
  128.         .model-list {
  129.             display: flex;
  130.             flex-wrap: wrap;
  131.             gap: 5px;
  132.         }
  133.         .model-item {
  134.             background-color: #e7f2fa;
  135.             padding: 3px 8px;
  136.             border-radius: 3px;
  137.             font-size: 14px;
  138.             cursor: pointer;
  139.             transition: background-color 0.3s;
  140.             margin-bottom: 2px;
  141.         }
  142.         .model-item:hover {
  143.             background-color: #d0e5f5;
  144.         }
  145.         #copyNotification {
  146.             position: fixed;
  147.             bottom: 20px;
  148.             right: 20px;
  149.             background-color: #4CAF50;
  150.             color: white;
  151.             padding: 10px;
  152.             border-radius: 5px;
  153.             display: none;
  154.         }
  155.     </style>
  156.     <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  157. </head>
  158. <body>
  159.     <div class="container">
  160.         <h1>API万能查询-支持Siliconflow</h1>
  161.         <label for="apiUrlInput">API请求URL:(格式:[url]https://api.openai.com[/url])</label>
  162.         <div class="editable-dropdown">
  163.             <input type="text" id="apiUrlInput" placeholder="请输入API请求URL" autocomplete="off">
  164.             <div class="dropdown-icon" id="urlDropdownIcon">▼</div>
  165.             <div id="urlDropdown" class="dropdown"></div>
  166.         </div>
  167.         <label for="apiKeyInput">API密钥(多个密钥请用回车分隔):</label>
  168.         <div class="editable-dropdown">
  169.             <textarea id="apiKeyInput" placeholder="请输入你的API Key,多个密钥请用回车分隔"></textarea>
  170.             <div class="dropdown-icon" id="keyDropdownIcon">▼</div>
  171.             <div id="keyDropdown" class="dropdown"></div>
  172.         </div>
  173.         <button id="queryBtn">查询余额和模型列表</button>
  174.         <div id="result"></div>
  175.         <div id="modelList"></div>
  176.     </div>
  177.     <div id="copyNotification">已复制到剪贴板</div>
  178.     <script>
  179.         $(document).ready(function() {
  180.             // 预设选项
  181.             var predefinedUrls = [
  182.                 { value: "https://api.openai.com", text: "官方通道 [url]https://api.openai.com[/url]" },
  183.                 { value: "https://api.openai-proxy.com", text: "反代通道 [url]https://api.openai-proxy.com[/url]" },
  184.                 { value: "https://api.xbyjs.top", text: "小北API通道 [url]https://api.xbyjs.top[/url]" },
  185.                 { value: "https://api.siliconflow.cn", text: "硅基通道 [url]https://api.siliconflow.cn[/url]" }
  186.             ];
  187.             // 读取并设置API请求URL
  188.             var savedUrl = localStorage.getItem('apiUrl') || 'https://api.openai.com';
  189.             $('#apiUrlInput').val(savedUrl);
  190.             // 读取并设置API密钥
  191.             $('#apiKeyInput').val(localStorage.getItem('apiKeys') || '');
  192.             // 显示URL下拉列表
  193.             function showUrlDropdown() {
  194.                 var storedUrls = JSON.parse(localStorage.getItem('storedUrls')) || [];
  195.                 var dropdown = $('#urlDropdown');
  196.                 dropdown.empty();
  197.                 // 组合预设选项和历史记录
  198.                 var allUrls = predefinedUrls.map(u => u.value);
  199.                 allUrls = allUrls.concat(storedUrls.filter(u => !allUrls.includes(u)));
  200.                 allUrls.forEach(function(url) {
  201.                     dropdown.append('<div>' + url + '</div>');
  202.                 });
  203.                 // 显示下拉列表
  204.                 dropdown.show();
  205.             }
  206.             $('#apiUrlInput').on('focus', function() {
  207.                 showUrlDropdown();
  208.             });
  209.             $('#urlDropdownIcon').on('click', function() {
  210.                 showUrlDropdown();
  211.             });
  212.             $('#apiUrlInput').on('input', function() {
  213.                 localStorage.setItem('apiUrl', $(this).val());
  214.             });
  215.             $('#apiUrlInput').on('blur', function() {
  216.                 setTimeout(function() {
  217.                     $('#urlDropdown').hide();
  218.                 }, 200); // 延迟隐藏以便点击选项
  219.                 // 保存URL到历史记录
  220.                 var storedUrls = JSON.parse(localStorage.getItem('storedUrls')) || [];
  221.                 var newUrl = $('#apiUrlInput').val().trim();
  222.                 if (newUrl !== '' && !storedUrls.includes(newUrl) && !predefinedUrls.some(u => u.value === newUrl)) {
  223.                     storedUrls.push(newUrl);
  224.                     localStorage.setItem('storedUrls', JSON.stringify(storedUrls));
  225.                 }
  226.                 localStorage.setItem('apiUrl', newUrl);
  227.             });
  228.             // 点击URL下拉选项
  229.             $('#urlDropdown').on('click', 'div', function() {
  230.                 $('#apiUrlInput').val($(this).text());
  231.                 $('#urlDropdown').hide();
  232.             });
  233.             // 显示Key下拉列表
  234.             function showKeyDropdown() {
  235.                 var storedKeys = JSON.parse(localStorage.getItem('storedKeys')) || [];
  236.                 var dropdown = $('#keyDropdown');
  237.                 dropdown.empty();
  238.                 storedKeys.forEach(function(key) {
  239.                     dropdown.append('<div>' + key + '</div>');
  240.                 });
  241.                 // 显示下拉列表
  242.                 if (storedKeys.length > 0) {
  243.                     dropdown.show();
  244.                 }
  245.             }
  246.             $('#apiKeyInput').on('focus', function() {
  247.                 showKeyDropdown();
  248.             });
  249.             $('#keyDropdownIcon').on('click', function() {
  250.                 showKeyDropdown();
  251.             });
  252.             $('#apiKeyInput').on('input', function() {
  253.                 localStorage.setItem('apiKeys', $(this).val());
  254.             });
  255.             $('#apiKeyInput').on('blur', function() {
  256.                 setTimeout(function() {
  257.                     $('#keyDropdown').hide();
  258.                 }, 200); // 延迟隐藏以便点击选项
  259.                 // 保存Key到历史记录
  260.                 var storedKeys = JSON.parse(localStorage.getItem('storedKeys')) || [];
  261.                 var newKeys = $('#apiKeyInput').val().split('\n').filter(key => key.trim() !== '');
  262.                 newKeys.forEach(function(key) {
  263.                     if (!storedKeys.includes(key)) {
  264.                         storedKeys.push(key);
  265.                     }
  266.                 });
  267.                 localStorage.setItem('storedKeys', JSON.stringify(storedKeys));
  268.                 localStorage.setItem('apiKeys', $('#apiKeyInput').val());
  269.             });
  270.             // 点击Key下拉选项
  271.             $('#keyDropdown').on('click', 'div', function() {
  272.                 var key = $(this).text();
  273.                 var existingKeys = $('#apiKeyInput').val().split('\n').filter(k => k.trim() !== '');
  274.                 if (!existingKeys.includes(key)) {
  275.                     existingKeys.push(key);
  276.                     $('#apiKeyInput').val(existingKeys.join('\n'));
  277.                 }
  278.                 $('#keyDropdown').hide();
  279.             });
  280.             $('#queryBtn').click(function() {
  281.                 var apiKeys = $('#apiKeyInput').val().split('\n').filter(key => key.trim() !== '');
  282.                 var baseUrl = $('#apiUrlInput').val().trim();
  283.                 // 保存最新的URL和API密钥
  284.                 localStorage.setItem('apiUrl', baseUrl);
  285.                 localStorage.setItem('apiKeys', $('#apiKeyInput').val());
  286.                 var resultHtml = "<h2>余额查询结果</h2>";
  287.                 var promises = [];
  288.                 apiKeys.forEach(function(apiKey, index) {
  289.                     var headers = {
  290.                         'Authorization': 'Bearer ' + apiKey.trim(),
  291.                         'Content-Type': 'application/json'
  292.                     };
  293.                     if (baseUrl === 'https://api.siliconflow.cn' || baseUrl === 'https://api.siliconflow.com') {
  294.                         promises.push(querySiliconFlowBalance(baseUrl, headers, index + 1));
  295.                     } else {
  296.                         promises.push(queryOpenAIBalance(baseUrl, headers, index + 1));
  297.                     }
  298.                 });
  299.                 Promise.all(promises).then(function(results) {
  300.                     resultHtml += results.join('');
  301.                     $('#result').html(resultHtml);
  302.                 });
  303.                 // 查询模型列表(使用第一个API密钥)
  304.                 if (apiKeys.length > 0) {
  305.                     var headers = {
  306.                         'Authorization': 'Bearer ' + apiKeys[0].trim(),
  307.                         'Content-Type': 'application/json'
  308.                     };
  309.                     queryModelList(baseUrl, headers);
  310.                 }
  311.             });
  312.             function querySiliconFlowBalance(baseUrl, headers, keyIndex) {
  313.                 return new Promise(function(resolve, reject) {
  314.                     $.ajax({
  315.                         url: baseUrl + "/v1/user/info",
  316.                         headers: headers,
  317.                         method: 'GET',
  318.                         success: function(response) {
  319.                             if (response.status && response.data) {
  320.                                 var data = response.data;
  321.                                 var resultHtml = "<h3>API密钥 #" + keyIndex + " (硅基流动)</h3>" +
  322.                                     "<table>" +
  323.                                     "<tr>" +
  324.                                     "<th>用户ID</th>" +
  325.                                     "<th>用户名</th>" +
  326.                                     "<th>邮箱</th>" +
  327.                                     "<th>余额(美元)</th>" +
  328.                                     "<th>充值余额(美元)</th>" +
  329.                                     "<th>总余额(美元)</th>" +
  330.                                     "</tr>" +
  331.                                     "<tr>" +
  332.                                     "<td>" + data.id + "</td>" +
  333.                                     "<td>" + data.name + "</td>" +
  334.                                     "<td>" + data.email + "</td>" +
  335.                                     "<td>" + data.balance + "</td>" +
  336.                                     "<td>" + data.chargeBalance + "</td>" +
  337.                                     "<td>" + data.totalBalance + "</td>" +
  338.                                     "</tr>" +
  339.                                     "</table>";
  340.                                 resolve(resultHtml);
  341.                             } else {
  342.                                 resolve("<p>API密钥 #" + keyIndex + " 余额查询失败:" + response.message + "</p>");
  343.                             }
  344.                         },
  345.                         error: function(error) {
  346.                             resolve("<p>API密钥 #" + keyIndex + " 余额查询出错:" + error.statusText + "</p>");
  347.                         }
  348.                     });
  349.                 });
  350.             }
  351.             function queryOpenAIBalance(baseUrl, headers, keyIndex) {
  352.                 var today = new Date();
  353.                 var startDate = new Date(today.getFullYear(), today.getMonth(), 1).toISOString().split('T')[0];
  354.                 var endDate = today.toISOString().split('T')[0];
  355.                 return new Promise(function(resolve, reject) {
  356.                     $.when(
  357.                         $.ajax({
  358.                             url: baseUrl + "/v1/dashboard/billing/subscription",
  359.                             headers: headers,
  360.                             method: 'GET'
  361.                         }),
  362.                         $.ajax({
  363.                             url: baseUrl + "/v1/dashboard/billing/usage?start_date=" + startDate + "&end_date=" + endDate,
  364.                             headers: headers,
  365.                             method: 'GET'
  366.                         })
  367.                     ).then(function(subscriptionData, usageData) {
  368.                         var accountBalance = subscriptionData[0].soft_limit_usd || subscriptionData[0].hard_limit_usd || 0;
  369.                         var usedBalance = usageData[0].total_usage / 100;
  370.                         var remainingBalance = accountBalance - usedBalance;
  371.                         var resultHtml = "<h3>API密钥 #" + keyIndex + " (OpenAI)</h3>" +
  372.                             "<table>" +
  373.                             "<tr>" +
  374.                             "<th>是否已绑定支付方式</th>" +
  375.                             "<th>账户额度(美元)</th>" +
  376.                             "<th>已使用额度(美元)</th>" +
  377.                             "<th>剩余额度(美元)</th>" +
  378.                             "<th>API访问权限截止时间</th>" +
  379.                             "</tr>" +
  380.                             "<tr>" +
  381.                             "<td>" + (subscriptionData[0].has_payment_method ? "是" : "否") + "</td>" +
  382.                             "<td>" + accountBalance.toFixed(2) + "</td>" +
  383.                             "<td>" + usedBalance.toFixed(2) + "</td>" +
  384.                             "<td>" + remainingBalance.toFixed(2) + "</td>" +
  385.                             "<td>" + (subscriptionData[0].access_until ? new Date(subscriptionData[0].access_until * 1000).toLocaleString() : "无限制") + "</td>" +
  386.                             "</tr>" +
  387.                             "</table>";
  388.                         resolve(resultHtml);
  389.                     }).fail(function(error) {
  390.                         resolve("<p>API密钥 #" + keyIndex + " 查询出错:" + error.statusText + "</p>");
  391.                     });
  392.                 });
  393.             }
  394.             function queryModelList(baseUrl, headers) {
  395.                 $.ajax({
  396.                     url: baseUrl + "/v1/models",
  397.                     headers: headers,
  398.                     method: 'GET',
  399.                     success: function(response) {
  400.                         var modelCategories = {
  401.                             'OpenAI': [],
  402.                             'Claude': [],
  403.                             'Google': [],
  404.                             '零一万物': [],
  405.                             '千问': [],
  406.                             '智谱模型': [],
  407.                             'BAAI': [],
  408.                             'DeepSeek': [],
  409.                             'Intern': [],
  410.                             'Moonshot': [],
  411.                             'Llama': [],
  412.                             'Mistral': [],
  413.                             '向量模型': [],
  414.                             'Other': []
  415.                         };
  416.                         response.data.forEach(function(model) {
  417.                             var id = model.id.toLowerCase();
  418.                             if (id.includes('gpt') || id.includes('o1') || id.includes('tts')) {
  419.                                 modelCategories['OpenAI'].push(model.id);
  420.                             } else if (id.includes('claude') || id.includes('anthropic')) {
  421.                                 modelCategories['Claude'].push(model.id);
  422.                             } else if (id.includes('gemma') || id.includes('gemini')) {
  423.                                 modelCategories['Google'].push(model.id);
  424.                             } else if (id.includes('yi-')) {
  425.                                 modelCategories['零一万物'].push(model.id);
  426.                             } else if (id.includes('qwen')) {
  427.                                 modelCategories['千问'].push(model.id);
  428.                             } else if (id.includes('glm')) {
  429.                                 modelCategories['智谱模型'].push(model.id);
  430.                             } else if (id.includes('baai')) {
  431.                                 modelCategories['BAAI'].push(model.id);
  432.                             } else if (id.includes('deepseek')) {
  433.                                 modelCategories['DeepSeek'].push(model.id);
  434.                             } else if (id.includes('intern')) {
  435.                                 modelCategories['Intern'].push(model.id);
  436.                             } else if (id.includes('moonshot') || id.includes('kimi')) {
  437.                                 modelCategories['Moonshot'].push(model.id);
  438.                             } else if (id.includes('llama')) {
  439.                                 modelCategories['Llama'].push(model.id);
  440.                             } else if (id.includes('mistral')) {
  441.                                 modelCategories['Mistral'].push(model.id);
  442.                             } else if (id.includes('embedding')) {
  443.                                 modelCategories['向量模型'].push(model.id);
  444.                             } else {
  445.                                 modelCategories['Other'].push(model.id);
  446.                             }
  447.                         });
  448.                         var modelListHtml = "<h2>支持的模型列表(第一个key为准)</h2>";
  449.                         for (var category in modelCategories) {
  450.                             if (modelCategories[category].length > 0) {
  451.                                 modelListHtml += "<div class='model-category'><h3>" + category + "</h3><div class='model-list'>";
  452.                                 modelCategories[category].forEach(function(model) {
  453.                                     modelListHtml += "<span class='model-item' data-model='" + model + "'>" + model + "</span>";
  454.                                 });
  455.                                 modelListHtml += "</div></div>";
  456.                             }
  457.                         }
  458.                         $('#modelList').html(modelListHtml);
  459.                         // 为模型名称添加点击事件
  460.                         $('.model-item').click(function() {
  461.                             var modelName = $(this).data('model');
  462.                             navigator.clipboard.writeText(modelName).then(function() {
  463.                                 showNotification();
  464.                             });
  465.                         });
  466.                     },
  467.                     error: function(error) {
  468.                         $('#modelList').html("<p>模型列表查询出错:" + error.statusText + "</p>");
  469.                     }
  470.                 });
  471.             }
  472.             function showNotification() {
  473.                 $('#copyNotification').fadeIn().delay(2000).fadeOut();
  474.             }
  475.         });
  476.     </script>
  477. </body>
  478. </html>
复制代码
回复

使用道具 举报

发表于 2025-11-4 12:07:35 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2025-11-4 12:07:41 | 显示全部楼层
感谢分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 2025-11-4 12:08:17 | 显示全部楼层
可以的,试试好用不
回复

使用道具 举报

发表于 2025-11-4 12:08:51 | 显示全部楼层
完全看不懂,不过还是要感谢
回复

使用道具 举报

发表于 2025-11-4 12:09:06 | 显示全部楼层
感谢解惑
回复

使用道具 举报

发表于 2025-11-4 12:09:29 | 显示全部楼层
感谢分享,正好还在想怎么查来着,因为现有的大多数软件都只能查询国内站
回复

使用道具 举报

发表于 2025-11-4 12:09:50 | 显示全部楼层
有一定用途
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表