您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Steam with amnesia always asking your age? Tell Steam once and for all how old you are and say goodbye to age verification.
当前为
// ==UserScript== // @name Auto Steam Age Verification // @description Steam with amnesia always asking your age? Tell Steam once and for all how old you are and say goodbye to age verification. // @version 1.0 // @namespace Roxas_Alt // @license CC-BY-NC-SA // @include http://store.steampowered.com/* // @include https://store.steampowered.com/* // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @icon https://store.steampowered.com/favicon.ico // ==/UserScript== //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // Don't trust my script? I'll explain how it works. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // 1. It checks if you have already saved your age in local storage. If so, it uses this data, if // // not, it uses standard data and saves it in local storage. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // 2. Each time a store.stempoWered.com finishes loading, the script performs the Timestamp () // // function. This function uses the data obtained in the first step to create a Timestamp Unix and // // then create/override the Birthtime cookie. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // Cookie Birthtime is used by Steam to determine your age, if this cookie does not exist Steam // // asks your age and creates this cookie, if the created cookie is invalid or inform you that you // // are under 18, then Steam does not let you Access the page. Cookie is stored locally and only // // lasts one session. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // The idea of this script is always to keep this cookie in your browser so that Steam no longer // // asks what your age is. If Steam kept this saved cookie, you would only need to inform your age // // once, but as Steam does not save (and there are reasons), this script "simulates" that. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // - That's just it, but also has the settings. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // 3. The configuration creates an extra element within the page. Settings use the data obtained // // from step 1 to inform what the current settings are. You can save by saving the inserted values // // in local storage. You can reset values to the default or simply close the settings. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // In the end, all the script does is to save locally the date you inform and always create the // // cookie needed for Steam never to ask your age again. // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////// const defaultConfig = { year: 2000, month: 1, day: 1, hours: 1, minute: 0, seconds: 1, }; const storedConfig = localStorage.getItem('config'); if (storedConfig !== null) { const parsedConfig = JSON.parse(storedConfig); config = parsedConfig; } else { localStorage.setItem('config', JSON.stringify(defaultConfig)); config = defaultConfig; } GM_registerMenuCommand('Settings', createConfigForm); function createConfigForm() { var overlay = document.createElement('div'); overlay.setAttribute('id', 'overlay-config-form'); overlay.style.position = 'fixed'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.8)'; overlay.style.zIndex = '9999'; document.body.appendChild(overlay); var form = document.createElement('form'); form.setAttribute('id', 'config-form'); form.style.position = 'fixed'; form.style.top = '50%'; form.style.left = '50%'; form.style.transform = 'translate(-50%, -50%)'; form.style.padding = '16px'; form.style.border = '1px solid #171a27'; form.style.borderRadius = '8px'; form.style.backgroundColor = '#fff'; form.style.display = 'flex'; form.style.flexDirection = 'column'; form.style.backgroundColor = '#171a21'; form.style.zIndex = '99999'; var heading = document.createElement('h1'); heading.textContent = '⚙ Steam Age Settings'; var text = document.createElement('p'); text.textContent = "Please enter valid values. (You don't want an error, do you?)"; var yearDiv = document.createElement('div'); var yearLabel = document.createElement('label'); yearLabel.textContent = 'Year:'; var yearInput = document.createElement('input'); yearInput.setAttribute('type', 'number'); yearInput.setAttribute('name', 'year'); yearInput.setAttribute('value', config.year); var monthDiv = document.createElement('div'); var monthLabel = document.createElement('label'); monthLabel.textContent = 'Month:'; var monthInput = document.createElement('input'); monthInput.setAttribute('type', 'number'); monthInput.setAttribute('name', 'month'); monthInput.setAttribute('value', config.month); var dayDiv = document.createElement('div'); var dayLabel = document.createElement('label'); dayLabel.textContent = 'Day:'; var dayInput = document.createElement('input'); dayInput.setAttribute('type', 'number'); dayInput.setAttribute('name', 'day'); dayInput.setAttribute('value', config.day); var textHour = document.createElement('p'); textHour.textContent = "I don't recommend changing the values below."; var hoursDiv = document.createElement('div'); var hoursLabel = document.createElement('label'); hoursLabel.textContent = 'Hours:'; var hoursInput = document.createElement('input'); hoursInput.setAttribute('type', 'number'); hoursInput.setAttribute('name', 'hours'); hoursInput.setAttribute('value', config.hours); var minuteDiv = document.createElement('div'); var minuteLabel = document.createElement('label'); minuteLabel.textContent = 'Minute:'; var minuteInput = document.createElement('input'); minuteInput.setAttribute('type', 'number'); minuteInput.setAttribute('name', 'minute'); minuteInput.setAttribute('value', config.minute); var secondsDiv = document.createElement('div'); var secondsLabel = document.createElement('label'); secondsLabel.textContent = 'Seconds:'; var secondsInput = document.createElement('input'); secondsInput.setAttribute('type', 'number'); secondsInput.setAttribute('name', 'seconds'); secondsInput.setAttribute('value', config.seconds); var buttonsDiv = document.createElement('div'); var saveButton = document.createElement('button'); saveButton.textContent = 'Save'; saveButton.setAttribute('type', 'submit'); var resetButton = document.createElement('button'); resetButton.textContent = 'Reset'; resetButton.setAttribute('type', 'button'); resetButton.addEventListener('click', function () { document.getElementById('config-form').remove(); document.getElementById('overlay-config-form').remove(); localStorage.setItem('config', JSON.stringify(defaultConfig)); config = defaultConfig; console.log(config); var timestampUnix = timestamp(config); console.log(timestampUnix); }); var closeButton = document.createElement('button'); closeButton.textContent = 'Close'; closeButton.setAttribute('type', 'button'); closeButton.addEventListener('click', function () { document.getElementById('config-form').remove(); document.getElementById('overlay-config-form').remove(); }); overlay.appendChild(form); form.appendChild(heading); form.appendChild(text); text.style.marginTop = '20px'; form.appendChild(yearDiv); yearDiv.appendChild(yearLabel); yearDiv.appendChild(yearInput); yearDiv.style.marginTop = '20px'; yearDiv.style.display = 'inline-flex'; yearLabel.style.marginRight = '5px'; yearLabel.style.width = '70px'; yearInput.style.flex = '1'; form.appendChild(monthDiv); monthDiv.appendChild(monthLabel); monthDiv.appendChild(monthInput); monthDiv.style.display = 'inline-flex'; monthLabel.style.marginRight = '5px'; monthLabel.style.width = '70px'; monthInput.style.flex = '1'; form.appendChild(dayDiv); dayDiv.appendChild(dayLabel); dayDiv.appendChild(dayInput); dayDiv.style.display = 'inline-flex'; dayLabel.style.marginRight = '5px'; dayLabel.style.width = '70px'; dayInput.style.flex = '1'; form.appendChild(textHour); textHour.style.marginBottom = '20px'; form.appendChild(hoursDiv); hoursDiv.appendChild(hoursLabel); hoursDiv.appendChild(hoursInput); hoursDiv.style.display = 'inline-flex'; hoursLabel.style.marginRight = '5px'; hoursLabel.style.width = '70px'; hoursInput.style.flex = '1'; form.appendChild(minuteDiv); minuteDiv.appendChild(minuteLabel); minuteDiv.appendChild(minuteInput); minuteDiv.style.display = 'inline-flex'; minuteLabel.style.marginRight = '5px'; minuteLabel.style.width = '70px'; minuteInput.style.flex = '1'; form.appendChild(secondsDiv); secondsDiv.appendChild(secondsLabel); secondsDiv.appendChild(secondsInput); secondsDiv.style.display = 'inline-flex'; secondsLabel.style.marginRight = '5px'; secondsLabel.style.width = '70px'; secondsInput.style.flex = '1'; form.querySelectorAll('div').forEach(function (div) { div.style.marginBottom = '20px'; }); form.appendChild(buttonsDiv); buttonsDiv.appendChild(saveButton); buttonsDiv.appendChild(resetButton); buttonsDiv.appendChild(closeButton); // Estilo para o div dos botões buttonsDiv.style.display = 'flex'; buttonsDiv.style.justifyContent = 'flex-end'; // Estilo para os botões saveButton.style.padding = '8px 16px'; saveButton.style.borderRadius = '4px'; saveButton.style.backgroundColor = '#4CAF50'; saveButton.style.color = '#fff'; saveButton.style.border = '0px'; resetButton.style.padding = '8px 16px'; resetButton.style.borderRadius = '4px'; resetButton.style.backgroundColor = '#2196F3'; resetButton.style.color = '#fff'; resetButton.style.border = '0px'; resetButton.style.marginLeft = '10px'; closeButton.style.padding = '8px 16px'; closeButton.style.borderRadius = '4px'; closeButton.style.backgroundColor = '#f44336'; closeButton.style.color = '#fff'; closeButton.style.border = '0px'; closeButton.style.marginLeft = '10px'; form.addEventListener('submit', function (event) { event.preventDefault(); saveConfig(form); }); } function saveConfig(event) { var year = parseInt(document.querySelector('input[name="year"]').value); var month = parseInt(document.querySelector('input[name="month"]').value); var day = parseInt(document.querySelector('input[name="day"]').value); var hours = parseInt(document.querySelector('input[name="hours"]').value); var minute = parseInt(document.querySelector('input[name="minute"]').value); var seconds = parseInt(document.querySelector('input[name="seconds"]').value); document.getElementById('config-form').remove(); document.getElementById('overlay-config-form').remove(); localStorage.setItem( 'config', JSON.stringify({ year: year, month: month, day: day, hours: hours, minute: minute, seconds: seconds, }) ); config = { year: year, month: month, day: day, hours: hours, minute: minute, seconds: seconds, }; console.log(config); var timestampUnix = timestamp(config); console.log(timestampUnix); } function timestamp(config) { var timestampUnix = new Date(config.year, config.month - 1, config.day, config.hours, config.minute, config.seconds).getTime() / 1000; document.cookie = 'birthtime=' + timestampUnix + '; Secure; path=/; Max-Age=31556926; SameSite=None'; return timestampUnix; } window.addEventListener('load', function () { console.log(config); var timestampUnix = timestamp(config); console.log(timestampUnix); });