淘宝买了个claudecode成品号,给了一个这个
- 内容介绍
- 文章标签
- 相关推荐
淘宝卖家给了一个邮箱和密码等等,还给了一个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.刷新刚才登陆的邮箱收件箱查收验证链接,点登录图标就跳转登陆了!
是这个吧 封号应该不会吧,封号就得找卖家了
--【捌】--:
刚评论没被封,后面就被封了,真的服了。。

