Steam: Bypass age confirmation prompts

Suppresses age confirmations on Steam store pages and community hubs

当前为 2018-02-23 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Steam: Bypass age confirmation prompts
// @namespace    steam
// @version      1.4
// @description  Suppresses age confirmations on Steam store pages and community hubs
// @author       lunboks
// @match        *://steamcommunity.com/*
// @match        *://store.steampowered.com/agecheck/app/*
// @match        *://store.steampowered.com/app/*/agecheck*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function () {
	"use strict";

	if (location.hostname === "store.steampowered.com") {
		// Set up long-lived cookies to bypass age verification
		var date = new Date();
		date.setUTCFullYear(date.getUTCFullYear() + 1);

		var cookieOptions = "; path=/; max-age=31536000; expires=" + date.toUTCString();

		// this bypasses the "mature content - continue/cancel" screen
		document.cookie = "mature_content=1" + cookieOptions;
		// this bypasses the "enter your date of birth" screen
		document.cookie = "birthtime=0" + cookieOptions; // 1970-01-01

		// Reload after making sure we're actually on a page with an age gate
		window.addEventListener("DOMContentLoaded", function () {
			if (document.getElementById("agegate_box") || document.getElementById("app_agegate")) {
				document.body.hidden = true;
				location.reload();
			}
		}, false);
	} else if (location.hostname === "steamcommunity.com") {
		// Patch Storage.getItem to return a fake value for all keys that look like age_gate_123.
		// This bypasses the mature content overlay on community hubs.
		// Since the overlay is put up during page load, we don't have to reload here.
		var overrideRegex = /^age_gate_\d+$/;
		var overrideValue = "1";

		var realGetItem = Storage.prototype.getItem;
		var realSessionStorage = window.sessionStorage;

		Storage.prototype.getItem = function getItem(key) {
			// If this is a call on sessionStorage and it matches
			// the pattern, return a faked result instead
			if (this === realSessionStorage && overrideRegex.test(key)) {
				return overrideValue;
			}

			return realGetItem.apply(this, arguments);
		};
	}
})();