您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
复制网页中的Steamkey后自动打开激活页面并激活
当前为
// ==UserScript== // @name AuTo Redeemer Steamkey(自动激活Steamkey) // @namespace HCLonely // @description 复制网页中的Steamkey后自动打开激活页面并激活 // @include *://*/* // @version 2.0.1 // @grant none // ==/UserScript== (function() { var url2 = window.location.href; if (/^https?:\/\/store\.steampowered\.com\/account\/registerkey*/.test(url2)){ (function() { var autoDivideNum = 9; var waitingSeconds = 20; var ajaxTimeout = 15; var keyCount = 0; var recvCount = 0; var timer; var allUnusedKeys = []; var failureDetail = { 14: '无效激活码', 15: '重复激活', 53: '次数上限', 13: '地区限制', 9: '已拥有', 24: '缺少主游戏', 36: '需要PS3?', 50: '这是充值码', }; var myTexts = { fail: '失败', success: '成功', network: '网络错误或超时', line: '——', nothing: '', others: '其他错误', unknown: '未知错误', redeeming: '激活中', waiting: '等待中', showUnusedKey: '显示未使用的Key', hideUnusedKey: '隐藏未使用的Key', }; var unusedKeyReasons = [ '次数上限', '地区限制', '已拥有', '缺少主游戏', '其他错误', '未知错误', '网络错误或超时', ]; function redeemKey(key) { jQuery.ajax({ url: 'https://store.steampowered.com/account/ajaxregisterkey/', data: { product_key: key, sessionid: g_sessionID }, type: 'post', dataType: 'json', timeout: 1000 * ajaxTimeout, beforeSend: function(){ if (jQuery('table').is(':hidden')) { jQuery('table').fadeIn(); } }, complete: function() { }, error: function() { tableUpdateKey(key, myTexts.fail, myTexts.network, 0, myTexts.nothing); return; }, success: function(data) { //console.log(data); if (data.success == 1) { tableUpdateKey(key, myTexts.success, myTexts.line, data.purchase_receipt_info.line_items[0].packageid, data.purchase_receipt_info.line_items[0].line_item_description); return; } else if (data.purchase_result_details !== undefined && data.purchase_receipt_info) { if (!data.purchase_receipt_info.line_items[0]) { tableUpdateKey(key, myTexts.fail, failureDetail[data.purchase_result_details] ? failureDetail[data.purchase_result_details] : myTexts.others, 0, myTexts.nothing); } else { tableUpdateKey(key, myTexts.fail, failureDetail[data.purchase_result_details] ? failureDetail[data.purchase_result_details] : myTexts.others, data.purchase_receipt_info.line_items[0].packageid, data.purchase_receipt_info.line_items[0].line_item_description); } return; } tableUpdateKey(key, myTexts.fail, myTexts.nothing, 0, myTexts.nothing); } }); } function setUnusedKeys(key, success, reason, subId, subName) { if (success && allUnusedKeys.includes(key)) { allUnusedKeys = allUnusedKeys.filter(function(keyItem){ return keyItem != key; }); var listObjects = jQuery('li'); for(var i = 0; i < listObjects.length; i++) { var listElement = listObjects[i]; var listObject = jQuery(listElement); if(listElement.innerHTML.includes(key)) { listObject.remove(); } } } else if (!success && !allUnusedKeys.includes(key) && unusedKeyReasons.includes(reason)) { var listObject = jQuery('<li></li>'); listObject.html(key + ' ( ' + reason + (subId != 0 ? (': <code>' + subId + '</code> ' + subName) : '') + ' )'); jQuery('#unusedKeys').append(listObject); allUnusedKeys.push(key); } } function tableInsertKey(key) { keyCount++; var row = jQuery('<tr></tr>'); // number row.append('<td class="nobr">' + keyCount + '</td>'); //key row.append('<td class="nobr"><code>' + key + '</code></td>'); //redeeming... row.append('<td colspan="3">' + myTexts.redeeming + '...</td>'); jQuery('tbody').prepend(row); } function tableWaitKey(key) { keyCount++; var row = jQuery('<tr></tr>'); // number row.append('<td class="nobr">' + keyCount + '</td>'); //key row.append('<td class="nobr"><code>' + key + '</code></td>'); //waiting... row.append('<td colspan="3">' + myTexts.waiting + ' (' + waitingSeconds + '秒)...</td>'); jQuery('tbody').prepend(row); } function tableUpdateKey(key, result, detail, subId, subName) { setUnusedKeys(key, result === myTexts.success, detail, subId, subName); recvCount++; if (recvCount == keyCount) { jQuery('#buttonRedeem').fadeIn(); jQuery('#inputKey').removeAttr('disabled'); } var rowObjects = jQuery('tr'); for (var i = 1; i < rowObjects.length; i++) { var rowElement = rowObjects[i]; var rowObject = jQuery(rowElement); if (rowObject.children()[1].innerHTML.includes(key)&& rowObject.children()[2].innerHTML.includes(myTexts.redeeming)) { rowObject.children()[2].remove(); // result if (result == myTexts.fail) rowObject.append('<td class="nobr" style="color:red">' + result + '</td>'); else rowObject.append('<td class="nobr" style="color:green">' + result + '</td>'); // detail rowObject.append('<td class="nobr">' + detail + '</td>'); // sub if (subId === 0) { rowObject.append('<td>——</td>'); } else { rowObject.append('<td><code>' + subId + '</code> <a href="https://steamdb.info/sub/' + subId + '/" target="_blank">' + subName + '</a></td>'); } break; } } } function getKeysByRE(text) { text = text.trim().toUpperCase(); var reg = new RegExp('([0-9,A-Z]{5}-){2,4}[0-9,A-Z]{5}', 'g'); var keys = []; var result = void 0; while (result = reg.exec(text)) { keys.push(result[0]); } return keys; } function startTimer() { timer = setInterval(function() { var flag = false; var nowKey = 0; var rowObjects = jQuery('tr'); for (var i = rowObjects.length - 1; i >= 1; i--) { var rowElement = rowObjects[i]; var rowObject = jQuery(rowElement); if (rowObject.children()[2].innerHTML.includes(myTexts.waiting)) { nowKey++; if (nowKey <= autoDivideNum) { var key = rowObject.children()[1].innerHTML.substring(6); key = key.substring(0, key.indexOf('</code>')); rowObject.children()[2].innerHTML = '<td colspan="3">' + myTexts.redeeming + '...</td>'; redeemKey(key); } else { flag = true; break; } } } if (!flag) { clearInterval(timer); } }, 1000 * waitingSeconds); } function redeemKeys() { var keys = getKeysByRE(jQuery('#inputKey').val().trim()); if (keys.length <= 0) { return; } jQuery('#buttonRedeem').hide(); jQuery('#inputKey').attr('disabled', 'disabled'); var nowKey = 0; keys.forEach(function (key) { nowKey++; if (nowKey <= autoDivideNum) { tableInsertKey(key); redeemKey(key); } else { tableWaitKey(key); } }); if (nowKey > autoDivideNum) { startTimer(); } } function toggleUnusedKeyArea() { if (jQuery('#unusedKeyArea').is(':hidden')) { jQuery('#unusedKeyArea').fadeIn(); } else { jQuery('#unusedKeyArea').hide(); } } jQuery('#registerkey_examples_text').html( '<div class="notice_box_content" id="unusedKeyArea" style="display: none">' + '<b>未使用的Key:</b><br>'+ '<div><ol id="unusedKeys">' + '</ol></div>' + '</div>' + '<div class="table-responsive table-condensed">' + '<table class="table table-hover" style="display: none">' + '<caption><h2>激活记录</h2></caption><thead><th>No.</th><th>Key</th>' + '<th>结果</th><th>详情</th><th>Sub</th></thead><tbody></tbody>' + '</table></div><br>'); var url1 = window.location.href; if (/^https?:\/\/store\.steampowered\.com\/account\/registerkey\?key\=([\w\W]*)?([\d\w]{5}(\-[\d\w]{5}){2}(\r||,||,)?){1,}/.test(url1)) { jQuery('.registerkey_input_box_text').parent().append('<textarea class="form-control" rows="3"' + ' id="inputKey" placeholder="支持批量激活,可以把整个网页文字复制过来 ' + '若一次激活的Key的数量超过9个则会自动分批激活(等待20秒)"' + ' style="margin: 3px 0px 0px; width: 525px; height: 102px;"></textarea><br>'); var mykeys=document.getElementById("product_key").value; document.getElementById("inputKey").value=mykeys; jQuery('.registerkey_input_box_text').hide(); jQuery('#purchase_confirm_ssa').hide(); //jQuery('#register_btn').removeAttr('href').attr('href', 'javascript:redeemKeys()'); //jQuery('#register_btn').parent().append('<button class="btnv6_blue_hoverfade btn_medium" id="buttonRedeem">激活!</button>'); jQuery('#register_btn').parent().append('<a tabindex="300" class="btnv6_blue_hoverfade btn_medium"' + ' id="buttonRedeem"><span>激活!</span></a>' + ' ' + '<a tabindex="300" class="btnv6_blue_hoverfade btn_medium"' + '</span></a>'); jQuery('#register_btn').remove(); redeemKeys(); jQuery('#buttonRedeem').click(function() { redeemKeys(); }); } if (/^https?:\/\/store\.steampowered\.com\/account\/registerkey(\?key\=)?$/.test(url1)) { jQuery('.registerkey_input_box_text').parent().append('<textarea class="form-control" rows="3"' + ' id="inputKey" placeholder="支持批量激活,可以把整个网页文字复制过来 ' + '若一次激活的Key的数量超过9个则会自动分批激活(等待20秒)"' + ' style="margin: 3px 0px 0px; width: 525px; height: 102px;"></textarea><br>'); jQuery('.registerkey_input_box_text').hide(); jQuery('#purchase_confirm_ssa').hide(); //jQuery('#register_btn').removeAttr('href').attr('href', 'javascript:redeemKeys()'); //jQuery('#register_btn').parent().append('<button class="btnv6_blue_hoverfade btn_medium" id="buttonRedeem">激活!</button>'); jQuery('#register_btn').parent().append('<a tabindex="300" class="btnv6_blue_hoverfade btn_medium"' + ' id="buttonRedeem"><span>激活!</span></a>' + ' ' + '</span></a>'); jQuery('#register_btn').remove(); jQuery('#buttonRedeem').click(function() { redeemKeys(); }); } toggleUnusedKeyArea(); function copyKey(){ var infoHtml=jQuery("#unusedKeys>li"); var stmcnInfo=""; if(infoHtml){ if(infoHtml.length==0){ return "没有未使用的key"; }else{ for (var i=0;i<infoHtml.length;i++){ var info=infoHtml[i].innerHTML; if(/已拥有/gim.test(info)){ var key=info.match(/[\w\d]{5}(-[\w\d]{5}){2}/gim)[0]; var code=info.match(/<code>[\d]+?<\/code>/gim)[0]; code=code.replace(/<\/?code>/gim,""); var name=info.match(/<\/code>[\w\W]*?\)/gim)[0]; name=name.replace(/<\/code>|\)/gim,""); name=name.replace(/(^\s*)|(\s*$)/g, ""); stmcnInfo=stmcnInfo+key+" [url=https://steamdb.info/sub/"+code+"]"+name+"[/url] \n"; }else{ return "没有已拥有的key"; } } } }else{ return "没有未使用的key"; } if(stmcnInfo==""){ } return stmcnInfo; } jQuery("head").append('<style>table a {color: pink;}td {white-space: nowrap;overflow: hidden;}code {padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px}' + '.notice_box_content {border: 1px solid #a25024;border-radius: 3px;width: 525px;color: #acb2b8;font-size: 14px;font-family: "Motiva Sans", Sans-serif;font-weight: normal;padding: 15px 15px;margin-bottom: 15px;}' + '.notice_box_content b {font-weight: normal;color: #f47b20;}li {white-space: nowrap;overflow: hidden;}'+ '.link-toast{position:absolute;padding:12px 24px;font-size:15px;border-radius:8px;white-space:nowrap;color:#fff;-webkit-animation:h cubic-bezier(.22,.58,.12,.98) .4s;animation:h cubic-bezier(.22,.58,.12,.98) .4s;z-index:10000}'+ '.link-toast.info{background-color:#48bbf8;-webkit-box-shadow:0 .2em .1em .1em rgba(72,187,248,.2);box-shadow:0 .2em .1em .1em rgba(72,187,248,.2)}'+ '.link-toast.success{background-color:#47d279;-webkit-box-shadow:0 .2em .1em .1em rgba(71,210,121,.2);box-shadow:0 .2em .1em .1em rgba(71,210,121,.2)}</style>'); jQuery("body").append('<div id="suc" class="link-toast success" style="position:fixed;top:300px;left:600px;display:none">复制成功!</div>'+ '<div id="copyInfo" class="link-toast info" style="position:fixed;top:300px;left:600px;display:none"></div><textarea id="unkey" style="position:fixed;top:100px;display:none"></textarea>'); jQuery("#unusedKeyArea>b").after('<button id="copy" class="btnv6_blue_hoverfade btn_medium">提取已拥有key(steamcn论坛格式)</button>'); jQuery("#copy").click(function(){ var unk=copyKey(); if(unk=="没有未使用的key"){ jQuery("#copyInfo").html("没有未使用的key"); jQuery("#copyInfo").show(); setTimeout(function(){ jQuery("#copyInfo").fadeOut(); },2000); }else if(unk=="没有已拥有的key"){ jQuery("#copyInfo").html("没有已拥有的key"); jQuery("#copyInfo").show(); setTimeout(function(){ jQuery("#copyInfo").fadeOut(); },2000); }else{ jQuery("#unkey").show(); jQuery("#unkey").val(unk); jQuery("#unkey").focus(); jQuery("#unkey").select(); document.execCommand("Copy"); jQuery("#unkey").hide(); jQuery("#suc").show(); setTimeout(function(){ jQuery("#suc").fadeOut(); },2000); } }); })(); }else if(/https?:\/\/mail.[\w\W]*.com\/*/i.test(url2)){ var activateProduct = function(e) { var productKey = window.getSelection().toString().trim() || e.target.value; if (/^([\w\W]*)?([\d\w]{5}(\-[\d\w]{5}){2}(\r||,||,)?){1,}/.test(productKey)) { if (confirm("检测到神秘key,是否进入steam激活页面并激活?")) { var productKey1=productKey.replace(/\r\n/g,","); var productKey2=productKey1.replace(/\n/g,","); window.open("https://store.steampowered.com/account/registerkey?key=" + productKey2, "_blank"); } } }; window.addEventListener("copy", activateProduct, false); }else if(!/https?:\/\/steamcn.com\/forum.php[\w\W]*action=edit/i.test(url2)){ (function() { var keySum=0,sum=0; var i,node,nodeText,key,keyReg; function arr(arr) { var result=[]; for(var i=0; i<arr.length; i++){ if(result.indexOf(arr[i])==-1){ result.push(arr[i]); } } return(result); } function getKey(){ var steamKey=document.getElementsByTagName('body')[0].innerText.match(/[\w\d]{5}(-[\w\d]{5}){2}/g); if(steamKey){ steamKey=arr(steamKey); keySum=steamKey.length; if(keySum==sum){ setTimeout(getKey,2000); }else{ var allNodes = document.getElementsByTagName('*'); var length = allNodes.length; for (i = 0; i < length; i++) { node = allNodes[i]; if(/^a$|^input$|^textarea$/i.test(node.tagName)){ }else{ if (/[\w\d]{5}(-[\w\d]{5}){2}/gim.test(node.innerText)) { nodeText=node.childNodes; for(var j=0;j<nodeText.length;j++){ if(nodeText[j].nodeType==3){ if(/[\w\d]{5}(-[\w\d]{5}){2}/gim.test(node.childNodes[j].nodeValue)){ key=node.childNodes[j].nodeValue.match(/[\w\d]{5}(-[\w\d]{5}){2}/gim)[0]; keyReg=new RegExp(key,"gim"); node.childNodes[j].parentNode.innerHTML=node.childNodes[j].parentNode.innerHTML.replace(keyReg,`<a href="https://store.steampowered.com/account/registerkey?key=${key}" target="_blank" title="点击前往激活">${key}</a>`); } }else{ } } var leftBtm=""; for(var k=0;k<steamKey.length;k++){ leftBtm=leftBtm+steamKey[k]+" "; } document.getElementsByTagName('body')[0].innerHTML=document.getElementsByTagName('body')[0].innerHTML.replace(/激活本页面所有key\(共[\d]*个/gim,`激活本页面所有key(共${keySum}个`); document.getElementById("allKey").value=`https://store.steampowered.com/account/registerkey?key=${leftBtm}`; sum=keySum; } } } setTimeout(getKey,3000); } if(keySum==0){ }else{ document.getElementById("allKey").setAttribute("style","display:block"); } }else{ setTimeout(getKey,2000); } } function addBtn(){ var parent = document.getElementsByTagName('body')[0]; var div = document.createElement("div"); div.setAttribute("id", "keyDiv"); div.setAttribute("style", "position:fixed;left:5px;bottom:5px"); div.innerHTML = `<button id="allKey" value="https://store.steampowered.com/account/registerkey?key=" onClick="window.open(document.getElementById('allKey').value,'_blank')" style="display:none">激活本页面所有key(共${keySum}个)</button>`; parent.appendChild(div); } window.onload=function(){ addBtn(); getKey(); }; })(); } ////////<<<<<<-------------steamdb.info代码此处开始------------------/////// if(/https?:\/\/steamdb\.info\/freepackages\//.test(url2)){ (function() { var activateConsole = function(e) { document.execCommand("Copy"); var jsText = window.getSelection().toString().trim() || e.target.value; if (/\(function\(\)[\w\W]{0,}var freePackages \=[\w\W]{0,}\}\(\)\)\;/.test(jsText)) { if (confirm("代码已复制,是否前往steam账户许可页面并激活?")) { var freePackages_0=jsText.match(/[\d]{2,},[\s]\/\/ \[REMOVE\]/g); var freePackages_1 = freePackages_0.join("-"); var freePackages_2=freePackages_1.match(/[\d]{2,},/g); var freePackages_3=freePackages_2.join(""); window.open("https://store.steampowered.com/account/licenses/?sub=" + freePackages_3,"_self"); } } }; document.getElementById("freepackages").onclick=function(){ activateConsole(); }; })(); } if (/https?:\/\/store\.steampowered\.com\/account\/licenses\/(\?sub\=[\w\W]{0,})?/.test(url2)) { (function() { var url = window.location.href; function redeemSub() { var subText2=document.getElementById("gameSub"); if(subText2 == null) { return; }else{ var subText1=document.getElementById("gameSub").value; var ownedPackages = {}; jQuery( '.account_table a' ).each( function( i, el ) { var match = el.href.match( /javascript:RemoveFreeLicense\( ([0-9]+), '/ ); if( match !== null ){ ownedPackages[ +match[ 1 ] ] = true; } } ); var freePackages =subText1.match(/[\d]{2,}/g); var i = 0, loaded = 0, packae = 0, total = freePackages.length, modal = ShowBlockingWaitDialog( 'Executing…', 'Please wait until all requests finish. Ignore all the errors, let it finish.' ); for( ; i < total; i++ ) { packae = freePackages[ i ]; if( ownedPackages[ packae ] ) { loaded++; continue; } jQuery.post( '//store.steampowered.com/checkout/addfreelicense', { action: 'add_to_cart', sessionid: g_sessionID, subid: packae } ).always( function( ) { loaded++; modal.Dismiss(); if( loaded >= total ) { window.open("https://store.steampowered.com/account/licenses/","_self"); } else { modal = ShowBlockingWaitDialog( 'Executing…', 'Loaded <b>' + loaded + '</b>/' + total + '.' ); } } ); } } } jQuery('.pageheader').parent().append('<div style="float: left;";>' + '<textarea class="registerkey_input_box_text" rows="1"' + 'name="product_key"' + ' id="gameSub" placeholder="输入SUB,多个SUB之间用英文逗号连接"' + 'value=""' + 'color:#fff;' + ' style="margin: 3px 0px 0px; width: 400px; height: 15px;background-color:#102634; padding: 6px 18px 6px 18px; font-weight:bold; color:#fff;"></textarea>' + '   ' + '</div>' + '<a tabindex="300" class="btnv6_blue_hoverfade btn_medium"' + ' style="width: 95px; height: 30px;"' + ' id="buttonSUB"><span>激活SUB</span></a>'); jQuery('#buttonSUB').click(function() { redeemSub(); }); document.getElementById("gameSub").value=url; var subText=document.getElementById("gameSub").value; if (/https?:\/\/store\.steampowered\.com\/account\/licenses\/\?sub\=([\d]{1,},){1,}/.test(subText)) { redeemSub(); }else{ document.getElementById("gameSub").value=""; } })(); } ///////-------------------steamdb.info代码此处结束-------------->>>>>>>////// }());