123下一页
返回列表 发布新帖
查看: 1075|回复: 20

再分享几个硅基key

发表于 2025-2-11 20:00:16 | 查看全部 |阅读模式

立刻注册账号,享受更清爽的界面!

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

×
key:
游客,如果您要查看本帖隐藏内容请回复


另外安利下我的检测工具:https://sfchecker.elfmaid.me/
也可以自建一个哈:
  1. addEventListener('fetch', function(event) {
  2.     event.respondWith(handleRequest(event.request));
  3.   });
  4.   
  5.   function handleRequest(request) {
  6.     if (request.method === 'OPTIONS') {
  7.       return handleOptions(request);
  8.     }
  9.   
  10.     if (request.method === 'POST') {
  11.       return handlePost(request);
  12.     }
  13.   
  14.     return new Response(getHtmlContent(), {
  15.       headers: {
  16.         'content-type': 'text/html;charset=UTF-8',
  17.         'Access-Control-Allow-Origin': '*',
  18.         'Cache-Control': 'no-cache',
  19.       },
  20.     });
  21.   }
  22.   
  23.   function handlePost(request) {
  24.     return request.json()
  25.       .then(function(data) {
  26.         var tokens = data.tokens || [];
  27.         if (!tokens.length) {
  28.           throw new Error('No tokens provided');
  29.         }
  30.         
  31.         return Promise.all(tokens.map(function(token) {
  32.           return checkToken(token);
  33.         }));
  34.       })
  35.       .then(function(results) {
  36.         return new Response(JSON.stringify(results), {
  37.           headers: {
  38.             'content-type': 'application/json',
  39.             'Access-Control-Allow-Origin': '*',
  40.             'Cache-Control': 'no-cache',
  41.           },
  42.         });
  43.       })
  44.       .catch(function(error) {
  45.         return new Response(JSON.stringify({
  46.           error: error.message || 'Unknown error occurred'
  47.         }), {
  48.           status: 400,
  49.           headers: {
  50.             'content-type': 'application/json',
  51.             'Access-Control-Allow-Origin': '*',
  52.             'Cache-Control': 'no-cache',
  53.           },
  54.         });
  55.       });
  56.   }
  57.   
  58.   function checkToken(token) {
  59.     var checkUrl = 'https://api.siliconflow.cn/v1/chat/completions';
  60.     var balanceUrl = 'https://api.siliconflow.cn/v1/user/info';
  61.    
  62.     var requestOptions = {
  63.       method: 'POST',
  64.       headers: {
  65.         'Authorization': 'Bearer ' + token,
  66.         'Content-Type': 'application/json',
  67.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
  68.         'Accept': 'application/json',
  69.         'Accept-Language': 'zh-CN,zh;q=0.9',
  70.         'Sec-Fetch-Dest': 'empty',
  71.         'Sec-Fetch-Mode': 'cors',
  72.         'Sec-Fetch-Site': 'cross-site'
  73.       },
  74.       body: JSON.stringify({
  75.         "model": "Qwen/Qwen2.5-72B-Instruct",
  76.         "messages": [{"role": "user", "content": "hi"}],
  77.         "max_tokens": 100,
  78.         "stream": false
  79.       })
  80.     };
  81.   
  82.     return fetch(checkUrl, requestOptions)
  83.       .then(function(response) {
  84.         if (response.ok) {
  85.           return fetch(balanceUrl, {
  86.             headers: {
  87.               'Authorization': 'Bearer ' + token,
  88.               'Accept': 'application/json',
  89.               'Accept-Language': 'zh-CN,zh;q=0.9'
  90.             }
  91.           })
  92.           .then(function(balanceResponse) {
  93.             if (!balanceResponse.ok) {
  94.               throw new Error('Balance check failed');
  95.             }
  96.             return balanceResponse.json();
  97.           })
  98.           .then(function(balanceData) {
  99.             return {
  100.               token: token,
  101.               isValid: true,
  102.               balance: balanceData.data.totalBalance
  103.             };
  104.           })
  105.           .catch(function() {
  106.             return {
  107.               token: token,
  108.               isValid: true,
  109.               balance: '获取余额失败'
  110.             };
  111.           });
  112.         }
  113.         
  114.         return response.json()
  115.           .then(function(errorData) {
  116.             return {
  117.               token: token,
  118.               isValid: false,
  119.               message: errorData.message || '验证失败'
  120.             };
  121.           })
  122.           .catch(function() {
  123.             return {
  124.               token: token,
  125.               isValid: false,
  126.               message: '验证请求失败'
  127.             };
  128.           });
  129.       })
  130.       .catch(function(error) {
  131.         return {
  132.           token: token,
  133.           isValid: false,
  134.           message: '网络请求失败: ' + error.message
  135.         };
  136.       });
  137.   }
  138.   
  139.   function handleOptions(request) {
  140.     return new Response(null, {
  141.       headers: {
  142.         'Access-Control-Allow-Origin': '*',
  143.         'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
  144.         'Access-Control-Allow-Headers': 'Content-Type, Authorization',
  145.         'Access-Control-Max-Age': '86400',
  146.       },
  147.     });
  148.   }
  149.   function getHtmlContent() {
  150.     return `<!DOCTYPE html>
  151.   <html lang="zh-CN">
  152.   <head>
  153.       <meta charset="UTF-8">
  154.       <meta name="viewport" content="width=device-width, initial-scale=1.0">
  155.       <title>硅基流动Token检测工具</title>
  156.       <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🚀</text></svg>">
  157.       <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
  158.       <script src="https://cdn.jsdelivr.net/npm/three@0.121.1/build/three.min.js"></script>
  159.       <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
  160.       <style>
  161.           :root {
  162.               --primary: #64ffda;
  163.               --bg-dark: #0a192f;
  164.               --text: #ccd6f6;
  165.               --error: #ff3b30;
  166.               --success: #64ffda;
  167.           }
  168.   
  169.           * {
  170.               margin: 0;
  171.               padding: 0;
  172.               box-sizing: border-box;
  173.           }
  174.   
  175.           body {
  176.               font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  177.               background-color: var(--bg-dark);
  178.               color: var(--text);
  179.               line-height: 1.6;
  180.               min-height: 100vh;
  181.               overflow-x: hidden;
  182.           }
  183.   
  184.           #vanta-canvas {
  185.               position: fixed;
  186.               top: 0;
  187.               left: 0;
  188.               width: 100%;
  189.               height: 100%;
  190.               z-index: 0;
  191.           }
  192.   
  193.           .container {
  194.               position: relative;
  195.               z-index: 1;
  196.               max-width: 1000px;
  197.               margin: 0 auto;
  198.               padding: 40px 20px;
  199.           }
  200.   
  201.           .glass-panel {
  202.               background: rgba(10, 25, 47, 0.7);
  203.               backdrop-filter: blur(10px);
  204.               border-radius: 24px;
  205.               padding: 40px;
  206.               border: 1px solid rgba(100, 255, 218, 0.1);
  207.               box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
  208.           }
  209.   
  210.           h1 {
  211.               font-size: 2.5rem;
  212.               text-align: center;
  213.               margin-bottom: 40px;
  214.               color: var(--primary);
  215.               text-shadow: 0 0 20px rgba(100, 255, 218, 0.3);
  216.               font-weight: 600;
  217.           }
  218.   
  219.           .input-group {
  220.               margin-bottom: 30px;
  221.           }
  222.   
  223.           textarea {
  224.               width: 100%;
  225.               height: 200px;
  226.               background: rgba(255, 255, 255, 0.05);
  227.               border: 1px solid rgba(100, 255, 218, 0.2);
  228.               border-radius: 12px;
  229.               padding: 20px;
  230.               color: var(--text);
  231.               font-family: 'JetBrains Mono', monospace;
  232.               font-size: 14px;
  233.               resize: vertical;
  234.               transition: all 0.3s ease;
  235.           }
  236.   
  237.           textarea:focus {
  238.               outline: none;
  239.               border-color: var(--primary);
  240.               box-shadow: 0 0 20px rgba(100, 255, 218, 0.1);
  241.           }
  242.   
  243.           .button-container {
  244.               text-align: center;
  245.               margin: 30px 0;
  246.           }
  247.   
  248.           button {
  249.               background: transparent;
  250.               color: var(--primary);
  251.               border: 2px solid var(--primary);
  252.               padding: 12px 30px;
  253.               border-radius: 8px;
  254.               font-size: 16px;
  255.               font-weight: 600;
  256.               cursor: pointer;
  257.               transition: all 0.3s ease;
  258.               position: relative;
  259.               overflow: hidden;
  260.           }
  261.   
  262.           button:hover {
  263.               background: rgba(100, 255, 218, 0.1);
  264.               transform: translateY(-2px);
  265.               box-shadow: 0 5px 15px rgba(100, 255, 218, 0.2);
  266.           }
  267.   
  268.           button:disabled {
  269.               opacity: 0.6;
  270.               cursor: not-allowed;
  271.               transform: none;
  272.           }
  273.   
  274.           .progress-container {
  275.               margin: 20px 0;
  276.               text-align: center;
  277.               display: none;
  278.           }
  279.   
  280.           .progress-bar {
  281.               width: 100%;
  282.               height: 6px;
  283.               background: rgba(255, 255, 255, 0.1);
  284.               border-radius: 3px;
  285.               overflow: hidden;
  286.               margin-bottom: 10px;
  287.           }
  288.   
  289.           .progress {
  290.               width: 0%;
  291.               height: 100%;
  292.               background: linear-gradient(90deg, var(--primary) 0%, #4facfe 100%);
  293.               transition: width 0.3s ease;
  294.               border-radius: 3px;
  295.           }
  296.   
  297.           .progress-text {
  298.               font-size: 14px;
  299.               color: var(--text);
  300.           }
  301.   
  302.           .results {
  303.               margin-top: 40px;
  304.           }
  305.   
  306.           .results h2 {
  307.               font-size: 1.5rem;
  308.               color: var(--text);
  309.               margin-bottom: 20px;
  310.               display: flex;
  311.               align-items: center;
  312.               gap: 10px;
  313.           }
  314.   
  315.           .results h2::before {
  316.               content: '';
  317.               display: block;
  318.               width: 4px;
  319.               height: 24px;
  320.               background: var(--primary);
  321.               border-radius: 2px;
  322.           }
  323.   
  324.           .results-content {
  325.               background: rgba(255, 255, 255, 0.03);
  326.               border-radius: 12px;
  327.               padding: 20px;
  328.               margin-bottom: 20px;
  329.               border: 1px solid rgba(255, 255, 255, 0.1);
  330.           }
  331.   
  332.           #validResults {
  333.               font-family: 'JetBrains Mono', monospace;
  334.               white-space: pre-wrap;
  335.               color: var(--success);
  336.               word-break: break-all;
  337.           }
  338.   
  339.           .invalid-token {
  340.               background: rgba(255, 59, 48, 0.1);
  341.               border-radius: 8px;
  342.               padding: 15px;
  343.               margin-bottom: 15px;
  344.               border-left: 4px solid var(--error);
  345.               animation: slideIn 0.3s ease-out;
  346.           }
  347.   
  348.           .loader {
  349.               display: inline-block;
  350.               width: 20px;
  351.               height: 20px;
  352.               border: 3px solid rgba(100, 255, 218, 0.3);
  353.               border-radius: 50%;
  354.               border-top-color: var(--primary);
  355.               animation: spin 1s linear infinite;
  356.               margin-right: 10px;
  357.               vertical-align: middle;
  358.           }
  359.   
  360.           .toast {
  361.               position: fixed;
  362.               bottom: 20px;
  363.               right: 20px;
  364.               padding: 12px 24px;
  365.               background: rgba(100, 255, 218, 0.9);
  366.               color: var(--bg-dark);
  367.               border-radius: 8px;
  368.               font-weight: 600;
  369.               transform: translateY(100px);
  370.               opacity: 0;
  371.               transition: all 0.3s ease;
  372.               z-index: 1000;
  373.           }
  374.   
  375.           .toast.show {
  376.               transform: translateY(0);
  377.               opacity: 1;
  378.           }
  379.   
  380.           @keyframes spin {
  381.               to { transform: rotate(360deg); }
  382.           }
  383.   
  384.           @keyframes slideIn {
  385.               from {
  386.                   opacity: 0;
  387.                   transform: translateX(-10px);
  388.               }
  389.               to {
  390.                   opacity: 1;
  391.                   transform: translateX(0);
  392.               }
  393.           }
  394.   
  395.           @media (max-width: 768px) {
  396.               .container {
  397.                   padding: 20px;
  398.               }
  399.   
  400.               .glass-panel {
  401.                   padding: 20px;
  402.               }
  403.   
  404.               h1 {
  405.                   font-size: 2rem;
  406.               }
  407.   
  408.               button {
  409.                   width: 100%;
  410.               }
  411.           }
  412.       </style>
  413.   </head>
  414.   <body>
  415.       <div id="vanta-canvas"></div>
  416.       <div class="container">
  417.           <div class="glass-panel">
  418.               <h1>硅基流动Token检测工具</h1>
  419.               <div class="input-group">
  420.                   <textarea id="tokens" placeholder="请在此输入sk token,每行一个"></textarea>
  421.               </div>
  422.               <div class="progress-container">
  423.                   <div class="progress-bar">
  424.                       <div class="progress"></div>
  425.                   </div>
  426.                   <div class="progress-text">检测进度: <span id="progress-percentage">0</span>%</div>
  427.               </div>
  428.               <div class="button-container">
  429.                   <button id="checkButton" onclick="checkTokens()">开始检测</button>
  430.               </div>
  431.               <div class="results">
  432.                   <h2>有效账号</h2>
  433.                   <div id="validResults" class="results-content"></div>
  434.                   <button id="copyButton" onclick="copyValidTokens()" style="display: none;">复制有效账号</button>
  435.                   <h2>无效账号</h2>
  436.                   <div id="invalidResults" class="results-content"></div>
  437.               </div>
  438.           </div>
  439.       </div>
  440.       <div id="toast" class="toast"></div>
  441.   
  442.       <script>
  443.           window.addEventListener('DOMContentLoaded', function() {
  444.               VANTA.NET({
  445.                   el: "#vanta-canvas",
  446.                   mouseControls: true,
  447.                   touchControls: true,
  448.                   gyroControls: false,
  449.                   minHeight: 200.00,
  450.                   minWidth: 200.00,
  451.                   scale: 1.00,
  452.                   scaleMobile: 1.00,
  453.                   color: 0x64ffda,
  454.                   backgroundColor: 0x0a192f,
  455.                   points: 10.00,
  456.                   maxDistance: 20.00,
  457.                   spacing: 20.00
  458.               });
  459.           });
  460.   
  461.           function showToast(message, duration) {
  462.               var toast = document.getElementById('toast');
  463.               toast.textContent = message;
  464.               toast.classList.add('show');
  465.               setTimeout(function() {
  466.                   toast.classList.remove('show');
  467.               }, duration || 3000);
  468.           }
  469.   
  470.           function checkTokens() {
  471.               var tokensTextarea = document.getElementById('tokens');
  472.               var checkButton = document.getElementById('checkButton');
  473.               var validResults = document.getElementById('validResults');
  474.               var invalidResults = document.getElementById('invalidResults');
  475.               var copyButton = document.getElementById('copyButton');
  476.               var progressContainer = document.querySelector('.progress-container');
  477.               var progressBar = document.querySelector('.progress');
  478.               var progressText = document.getElementById('progress-percentage');
  479.   
  480.               var tokens = tokensTextarea.value.split('\\n').filter(function(token) {
  481.                   return token.trim() !== '';
  482.               });
  483.   
  484.               if (!tokens.length) {
  485.                   showToast('请输入至少一个token', 2000);
  486.                   return;
  487.               }
  488.   
  489.               checkButton.disabled = true;
  490.               checkButton.innerHTML = '<span class="loader"></span>检测中...';
  491.               validResults.textContent = '';
  492.               invalidResults.innerHTML = '';
  493.               copyButton.style.display = 'none';
  494.               progressContainer.style.display = 'block';
  495.               progressBar.style.width = '0%';
  496.               progressText.textContent = '0';
  497.   
  498.               var completed = 0;
  499.               var results = [];
  500.   
  501.               function processTokens(tokens, batchSize) {
  502.                   var batches = [];
  503.                   for (var i = 0; i < tokens.length; i += batchSize) {
  504.                       batches.push(tokens.slice(i, i + batchSize));
  505.                   }
  506.   
  507.                   return batches.reduce(function(promise, batch) {
  508.                       return promise.then(function() {
  509.                           return Promise.all(batch.map(function(token) {
  510.                               return fetch(window.location.href, {
  511.                                   method: 'POST',
  512.                                   headers: {
  513.                                       'Content-Type': 'application/json',
  514.                                   },
  515.                                   body: JSON.stringify({ tokens: [token] })
  516.                               })
  517.                               .then(function(response) { return response.json(); })
  518.                               .then(function(result) {
  519.                                   completed++;
  520.                                   var progress = Math.round((completed / tokens.length) * 100);
  521.                                   progressBar.style.width = progress + '%';
  522.                                   progressText.textContent = progress;
  523.                                   return result[0];
  524.                               });
  525.                           }));
  526.                       }).then(function(batchResults) {
  527.                           results = results.concat(batchResults);
  528.                           updateResults(results);
  529.                       });
  530.                   }, Promise.resolve());
  531.               }
  532.   
  533.               function updateResults(results) {
  534.                   var validTokens = results.filter(function(r) {
  535.                       return r.isValid;
  536.                   }).map(function(r) {
  537.                       return r.token + ' (余额: ' + r.balance + ')';
  538.                   });
  539.   
  540.                   var invalidTokens = results.filter(function(r) {
  541.                       return !r.isValid;
  542.                   });
  543.   
  544.                   validResults.textContent = validTokens.join('\\n');
  545.                   invalidResults.innerHTML = '';
  546.   
  547.                   invalidTokens.forEach(function(result) {
  548.                       var div = document.createElement('div');
  549.                       div.className = 'invalid-token';
  550.                       div.innerHTML =
  551.                           '<div class="invalid-token-content">' +
  552.                           '<div class="invalid-token-token">' + result.token + '</div>' +
  553.                           '<div class="invalid-token-message">' + result.message + '</div>' +
  554.                           '</div>';
  555.                       invalidResults.appendChild(div);
  556.                   });
  557.   
  558.                   if (validTokens.length > 0) {
  559.                       copyButton.style.display = 'block';
  560.                   }
  561.               }
  562.   
  563.               processTokens(tokens, 3)
  564.                   .then(function() {
  565.                       showToast('检测完成!', 2000);
  566.                   })
  567.                   .catch(function(error) {
  568.                       showToast('检测过程出错: ' + error.message, 3000);
  569.                   })
  570.                   .finally(function() {
  571.                       checkButton.disabled = false;
  572.                       checkButton.textContent = '开始检测';
  573.                       progressContainer.style.display = 'none';
  574.                   });
  575.           }
  576.   
  577.           function copyValidTokens() {
  578.               var validResults = document.getElementById('validResults');
  579.               var tokens = validResults.textContent.split('\\n').map(function(line) {
  580.                   return line.split(' ')[0];
  581.               });
  582.               var textArea = document.createElement('textarea');
  583.               textArea.value = tokens.join('\\n');
  584.               document.body.appendChild(textArea);
  585.               textArea.select();
  586.               document.execCommand('copy');
  587.               document.body.removeChild(textArea);
  588.               showToast('有效账号已复制到剪贴板', 2000);
  589.           }
  590.       </script>
  591.   </body>
  592.   </html>`;
  593.   }
复制代码
爱生活,爱奶昔~
发表于 2025-2-11 20:22:06 | 查看全部
23333333333336666666666666666666
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-11 20:07:04 来自手机 | 查看全部
本帖最后由 coldin04 于 2025-2-11 20:14 编辑

看看,这些key批量注册的?
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-11 21:24:13 来自手机 | 查看全部
thank you
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-12 06:14:26 来自手机 | 查看全部
感谢分享
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-12 07:50:21 | 查看全部
就是说可以一直有key用?
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-12 09:03:35 | 查看全部
谢谢老板,先检测一下~
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-12 11:46:20 | 查看全部
试试看,或许有用
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-15 01:48:52 来自手机 | 查看全部
感谢🙏
爱生活,爱奶昔~
回复 支持 反对

举报

发表于 2025-2-16 14:34:21 | 查看全部
试还行不
爱生活,爱奶昔~
回复 支持 反对

举报

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

本版积分规则

  • 关注公众号
  • 添加微信客服
© 2025 Naixi Networks 沪ICP备13020230号-1|沪公网安备 31010702007642号
关灯 在本版发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表