Steam Trade Acknowledge Button

Steam同意撤回协议

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Steam Trade Acknowledge Button
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Steam同意撤回协议
// @author       You
// @match        https://steamcommunity.com/profiles/*/inventory*
// @match        https://steamcommunity.com/id/*/inventory*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 创建按钮样式
    const buttonStyle = `
        position: fixed;
        top: 20px;
        right: 20px;
        z-index: 9999;
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        color: white;
        border: none;
        padding: 12px 24px;
        border-radius: 8px;
        font-size: 14px;
        font-weight: bold;
        cursor: pointer;
        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
        transition: all 0.3s ease;
        font-family: Arial, sans-serif;
    `;

    // 创建按钮
    const button = document.createElement('button');
    button.textContent = '确认交易';
    button.style.cssText = buttonStyle;

    // 添加悬停效果
    button.addEventListener('mouseenter', function() {
        this.style.transform = 'translateY(-2px)';
        this.style.boxShadow = '0 6px 20px rgba(0, 0, 0, 0.3)';
    });

    button.addEventListener('mouseleave', function() {
        this.style.transform = 'translateY(0)';
        this.style.boxShadow = '0 4px 15px rgba(0, 0, 0, 0.2)';
    });

    // 获取当前页面的 sessionID
    function getCurrentSessionID() {
        // 尝试从全局变量获取
        if (typeof g_sessionID !== 'undefined' && g_sessionID) {
            return g_sessionID;
        }
        
        // 尝试从 window 对象获取
        if (window.g_sessionID) {
            return window.g_sessionID;
        }
        
        // 尝试从 unsafeWindow 获取(油猴脚本环境)
        if (typeof unsafeWindow !== 'undefined' && unsafeWindow.g_sessionID) {
            return unsafeWindow.g_sessionID;
        }
        
        // 如果都获取不到,返回 null
        return null;
    }

    // 点击事件处理
    button.addEventListener('click', function() {
        // 获取当前的 sessionID
        const sessionID = getCurrentSessionID();
        
        if (!sessionID) {
            showNotification('无法获取 sessionID,请确保在 Steam 页面上操作', 'error');
            return;
        }
        
        console.log('当前 sessionID:', sessionID);
        
        // 禁用按钮防止重复点击
        this.disabled = true;
        this.textContent = '提交中...';
        this.style.background = '#ccc';

        // 执行请求
        fetch('https://steamcommunity.com//trade/new/acknowledge', {
            method: 'POST',
            headers: {
                'Accept': '*/*',
                'Accept-Language': 'zh-CN,zh;q=0.9',
                'Cache-Control': 'no-cache',
                'Connection': 'keep-alive',
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                'Origin': 'https://steamcommunity.com',
                'Pragma': 'no-cache',
                'Referer': window.location.href,
                'Sec-Fetch-Dest': 'empty',
                'Sec-Fetch-Mode': 'cors',
                'Sec-Fetch-Site': 'same-origin',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
                'X-Requested-With': 'XMLHttpRequest',
                'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
                'sec-ch-ua-mobile': '?0',
                'sec-ch-ua-platform': '"Windows"'
            },
            body: `sessionid=${sessionID}&message=1`, // 使用动态获取的 sessionID
            credentials: 'include' // 包含cookies
        })
        .then(response => {
            if (response.ok) {
                return response.json();
            }
            throw new Error('网络请求失败');
        })
        .then(data => {
            console.log('请求成功:', data);

            // 显示结果
            if (data.success) {
                this.textContent = '✓ 成功';
                this.style.background = 'linear-gradient(135deg, #4CAF50 0%, #45a049 100%)';

                // 显示成功通知
                showNotification('交易确认成功!', 'success');
            } else {
                this.textContent = '✗ 失败';
                this.style.background = 'linear-gradient(135deg, #f44336 0%, #d32f2f 100%)';

                // 显示失败通知
                showNotification('交易确认失败:' + (data.message || '未知错误'), 'error');
            }

            // 3秒后恢复按钮
            setTimeout(() => {
                this.disabled = false;
                this.textContent = '确认交易';
                this.style.background = 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)';
            }, 3000);
        })
        .catch(error => {
            console.error('请求失败:', error);
            this.textContent = '✗ 错误';
            this.style.background = 'linear-gradient(135deg, #f44336 0%, #d32f2f 100%)';

            // 显示错误通知
            showNotification('请求失败:' + error.message, 'error');

            // 3秒后恢复按钮
            setTimeout(() => {
                this.disabled = false;
                this.textContent = '确认交易';
                this.style.background = 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)';
            }, 3000);
        });
    });

    // 通知函数
    function showNotification(message, type) {
        const notification = document.createElement('div');
        notification.textContent = message;
        notification.style.cssText = `
            position: fixed;
            top: 80px;
            right: 20px;
            z-index: 10000;
            padding: 12px 20px;
            border-radius: 6px;
            color: white;
            font-weight: bold;
            font-family: Arial, sans-serif;
            max-width: 300px;
            word-wrap: break-word;
            animation: slideIn 0.3s ease;
            ${type === 'success' ? 'background: #4CAF50;' : 'background: #f44336;'}
        `;

        // 添加动画样式
        const style = document.createElement('style');
        style.textContent = `
            @keyframes slideIn {
                from { transform: translateX(100%); opacity: 0; }
                to { transform: translateX(0); opacity: 1; }
            }
        `;
        document.head.appendChild(style);

        document.body.appendChild(notification);

        // 3秒后自动移除通知
        setTimeout(() => {
            if (notification.parentNode) {
                notification.parentNode.removeChild(notification);
            }
        }, 3000);
    }

    // 将按钮添加到页面
    document.body.appendChild(button);

    console.log('Steam交易确认按钮已加载');
    
    // 显示当前检测到的 sessionID(用于调试)
    const currentSessionID = getCurrentSessionID();
    if (currentSessionID) {
        console.log('检测到 sessionID:', currentSessionID);
    } else {
        console.warn('未检测到 sessionID,请确保在正确的 Steam 页面上');
    }
})();