淘宝买了个claudecode成品号,给了一个这个

2026-04-29 09:442阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

淘宝卖家给了一个邮箱和密码等等,还给了一个sk-ant,这个是Session Key还是Standard API Key呀。
如果我通过Claude 网页转 API的话,会不会被封号,有没有佬给点意见

网友解答:
--【壹】--:

我买的这个,第二天就被封了,扣了 45 的手续费


--【贰】--:

我怀疑店家就图个手续费,自己的pro一直正常用。淘宝的pro用两三天就封。


--【叁】--:

是用的家宽吗?。。。。。。。。。。。。。


--【肆】--:

没被封。现在还在继续用着呢。。。。。。。


--【伍】--:

有没有质保呀,没质保建议别折腾了,几天就没


--【陆】--:

梯子和指纹一定要做好
用这个脚本可以登陆

// ==UserScript== // @name Claude SessionKey 登录助手 // @namespace http://tampermonkey.net/ // @version 1.3 // @description 通过 SessionKey 快速登录 Claude.ai // @author sm // @match https://*.claude.ai/* // @icon https://claude.ai/favicon.ico // @grant none // @run-at document-end // ==/UserScript== (function () { 'use strict'; // 存储键名 const STORAGE_KEY_POSITION = 'claude_login_btn_position'; const STORAGE_KEY_HISTORY = 'claude_login_history'; const STORAGE_KEY_CURRENT = 'claude_login_current'; // 创建样式 const style = document.createElement('style'); style.textContent = ` /* ==================== 基础变量 ==================== */ #claude-login-btn, #claude-login-overlay, #claude-login-overlay * { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; box-sizing: border-box; } /* ==================== 悬浮按钮 ==================== */ #claude-login-btn { position: fixed; width: 52px; height: 52px; border-radius: 50%; background: #c96442; color: white; border: none; cursor: grab; font-size: 13px; font-weight: 600; letter-spacing: 0.5px; box-shadow: 0 2px 8px rgba(201, 100, 66, 0.3), 0 4px 20px rgba(201, 100, 66, 0.2); z-index: 999999; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); display: flex; align-items: center; justify-content: center; user-select: none; touch-action: none; } #claude-login-btn:hover { background: #b8573c; box-shadow: 0 4px 12px rgba(201, 100, 66, 0.4), 0 8px 24px rgba(201, 100, 66, 0.25); transform: scale(1.05); } #claude-login-btn:active { cursor: grabbing; transform: scale(0.98); } #claude-login-btn.dragging { cursor: grabbing; transform: scale(1.1); box-shadow: 0 8px 24px rgba(201, 100, 66, 0.4), 0 16px 48px rgba(201, 100, 66, 0.2); transition: none; } #claude-login-btn.snap-transition { transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1), right 0.3s cubic-bezier(0.4, 0, 0.2, 1), top 0.15s cubic-bezier(0.4, 0, 0.2, 1); } /* ==================== 弹窗遮罩层 ==================== */ #claude-login-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(41, 37, 36, 0.6); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); z-index: 9999999; display: none; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.2s ease; } #claude-login-overlay.show { display: flex; opacity: 1; } /* ==================== 弹窗主体 ==================== */ #claude-login-modal { background: #FAF9F5; border-radius: 16px; padding: 28px; width: 400px; max-width: 92%; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 10px 20px rgba(0, 0, 0, 0.08), 0 20px 40px rgba(0, 0, 0, 0.1); transform: scale(0.95) translateY(10px); transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1); } #claude-login-overlay.show #claude-login-modal { transform: scale(1) translateY(0); } #claude-login-modal h3 { margin: 0 0 6px 0; font-size: 18px; font-weight: 600; color: #1a1a1a; letter-spacing: -0.3px; } #claude-login-modal p { margin: 0 0 20px 0; font-size: 13px; color: #78716c; line-height: 1.5; } /* ==================== 输入框 ==================== */ .claude-input-wrapper { position: relative; } #claude-login-modal textarea { width: 100%; height: 88px; padding: 14px 36px 14px 14px; border: 1.5px solid #e7e5e0; border-radius: 12px; font-size: 13px; font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace; color: #1a1a1a; background: #ffffff; resize: none; box-sizing: border-box; transition: all 0.2s ease; line-height: 1.5; } #claude-login-modal textarea:hover { border-color: #d6d3ce; } #claude-login-modal textarea:focus { outline: none; border-color: #c96442; box-shadow: 0 0 0 3px rgba(201, 100, 66, 0.12); } #claude-login-modal textarea::placeholder { color: #a8a29e; } /* ==================== 清空按钮 ==================== */ .claude-clear-btn { position: absolute; top: 10px; right: 10px; width: 20px; height: 20px; border: none; background: #d6d3ce; color: #78716c; border-radius: 50%; cursor: pointer; font-size: 10px; line-height: 1; display: none; align-items: center; justify-content: center; transition: all 0.15s ease; } .claude-clear-btn:hover { background: #c96442; color: white; transform: scale(1.1); } .claude-clear-btn.show { display: flex; } /* ==================== 历史记录区域 ==================== */ .claude-history-section { margin-top: 16px; } .claude-history-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; padding: 0 2px; } .claude-history-title { font-size: 12px; font-weight: 500; color: #a8a29e; text-transform: uppercase; letter-spacing: 0.5px; } .claude-history-clear { font-size: 12px; color: #a8a29e; background: none; border: none; cursor: pointer; padding: 4px 8px; border-radius: 6px; transition: all 0.15s ease; } .claude-history-clear:hover { color: #c96442; background: rgba(201, 100, 66, 0.08); } .claude-history-list { display: flex; flex-direction: column; gap: 8px; max-height: 140px; overflow-y: auto; padding-right: 4px; } /* 自定义滚动条 */ .claude-history-list::-webkit-scrollbar { width: 4px; } .claude-history-list::-webkit-scrollbar-track { background: transparent; } .claude-history-list::-webkit-scrollbar-thumb { background: #d6d3ce; border-radius: 4px; } .claude-history-list::-webkit-scrollbar-thumb:hover { background: #a8a29e; } /* ==================== 历史记录项 ==================== */ .claude-history-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: #ffffff; border: 1.5px solid #e7e5e0; border-radius: 10px; cursor: pointer; transition: all 0.15s ease; } .claude-history-item:hover { border-color: #c96442; background: #fffcf9; } .claude-history-item.active { background: linear-gradient(135deg, #fff8f5 0%, #fff1eb 100%); border-color: #c96442; box-shadow: 0 2px 8px rgba(201, 100, 66, 0.1); } .claude-history-item.active .claude-history-item-key { color: #9a4a2c; font-weight: 500; } .claude-history-item-tag { font-size: 10px; font-weight: 600; color: #fff; background: #c96442; padding: 3px 8px; border-radius: 6px; flex-shrink: 0; letter-spacing: 0.3px; } .claude-history-item-key { flex: 1; font-size: 12px; font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace; color: #57534e; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .claude-history-item-delete { width: 18px; height: 18px; border: none; background: transparent; color: #d6d3ce; cursor: pointer; font-size: 11px; line-height: 1; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.15s ease; flex-shrink: 0; } .claude-history-item-delete:hover { background: rgba(201, 100, 66, 0.1); color: #c96442; transform: scale(1.1); } .claude-history-empty { font-size: 13px; color: #a8a29e; text-align: center; padding: 20px 12px; background: #ffffff; border: 1.5px dashed #e7e5e0; border-radius: 10px; } /* ==================== 按钮组 ==================== */ .claude-login-buttons { display: flex; gap: 12px; margin-top: 20px; } .claude-login-buttons button { flex: 1; padding: 12px 20px; border-radius: 10px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; letter-spacing: 0.2px; } /* 取消按钮 */ .claude-login-buttons .cancel-btn { background: transparent; border: 1.5px solid #e7e5e0; color: #57534e; } .claude-login-buttons .cancel-btn:hover { background: #f5f5f4; border-color: #d6d3ce; } .claude-login-buttons .cancel-btn:active { transform: scale(0.98); } /* 登录按钮 */ .claude-login-buttons .login-btn { background: #c96442; border: none; color: white; } .claude-login-buttons .login-btn:hover { background: #b8573c; } .claude-login-buttons .login-btn:active { transform: scale(0.98); } .claude-login-buttons .login-btn:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } /* 登录按钮加载状态 */ .claude-login-buttons .login-btn.loading { position: relative; color: transparent; pointer-events: none; } .claude-login-buttons .login-btn.loading::after { content: ''; position: absolute; width: 18px; height: 18px; top: 50%; left: 50%; margin-left: -9px; margin-top: -9px; border: 2px solid rgba(255, 255, 255, 0.3); border-top-color: white; border-radius: 50%; animation: claude-spin 0.7s linear infinite; } @keyframes claude-spin { to { transform: rotate(360deg); } } /* ==================== 提示信息 ==================== */ #claude-login-message { margin-top: 14px; padding: 10px 14px; border-radius: 10px; font-size: 13px; display: none; line-height: 1.4; } #claude-login-message.error { display: block; background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; } #claude-login-message.success { display: block; background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; } `; document.head.appendChild(style); // 创建悬浮按钮 const floatBtn = document.createElement('button'); floatBtn.id = 'claude-login-btn'; floatBtn.textContent = '登录'; floatBtn.title = 'SessionKey 登录(可拖动)'; document.body.appendChild(floatBtn); // 初始化按钮位置 const savedPosition = localStorage.getItem(STORAGE_KEY_POSITION); if (savedPosition) { const pos = JSON.parse(savedPosition); floatBtn.style.top = pos.top + 'px'; floatBtn.style.left = pos.left !== null ? pos.left + 'px' : 'auto'; floatBtn.style.right = pos.right !== null ? pos.right + 'px' : 'auto'; floatBtn.style.bottom = 'auto'; } else { // 默认位置:右下角 floatBtn.style.bottom = '20px'; floatBtn.style.right = '20px'; } // 创建弹窗 const overlay = document.createElement('div'); overlay.id = 'claude-login-overlay'; overlay.innerHTML = ` <div id="claude-login-modal"> <h3>SessionKey 登录</h3> <p>请输入你的 SessionKey,设置后页面将自动刷新</p> <div class="claude-input-wrapper"> <textarea id="claude-session-input" placeholder="请粘贴你的 SessionKey..."></textarea> <button class="claude-clear-btn" title="清空">✕</button> </div> <div class="claude-history-section"> <div class="claude-history-header"> <span class="claude-history-title">历史记录</span> <button class="claude-history-clear">清空全部</button> </div> <div class="claude-history-list"></div> </div> <div id="claude-login-message"></div> <div class="claude-login-buttons"> <button class="cancel-btn">取消</button> <button class="login-btn">登录</button> </div> </div> `; document.body.appendChild(overlay); // 获取元素 const modal = overlay.querySelector('#claude-login-modal'); const input = overlay.querySelector('#claude-session-input'); const clearBtn = overlay.querySelector('.claude-clear-btn'); const historyList = overlay.querySelector('.claude-history-list'); const historyClearBtn = overlay.querySelector('.claude-history-clear'); const message = overlay.querySelector('#claude-login-message'); const cancelBtn = overlay.querySelector('.cancel-btn'); const loginBtn = overlay.querySelector('.login-btn'); // ==================== 历史记录功能 ==================== /** * 获取当前使用的 SessionKey * @returns {string|null} 当前的 SessionKey * @author sm */ function getCurrentSessionKey() { // 从 localStorage 获取当前使用的 key return localStorage.getItem(STORAGE_KEY_CURRENT) || null; } /** * 设置当前使用的 SessionKey * @param {string} sessionKey - SessionKey * @author sm */ function setCurrentSessionKey(sessionKey) { localStorage.setItem(STORAGE_KEY_CURRENT, sessionKey); } /** * 获取历史记录 * @returns {Array} 历史记录数组 * @author sm */ function getHistory() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY_HISTORY)) || []; } catch { return []; } } /** * 保存历史记录 * @param {Array} history - 历史记录数组 * @author sm */ function saveHistory(history) { localStorage.setItem(STORAGE_KEY_HISTORY, JSON.stringify(history)); } /** * 添加到历史记录 * @param {string} sessionKey - SessionKey * @author sm */ function addToHistory(sessionKey) { let history = getHistory(); // 移除重复的 history = history.filter(item => item !== sessionKey); // 添加到开头 history.unshift(sessionKey); // 最多保存 5 条 history = history.slice(0, 5); saveHistory(history); } /** * 从历史记录中删除 * @param {string} sessionKey - SessionKey * @author sm */ function removeFromHistory(sessionKey) { let history = getHistory(); history = history.filter(item => item !== sessionKey); saveHistory(history); renderHistory(); } /** * 清空历史记录 * @author sm */ function clearHistory() { saveHistory([]); renderHistory(); } /** * 遮蔽显示 SessionKey * @param {string} key - SessionKey * @returns {string} 遮蔽后的字符串 * @author sm */ function maskKey(key) { if (key.length <= 16) { return key.slice(0, 4) + '****' + key.slice(-4); } return key.slice(0, 8) + '****' + key.slice(-8); } /** * 渲染历史记录列表 * @author sm */ function renderHistory() { let history = getHistory(); const currentKey = getCurrentSessionKey(); // 如果当前有使用的 key,将其置顶 if (currentKey) { history = history.filter(item => item !== currentKey); history.unshift(currentKey); // 同时更新存储,确保当前使用的在历史中 if (!getHistory().includes(currentKey)) { addToHistory(currentKey); history = getHistory(); } } if (history.length === 0) { historyList.innerHTML = '<div class="claude-history-empty">暂无历史记录</div>'; return; } historyList.innerHTML = history.map(key => { const isActive = key === currentKey; return ` <div class="claude-history-item${isActive ? ' active' : ''}" data-key="${encodeURIComponent(key)}"> <span class="claude-history-item-key">${maskKey(key)}</span> ${isActive ? '<span class="claude-history-item-tag">当前</span>' : ''} <button class="claude-history-item-delete" title="删除">✕</button> </div> `; }).join(''); // 绑定点击事件 historyList.querySelectorAll('.claude-history-item').forEach(item => { const key = decodeURIComponent(item.dataset.key); // 点击填充到输入框 item.addEventListener('click', (e) => { if (!e.target.classList.contains('claude-history-item-delete')) { input.value = key; updateClearBtnVisibility(); input.focus(); } }); // 删除按钮 item.querySelector('.claude-history-item-delete').addEventListener('click', (e) => { e.stopPropagation(); removeFromHistory(key); }); }); } // 清空全部历史 historyClearBtn.addEventListener('click', clearHistory); // ==================== 拖动功能 ==================== let isDragging = false; let hasMoved = false; let startX, startY, startLeft, startTop; /** * 开始拖动 * @author sm */ function onDragStart(e) { e.preventDefault(); isDragging = true; hasMoved = false; const clientX = e.type === 'touchstart' ? e.touches[0].clientX : e.clientX; const clientY = e.type === 'touchstart' ? e.touches[0].clientY : e.clientY; const rect = floatBtn.getBoundingClientRect(); startX = clientX; startY = clientY; startLeft = rect.left; startTop = rect.top; floatBtn.classList.add('dragging'); floatBtn.style.left = rect.left + 'px'; floatBtn.style.top = rect.top + 'px'; floatBtn.style.right = 'auto'; floatBtn.style.bottom = 'auto'; } /** * 拖动中 * @author sm */ function onDragMove(e) { if (!isDragging) return; const clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; const clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; const deltaX = clientX - startX; const deltaY = clientY - startY; // 判断是否移动超过阈值 if (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5) { hasMoved = true; } const btnWidth = floatBtn.offsetWidth; const btnHeight = floatBtn.offsetHeight; const maxX = window.innerWidth - btnWidth; const maxY = window.innerHeight - btnHeight; let newLeft = Math.max(0, Math.min(startLeft + deltaX, maxX)); let newTop = Math.max(0, Math.min(startTop + deltaY, maxY)); floatBtn.style.left = newLeft + 'px'; floatBtn.style.top = newTop + 'px'; } /** * 结束拖动,自动吸边 * @author sm */ function onDragEnd() { if (!isDragging) return; isDragging = false; floatBtn.classList.remove('dragging'); // 如果没有移动,则视为点击 if (!hasMoved) { showModal(); return; } // 吸边逻辑 const rect = floatBtn.getBoundingClientRect(); const centerX = rect.left + rect.width / 2; const windowWidth = window.innerWidth; floatBtn.classList.add('snap-transition'); let position = { top: rect.top, left: null, right: null }; if (centerX < windowWidth / 2) { // 吸附到左边 floatBtn.style.left = '10px'; floatBtn.style.right = 'auto'; position.left = 10; } else { // 吸附到右边 floatBtn.style.left = 'auto'; floatBtn.style.right = '10px'; position.right = 10; } // 保存位置 localStorage.setItem(STORAGE_KEY_POSITION, JSON.stringify(position)); setTimeout(() => { floatBtn.classList.remove('snap-transition'); }, 300); } // 绑定拖动事件 floatBtn.addEventListener('mousedown', onDragStart); document.addEventListener('mousemove', onDragMove); document.addEventListener('mouseup', onDragEnd); // 触摸事件支持 floatBtn.addEventListener('touchstart', onDragStart, { passive: false }); document.addEventListener('touchmove', onDragMove, { passive: false }); document.addEventListener('touchend', onDragEnd); // ==================== 输入框清空按钮 ==================== /** * 更新清空按钮显示状态 * @author sm */ function updateClearBtnVisibility() { if (input.value.length > 0) { clearBtn.classList.add('show'); } else { clearBtn.classList.remove('show'); } } /** * 清空输入框 * @author sm */ function clearInput() { input.value = ''; updateClearBtnVisibility(); input.focus(); } input.addEventListener('input', updateClearBtnVisibility); clearBtn.addEventListener('click', clearInput); // ==================== 弹窗功能 ==================== /** * 显示弹窗 * @author sm */ function showModal() { overlay.classList.add('show'); input.value = ''; updateClearBtnVisibility(); renderHistory(); message.className = ''; message.style.display = 'none'; // 重置按钮状态 loginBtn.classList.remove('loading'); loginBtn.disabled = false; cancelBtn.disabled = false; input.disabled = false; input.focus(); } /** * 隐藏弹窗 * @author sm */ function hideModal() { overlay.classList.remove('show'); } /** * 显示消息 * @param {string} text - 消息文本 * @param {string} type - 消息类型 (error/success) * @author sm */ function showMessage(text, type) { message.textContent = text; message.className = type; } /** * 执行登录操作 * @author sm */ function doLogin() { const sessionKey = input.value.trim(); // 验证输入 if (!sessionKey) { showMessage('请输入 SessionKey', 'error'); return; } // 简单验证格式(SessionKey 通常是较长的字符串) if (sessionKey.length < 20) { showMessage('SessionKey 格式不正确,请检查', 'error'); return; } // 显示加载状态 loginBtn.classList.add('loading'); loginBtn.disabled = true; cancelBtn.disabled = true; input.disabled = true; try { // 保存到历史记录 addToHistory(sessionKey); // 保存当前使用的 key setCurrentSessionKey(sessionKey); // 设置 Cookie document.cookie = `sessionKey=${sessionKey}; domain=.claude.ai; path=/; Secure`; showMessage('登录成功,正在刷新页面...', 'success'); // 延迟刷新,让用户看到成功提示 setTimeout(() => { window.location.reload(true); }, 800); } catch (error) { // 恢复按钮状态 loginBtn.classList.remove('loading'); loginBtn.disabled = false; cancelBtn.disabled = false; input.disabled = false; showMessage('设置失败:' + error.message, 'error'); } } // 事件绑定 cancelBtn.addEventListener('click', hideModal); loginBtn.addEventListener('click', doLogin); // 点击遮罩层关闭弹窗 overlay.addEventListener('click', (e) => { if (e.target === overlay) { hideModal(); } }); // ESC 键关闭弹窗 document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && overlay.classList.contains('show')) { hideModal(); } }); // 回车键提交 input.addEventListener('keydown', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); doLogin(); } }); console.log('[Claude SessionKey 登录助手] 脚本已加载'); })();


