PUBG网页兑换cdk解除倒计时限制

修改PUBG兑换网页,使兑换错误不会出现倒计时

当前为 2024-12-26 提交的版本,查看 最新版本

// ==UserScript==
// @name         PUBG网页兑换cdk解除倒计时限制
// @namespace    http://tampermonkey.net/
// @version      2.2
// @description  修改PUBG兑换网页,使兑换错误不会出现倒计时
// @author       L
// @icon         https://wstatic-prod.pubg.com/web/live/static/favicons/apple-icon-57x57.png
// @match        https://pubg.com/*/events/redeem
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.addEventListener('load', () => {
        const originalFetch = window.fetch;
        window.fetch = function(...args) {
            if (args[0].includes('https://api-foc.krafton.com/redeem/v3/register') && args[1]?.method === 'POST') {
                return originalFetch(...args).then(response => {
                    if (response.status !== 200) {
                        return response.json().then(data => {
                            const errorCode = data.code || '未知错误';
                            const errorMessage = data.message || '发生未知错误';

                            let reason;
                            switch (errorCode) {
                                case 'INVALID_CODE':
                                    reason = '无效代码';
                                    break;
                                case 'EXPIRED':
                                    reason = '代码过期';
                                    break;
                                case 'LIMIT_OVER':
                                    reason = '代码兑换上限';
                                    break;
                                case 'ALREADY_ACTIVATED':
                                    reason = '代码已被使用';
                                    break;
                                default:
                                    reason = '未知原因';
                            }

                            modifyAlertContent(`兑换失败,${reason}。原始信息: ${errorCode}; ${errorMessage}`);

                            return response;
                        });
                    }
                    return response;
                });
            }
            return originalFetch(...args);
        };

        const originalXhrOpen = XMLHttpRequest.prototype.open;
        XMLHttpRequest.prototype.open = function(method, url) {
            this._url = url;
            return originalXhrOpen.apply(this, arguments);
        };

        const originalXhrSend = XMLHttpRequest.prototype.send;
        XMLHttpRequest.prototype.send = function() {
            const xhr = this;
            const checkResponse = function() {
                if (xhr.readyState === 4 && xhr.status !== 200) {
                    const responseData = JSON.parse(xhr.responseText);
                    const errorCode = responseData.code || '未知错误';
                    const errorMessage = responseData.message || '发生未知错误';

                    let reason;
                    switch (errorCode) {
                        case 'INVALID_CODE':
                            reason = '无效代码';
                            break;
                        case 'EXPIRED':
                            reason = '代码过期';
                            break;
                        case 'LIMIT_OVER':
                            reason = '代码兑换上限';
                            break;
                        case 'ALREADY_ACTIVATED':
                            reason = '代码已被使用';
                            break;
                        default:
                            reason = '未知原因';
                    }

                    Object.defineProperty(xhr, 'status', { value: 200 });
                    Object.defineProperty(xhr, 'responseText', { value: JSON.stringify({ message: '发生错误,请查看详细信息' }) });

                    modifyAlertContent(`兑换失败,${reason}。原始信息: ${errorCode}; ${errorMessage}`);
                }
            };

            this.addEventListener('readystatechange', checkResponse);
            return originalXhrSend.apply(this, arguments);
        };
    });

    function modifyAlertContent(message) {
        const alertModal = document.querySelector('.alert.modal__component.only-title');
        if (alertModal) {
            const titleElement = alertModal.querySelector('.alert__title span');
            if (titleElement) {
                titleElement.textContent = message;
            }
        } else {
            const observer = new MutationObserver(() => {
                const newAlertModal = document.querySelector('.alert.modal__component.only-title');
                if (newAlertModal) {
                    modifyAlertContent(message);
                    observer.disconnect();
                }
            });

            observer.observe(document.body, { childList: true, subtree: true });
        }
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址