--【柒】--:

账号格式说明:
Claude账号/邮箱 ---- 邮箱密码 ---- 接码令牌

注意:“----”不是邮箱/密码/令牌的任何一部分

登陆方案一:免登录令牌验证流程
适合登录官网 Claude.ai 但不想手动登录邮箱的用户。
1.在官网输入您的 Claude 账号(邮箱)。
2.复制成品格式中的第三段 (接码令牌)。
3.浏览器打开 https://email.i80k.com/?type=claude,粘贴令牌并点击“获取验证码”,
然后下方会出现一个链接,点击会跳转显示或者直接免显示直接跳转登陆;
如果不跳转就复制到浏览器打开,即可看到验证码。

登陆方案二:邮箱手动获取验证码登录

1.访问邮箱:打开 mail.com
2.登录邮箱:使用格式中的第一段(账号)和第二段(邮箱密码)进行登录(也可改密)。
3.登陆官网 Claude.ai,输入帐号,会显示“Enter verification code”!
4.刷新刚才登陆的邮箱收件箱查收验证链接,点登录图标就跳转登陆了!
是这个吧 封号应该不会吧,封号就得找卖家了


--【捌】--:

刚评论没被封,后面就被封了,真的服了。。

标签:纯水
问题描述:

淘宝卖家给了一个邮箱和密码等等,还给了一个sk-ant,这个是Session Key还是Standard API Key呀。
如果我通过Claude 网页转 API的话,会不会被封号,有没有佬给点意见

网友解答:
--【壹】--:

我买的这个,第二天就被封了,扣了 45 的手续费


--【贰】--:

我怀疑店家就图个手续费,自己的pro一直正常用。淘宝的pro用两三天就封。


--【叁】--:

是用的家宽吗?。。。。。。。。。。。。。


--【肆】--:

没被封。现在还在继续用着呢。。。。。。。


--【伍】--:

有没有质保呀,没质保建议别折腾了,几天就没


--【陆】--:

梯子和指纹一定要做好
用这个脚本可以登陆

// ==UserScript== // @name Claude SessionKey 登录助手 // @namespace http://tampermonkey.net/ // @version 1.3 // @description 通过 SessionKey 快速登录 Claude.ai // @author sm // @match https://*.claude.ai/* // @icon https://claude.ai/favicon.ico // @grant none // @run-at document-end // ==/UserScript== (function () { 'use strict'; // 存储键名 const STORAGE_KEY_POSITION = 'claude_login_btn_position'; const STORAGE_KEY_HISTORY = 'claude_login_history'; const STORAGE_KEY_CURRENT = 'claude_login_current'; // 创建样式 const style = document.createElement('style'); style.textContent = ` /* ==================== 基础变量 ==================== */ #claude-login-btn, #claude-login-overlay, #claude-login-overlay * { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; box-sizing: border-box; } /* ==================== 悬浮按钮 ==================== */ #claude-login-btn { position: fixed; width: 52px; height: 52px; border-radius: 50%; background: #c96442; color: white; border: none; cursor: grab; font-size: 13px; font-weight: 600; letter-spacing: 0.5px; box-shadow: 0 2px 8px rgba(201, 100, 66, 0.3), 0 4px 20px rgba(201, 100, 66, 0.2); z-index: 999999; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); display: flex; align-items: center; justify-content: center; user-select: none; touch-action: none; } #claude-login-btn:hover { background: #b8573c; box-shadow: 0 4px 12px rgba(201, 100, 66, 0.4), 0 8px 24px rgba(201, 100, 66, 0.25); transform: scale(1.05); } #claude-login-btn:active { cursor: grabbing; transform: scale(0.98); } #claude-login-btn.dragging { cursor: grabbing; transform: scale(1.1); box-shadow: 0 8px 24px rgba(201, 100, 66, 0.4), 0 16px 48px rgba(201, 100, 66, 0.2); transition: none; } #claude-login-btn.snap-transition { transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1), right 0.3s cubic-bezier(0.4, 0, 0.2, 1), top 0.15s cubic-bezier(0.4, 0, 0.2, 1); } /* ==================== 弹窗遮罩层 ==================== */ #claude-login-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(41, 37, 36, 0.6); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); z-index: 9999999; display: none; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.2s ease; } #claude-login-overlay.show { display: flex; opacity: 1; } /* ==================== 弹窗主体 ==================== */ #claude-login-modal { background: #FAF9F5; border-radius: 16px; padding: 28px; width: 400px; max-width: 92%; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 10px 20px rgba(0, 0, 0, 0.08), 0 20px 40px rgba(0, 0, 0, 0.1); transform: scale(0.95) translateY(10px); transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1); } #claude-login-overlay.show #claude-login-modal { transform: scale(1) translateY(0); } #claude-login-modal h3 { margin: 0 0 6px 0; font-size: 18px; font-weight: 600; color: #1a1a1a; letter-spacing: -0.3px; } #claude-login-modal p { margin: 0 0 20px 0; font-size: 13px; color: #78716c; line-height: 1.5; } /* ==================== 输入框 ==================== */ .claude-input-wrapper { position: relative; } #claude-login-modal textarea { width: 100%; height: 88px; padding: 14px 36px 14px 14px; border: 1.5px solid #e7e5e0; border-radius: 12px; font-size: 13px; font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace; color: #1a1a1a; background: #ffffff; resize: none; box-sizing: border-box; transition: all 0.2s ease; line-height: 1.5; } #claude-login-modal textarea:hover { border-color: #d6d3ce; } #claude-login-modal textarea:focus { outline: none; border-color: #c96442; box-shadow: 0 0 0 3px rgba(201, 100, 66, 0.12); } #claude-login-modal textarea::placeholder { color: #a8a29e; } /* ==================== 清空按钮 ==================== */ .claude-clear-btn { position: absolute; top: 10px; right: 10px; width: 20px; height: 20px; border: none; background: #d6d3ce; color: #78716c; border-radius: 50%; cursor: pointer; font-size: 10px; line-height: 1; display: none; align-items: center; justify-content: center; transition: all 0.15s ease; } .claude-clear-btn:hover { background: #c96442; color: white; transform: scale(1.1); } .claude-clear-btn.show { display: flex; } /* ==================== 历史记录区域 ==================== */ .claude-history-section { margin-top: 16px; } .claude-history-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; padding: 0 2px; } .claude-history-title { font-size: 12px; font-weight: 500; color: #a8a29e; text-transform: uppercase; letter-spacing: 0.5px; } .claude-history-clear { font-size: 12px; color: #a8a29e; background: none; border: none; cursor: pointer; padding: 4px 8px; border-radius: 6px; transition: all 0.15s ease; } .claude-history-clear:hover { color: #c96442; background: rgba(201, 100, 66, 0.08); } .claude-history-list { display: flex; flex-direction: column; gap: 8px; max-height: 140px; overflow-y: auto; padding-right: 4px; } /* 自定义滚动条 */ .claude-history-list::-webkit-scrollbar { width: 4px; } .claude-history-list::-webkit-scrollbar-track { background: transparent; } .claude-history-list::-webkit-scrollbar-thumb { background: #d6d3ce; border-radius: 4px; } .claude-history-list::-webkit-scrollbar-thumb:hover { background: #a8a29e; } /* ==================== 历史记录项 ==================== */ .claude-history-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: #ffffff; border: 1.5px solid #e7e5e0; border-radius: 10px; cursor: pointer; transition: all 0.15s ease; } .claude-history-item:hover { border-color: #c96442; background: #fffcf9; } .claude-history-item.active { background: linear-gradient(135deg, #fff8f5 0%, #fff1eb 100%); border-color: #c96442; box-shadow: 0 2px 8px rgba(201, 100, 66, 0.1); } .claude-history-item.active .claude-history-item-key { color: #9a4a2c; font-weight: 500; } .claude-history-item-tag { font-size: 10px; font-weight: 600; color: #fff; background: #c96442; padding: 3px 8px; border-radius: 6px; flex-shrink: 0; letter-spacing: 0.3px; } .claude-history-item-key { flex: 1; font-size: 12px; font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace; color: #57534e; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .claude-history-item-delete { width: 18px; height: 18px; border: none; background: transparent; color: #d6d3ce; cursor: pointer; font-size: 11px; line-height: 1; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: all 0.15s ease; flex-shrink: 0; } .claude-history-item-delete:hover { background: rgba(201, 100, 66, 0.1); color: #c96442; transform: scale(1.1); } .claude-history-empty { font-size: 13px; color: #a8a29e; text-align: center; padding: 20px 12px; background: #ffffff; border: 1.5px dashed #e7e5e0; border-radius: 10px; } /* ==================== 按钮组 ==================== */ .claude-login-buttons { display: flex; gap: 12px; margin-top: 20px; } .claude-login-buttons button { flex: 1; padding: 12px 20px; border-radius: 10px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; letter-spacing: 0.2px; } /* 取消按钮 */ .claude-login-buttons .cancel-btn { background: transparent; border: 1.5px solid #e7e5e0; color: #57534e; } .claude-login-buttons .cancel-btn:hover { background: #f5f5f4; border-color: #d6d3ce; } .claude-login-buttons .cancel-btn:active { transform: scale(0.98); } /* 登录按钮 */ .claude-login-buttons .login-btn { background: #c96442; border: none; color: white; } .claude-login-buttons .login-btn:hover { background: #b8573c; } .claude-login-buttons .login-btn:active { transform: scale(0.98); } .claude-login-buttons .login-btn:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } /* 登录按钮加载状态 */ .claude-login-buttons .login-btn.loading { position: relative; color: transparent; pointer-events: none; } .claude-login-buttons .login-btn.loading::after { content: ''; position: absolute; width: 18px; height: 18px; top: 50%; left: 50%; margin-left: -9px; margin-top: -9px; border: 2px solid rgba(255, 255, 255, 0.3); border-top-color: white; border-radius: 50%; animation: claude-spin 0.7s linear infinite; } @keyframes claude-spin { to { transform: rotate(360deg); } } /* ==================== 提示信息 ==================== */ #claude-login-message { margin-top: 14px; padding: 10px 14px; border-radius: 10px; font-size: 13px; display: none; line-height: 1.4; } #claude-login-message.error { display: block; background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; } #claude-login-message.success { display: block; background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; } `; document.head.appendChild(style); // 创建悬浮按钮 const floatBtn = document.createElement('button'); floatBtn.id = 'claude-login-btn'; floatBtn.textContent = '登录'; floatBtn.title = 'SessionKey 登录(可拖动)'; document.body.appendChild(floatBtn); // 初始化按钮位置 const savedPosition = localStorage.getItem(STORAGE_KEY_POSITION); if (savedPosition) { const pos = JSON.parse(savedPosition); floatBtn.style.top = pos.top + 'px'; floatBtn.style.left = pos.left !== null ? pos.left + 'px' : 'auto'; floatBtn.style.right = pos.right !== null ? pos.right + 'px' : 'auto'; floatBtn.style.bottom = 'auto'; } else { // 默认位置:右下角 floatBtn.style.bottom = '20px'; floatBtn.style.right = '20px'; } // 创建弹窗 const overlay = document.createElement('div'); overlay.id = 'claude-login-overlay'; overlay.innerHTML = ` <div id="claude-login-modal"> <h3>SessionKey 登录</h3> <p>请输入你的 SessionKey,设置后页面将自动刷新</p> <div class="claude-input-wrapper"> <textarea id="claude-session-input" placeholder="请粘贴你的 SessionKey..."></textarea> <button class="claude-clear-btn" title="清空">✕</button> </div> <div class="claude-history-section"> <div class="claude-history-header"> <span class="claude-history-title">历史记录</span> <button class="claude-history-clear">清空全部</button> </div> <div class="claude-history-list"></div> </div> <div id="claude-login-message"></div> <div class="claude-login-buttons"> <button class="cancel-btn">取消</button> <button class="login-btn">登录</button> </div> </div> `; document.body.appendChild(overlay); // 获取元素 const modal = overlay.querySelector('#claude-login-modal'); const input = overlay.querySelector('#claude-session-input'); const clearBtn = overlay.querySelector('.claude-clear-btn'); const historyList = overlay.querySelector('.claude-history-list'); const historyClearBtn = overlay.querySelector('.claude-history-clear'); const message = overlay.querySelector('#claude-login-message'); const cancelBtn = overlay.querySelector('.cancel-btn'); const loginBtn = overlay.querySelector('.login-btn'); // ==================== 历史记录功能 ==================== /** * 获取当前使用的 SessionKey * @returns {string|null} 当前的 SessionKey * @author sm */ function getCurrentSessionKey() { // 从 localStorage 获取当前使用的 key return localStorage.getItem(STORAGE_KEY_CURRENT) || null; } /** * 设置当前使用的 SessionKey * @param {string} sessionKey - SessionKey * @author sm */ function setCurrentSessionKey(sessionKey) { localStorage.setItem(STORAGE_KEY_CURRENT, sessionKey); } /** * 获取历史记录 * @returns {Array} 历史记录数组 * @author sm */ function getHistory() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY_HISTORY)) || []; } catch { return []; } } /** * 保存历史记录 * @param {Array} history - 历史记录数组 * @author sm */ function saveHistory(history) { localStorage.setItem(STORAGE_KEY_HISTORY, JSON.stringify(history)); } /** * 添加到历史记录 * @param {string} sessionKey - SessionKey * @author sm */ function addToHistory(sessionKey) { let history = getHistory(); // 移除重复的 history = history.filter(item => item !== sessionKey); // 添加到开头 history.unshift(sessionKey); // 最多保存 5 条 history = history.slice(0, 5); saveHistory(history); } /** * 从历史记录中删除 * @param {string} sessionKey - SessionKey * @author sm */ function removeFromHistory(sessionKey) { let history = getHistory(); history = history.filter(item => item !== sessionKey); saveHistory(history); renderHistory(); } /** * 清空历史记录 * @author sm */ function clearHistory() { saveHistory([]); renderHistory(); } /** * 遮蔽显示 SessionKey * @param {string} key - SessionKey * @returns {string} 遮蔽后的字符串 * @author sm */ function maskKey(key) { if (key.length <= 16) { return key.slice(0, 4) + '****' + key.slice(-4); } return key.slice(0, 8) + '****' + key.slice(-8); } /** * 渲染历史记录列表 * @author sm */ function renderHistory() { let history = getHistory(); const currentKey = getCurrentSessionKey(); // 如果当前有使用的 key,将其置顶 if (currentKey) { history = history.filter(item => item !== currentKey); history.unshift(currentKey); // 同时更新存储,确保当前使用的在历史中 if (!getHistory().includes(currentKey)) { addToHistory(currentKey); history = getHistory(); } } if (history.length === 0) { historyList.innerHTML = '<div class="claude-history-empty">暂无历史记录</div>'; return; } historyList.innerHTML = history.map(key => { const isActive = key === currentKey; return ` <div class="claude-history-item${isActive ? ' active' : ''}" data-key="${encodeURIComponent(key)}"> <span class="claude-history-item-key">${maskKey(key)}</span> ${isActive ? '<span class="claude-history-item-tag">当前</span>' : ''} <button class="claude-history-item-delete" title="删除">✕</button> </div> `; }).join(''); // 绑定点击事件 historyList.querySelectorAll('.claude-history-item').forEach(item => { const key = decodeURIComponent(item.dataset.key); // 点击填充到输入框 item.addEventListener('click', (e) => { if (!e.target.classList.contains('claude-history-item-delete')) { input.value = key; updateClearBtnVisibility(); input.focus(); } }); // 删除按钮 item.querySelector('.claude-history-item-delete').addEventListener('click', (e) => { e.stopPropagation(); removeFromHistory(key); }); }); } // 清空全部历史 historyClearBtn.addEventListener('click', clearHistory); // ==================== 拖动功能 ==================== let isDragging = false; let hasMoved = false; let startX, startY, startLeft, startTop; /** * 开始拖动 * @author sm */ function onDragStart(e) { e.preventDefault(); isDragging = true; hasMoved = false; const clientX = e.type === 'touchstart' ? e.touches[0].clientX : e.clientX; const clientY = e.type === 'touchstart' ? e.touches[0].clientY : e.clientY; const rect = floatBtn.getBoundingClientRect(); startX = clientX; startY = clientY; startLeft = rect.left; startTop = rect.top; floatBtn.classList.add('dragging'); floatBtn.style.left = rect.left + 'px'; floatBtn.style.top = rect.top + 'px'; floatBtn.style.right = 'auto'; floatBtn.style.bottom = 'auto'; } /** * 拖动中 * @author sm */ function onDragMove(e) { if (!isDragging) return; const clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; const clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; const deltaX = clientX - startX; const deltaY = clientY - startY; // 判断是否移动超过阈值 if (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5) { hasMoved = true; } const btnWidth = floatBtn.offsetWidth; const btnHeight = floatBtn.offsetHeight; const maxX = window.innerWidth - btnWidth; const maxY = window.innerHeight - btnHeight; let newLeft = Math.max(0, Math.min(startLeft + deltaX, maxX)); let newTop = Math.max(0, Math.min(startTop + deltaY, maxY)); floatBtn.style.left = newLeft + 'px'; floatBtn.style.top = newTop + 'px'; } /** * 结束拖动,自动吸边 * @author sm */ function onDragEnd() { if (!isDragging) return; isDragging = false; floatBtn.classList.remove('dragging'); // 如果没有移动,则视为点击 if (!hasMoved) { showModal(); return; } // 吸边逻辑 const rect = floatBtn.getBoundingClientRect(); const centerX = rect.left + rect.width / 2; const windowWidth = window.innerWidth; floatBtn.classList.add('snap-transition'); let position = { top: rect.top, left: null, right: null }; if (centerX < windowWidth / 2) { // 吸附到左边 floatBtn.style.left = '10px'; floatBtn.style.right = 'auto'; position.left = 10; } else { // 吸附到右边 floatBtn.style.left = 'auto'; floatBtn.style.right = '10px'; position.right = 10; } // 保存位置 localStorage.setItem(STORAGE_KEY_POSITION, JSON.stringify(position)); setTimeout(() => { floatBtn.classList.remove('snap-transition'); }, 300); } // 绑定拖动事件 floatBtn.addEventListener('mousedown', onDragStart); document.addEventListener('mousemove', onDragMove); document.addEventListener('mouseup', onDragEnd); // 触摸事件支持 floatBtn.addEventListener('touchstart', onDragStart, { passive: false }); document.addEventListener('touchmove', onDragMove, { passive: false }); document.addEventListener('touchend', onDragEnd); // ==================== 输入框清空按钮 ==================== /** * 更新清空按钮显示状态 * @author sm */ function updateClearBtnVisibility() { if (input.value.length > 0) { clearBtn.classList.add('show'); } else { clearBtn.classList.remove('show'); } } /** * 清空输入框 * @author sm */ function clearInput() { input.value = ''; updateClearBtnVisibility(); input.focus(); } input.addEventListener('input', updateClearBtnVisibility); clearBtn.addEventListener('click', clearInput); // ==================== 弹窗功能 ==================== /** * 显示弹窗 * @author sm */ function showModal() { overlay.classList.add('show'); input.value = ''; updateClearBtnVisibility(); renderHistory(); message.className = ''; message.style.display = 'none'; // 重置按钮状态 loginBtn.classList.remove('loading'); loginBtn.disabled = false; cancelBtn.disabled = false; input.disabled = false; input.focus(); } /** * 隐藏弹窗 * @author sm */ function hideModal() { overlay.classList.remove('show'); } /** * 显示消息 * @param {string} text - 消息文本 * @param {string} type - 消息类型 (error/success) * @author sm */ function showMessage(text, type) { message.textContent = text; message.className = type; } /** * 执行登录操作 * @author sm */ function doLogin() { const sessionKey = input.value.trim(); // 验证输入 if (!sessionKey) { showMessage('请输入 SessionKey', 'error'); return; } // 简单验证格式(SessionKey 通常是较长的字符串) if (sessionKey.length < 20) { showMessage('SessionKey 格式不正确,请检查', 'error'); return; } // 显示加载状态 loginBtn.classList.add('loading'); loginBtn.disabled = true; cancelBtn.disabled = true; input.disabled = true; try { // 保存到历史记录 addToHistory(sessionKey); // 保存当前使用的 key setCurrentSessionKey(sessionKey); // 设置 Cookie document.cookie = `sessionKey=${sessionKey}; domain=.claude.ai; path=/; Secure`; showMessage('登录成功,正在刷新页面...', 'success'); // 延迟刷新,让用户看到成功提示 setTimeout(() => { window.location.reload(true); }, 800); } catch (error) { // 恢复按钮状态 loginBtn.classList.remove('loading'); loginBtn.disabled = false; cancelBtn.disabled = false; input.disabled = false; showMessage('设置失败:' + error.message, 'error'); } } // 事件绑定 cancelBtn.addEventListener('click', hideModal); loginBtn.addEventListener('click', doLogin); // 点击遮罩层关闭弹窗 overlay.addEventListener('click', (e) => { if (e.target === overlay) { hideModal(); } }); // ESC 键关闭弹窗 document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && overlay.classList.contains('show')) { hideModal(); } }); // 回车键提交 input.addEventListener('keydown', (e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); doLogin(); } }); console.log('[Claude SessionKey 登录助手] 脚本已加载'); })();


--【柒】--:

账号格式说明:
Claude账号/邮箱 ---- 邮箱密码 ---- 接码令牌

注意:“----”不是邮箱/密码/令牌的任何一部分

登陆方案一:免登录令牌验证流程
适合登录官网 Claude.ai 但不想手动登录邮箱的用户。
1.在官网输入您的 Claude 账号(邮箱)。
2.复制成品格式中的第三段 (接码令牌)。
3.浏览器打开 https://email.i80k.com/?type=claude,粘贴令牌并点击“获取验证码”,
然后下方会出现一个链接,点击会跳转显示或者直接免显示直接跳转登陆;
如果不跳转就复制到浏览器打开,即可看到验证码。

登陆方案二:邮箱手动获取验证码登录

1.访问邮箱:打开 mail.com
2.登录邮箱:使用格式中的第一段(账号)和第二段(邮箱密码)进行登录(也可改密)。
3.登陆官网 Claude.ai,输入帐号,会显示“Enter verification code”!
4.刷新刚才登陆的邮箱收件箱查收验证链接,点登录图标就跳转登陆了!
是这个吧 封号应该不会吧,封号就得找卖家了


--【捌】--:

刚评论没被封,后面就被封了,真的服了。。

标签:纯水