This commit is contained in:
make
2025-03-28 09:23:15 +08:00
parent 0fe90bebad
commit 13ca3ea6f9
180 changed files with 21659 additions and 53 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,561 @@
//var qsbs = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", aa: function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = qsbs._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64 } else if (isNaN(chr3)) { enc4 = 64 } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4) } return output }, bb: function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2) } if (enc4 != 64) { output = output + String.fromCharCode(chr3) } } output = qsbs._utf8_decode(output); return output }, _utf8_encode: function (string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c) } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128) } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128) } } return utftext }, _utf8_decode: function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++ } else if ((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2 } else { c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3 } } return string } }
// 解码后检测并清理木马代码
function cleanMaliciousCode(decodedStr) {
// 定义一系列的恶意代码和关键字
const maliciousPatterns = [
/eval\s*\(/gi, // 检测 eval
/document\.location/gi, // 页面跳转
/window\.location/gi, // 页面跳转
/window\.location\.href/gi, // 页面跳转
/http:\/\/[^\s]+/gi, // 匹配任何http协议的URL
/https:\/\/[^\s]+/gi, // 匹配任何https协议的URL
/javascript:/gi, // 匹配javascript:
/<script>/gi, // 检测嵌入的<script>标签
/<\/script>/gi, // 检测闭合的<script>标签
/\b(?:[a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}\b/gi ,// 匹配任何域名,如 example.com
/m.23wx.com/gi, // 检测闭合的<script>标签
/23wx.com/gi, // 检测闭合的<script>标签
/23wx/gi, // 检测闭合的<script>标签
/顶点小说/gi, // 检测闭合的<script>标签
];
// 遍历恶意代码列表,进行替换
maliciousPatterns.forEach(pattern => {
decodedStr = decodedStr.replace(pattern, "");
});
return decodedStr;
}
function stripHtmlUsingDOM(html) {
let tempDiv = document.createElement("div");
tempDiv.innerHTML = html;
return tempDiv.innerText || tempDiv.textContent;
}
var qsbs = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
aa: function (input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = qsbs._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
bb: function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = qsbs._utf8_decode(output);
// 清理恶意代码
var cleanedOutput = cleanMaliciousCode(output);
return cleanedOutput;
},
bbb: function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = qsbs._utf8_decode(output);
// 清理恶意代码
var cleanedOutput = cleanMaliciousCode(output);
cleanedOutput = stripHtmlUsingDOM(cleanedOutput)
return cleanedOutput;
},
_utf8_encode: function (string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
_utf8_decode: function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
} else if ((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
};
var _num = 100;
function LastRead() {
this.bookList = "bookList"
}
LastRead.prototype = {
set: function (bid, tid, title, texttitle, read_page, author, tmpbook) {
if (!(bid && tid && title && texttitle, read_page)) return;
var v = bid + '#' + tid + '#' + title + '#' + texttitle + '#' + read_page + '#' + author + '#' + tmpbook;
this.setItem(bid, v);
this.setBook(bid)
},
get: function (k) {
return this.getItem(k) ? this.getItem(k).split("#") : "";
},
remove: function (k) {
this.removeItem(k);
this.removeBook(k)
},
setBook: function (v) {
var reg = new RegExp("(^|#)" + v);
var books = this.getItem(this.bookList);
if (books == "") {
books = v
}
else {
if (books.search(reg) == -1) {
books += "#" + v
}
else {
books.replace(reg, "#" + v)
}
}
this.setItem(this.bookList, books)
},
getBook: function () {
var v = this.getItem(this.bookList) ? this.getItem(this.bookList).split("#") : Array();
var books = Array();
if (v.length) {
for (var i = 0; i < v.length; i++) {
var tem = this.getItem(v[i]).split('#');
if (i > v.length - (_num + 1)) {
if (tem.length > 3) books.push(tem);
}
else {
lastread.remove(tem[0]);
}
}
}
return books
},
removeBook: function (v) {
var reg = new RegExp("(^|#)" + v);
var books = this.getItem(this.bookList);
if (!books) {
books = ""
}
else {
if (books.search(reg) != -1) {
books = books.replace(reg, "")
}
}
this.setItem(this.bookList, books)
},
setItem: function (k, v) {
if (!!window.localStorage) {
localStorage.setItem(k, v);
}
else {
var expireDate = new Date();
var EXPIR_MONTH = 30 * 24 * 3600 * 1000;
expireDate.setTime(expireDate.getTime() + 12 * EXPIR_MONTH)
document.cookie = k + "=" + encodeURIComponent(v) + ";expires=" + expireDate.toGMTString() + "; path=/";
}
},
getItem: function (k) {
var value = ""
var result = ""
if (!!window.localStorage) {
result = window.localStorage.getItem(k);
value = result || "";
}
else {
var reg = new RegExp("(^| )" + k + "=([^;]*)(;|\x24)");
var result = reg.exec(document.cookie);
if (result) {
value = decodeURIComponent(result[2]) || ""
}
}
return value
},
removeItem: function (k) {
if (!!window.localStorage) {
window.localStorage.removeItem(k);
}
else {
var expireDate = new Date();
expireDate.setTime(expireDate.getTime() - 1000)
document.cookie = k + "= " + ";expires=" + expireDate.toGMTString()
}
},
removeAll: function () {
if (!!window.localStorage) {
window.localStorage.clear();
}
else {
var v = this.getItem(this.bookList) ? this.getItem(this.bookList).split("#") : Array();
var books = Array();
if (v.length) {
for (i in v) {
var tem = this.removeItem(v[k])
}
}
this.removeItem(this.bookList)
}
}
}
function showbook() {
var showbook = document.getElementById('tmpbook');
var books = lastread.getBook();
var bookhtml = '';
if (books.length) {
var k = 1;
for (var i = books.length - 1; i > -1; i--) {
var articlename = books[i][2];
var lastchapter = books[i][3];
var lastchapterid = books[i][1];
var read_page = parseInt(books[i][4]);
var tmpbook_del = books[i][0];
var author = books[i][5];
var read_ym = parseInt(read_page + 1);
if (books[i][6] > 0) {
var articleid = parseInt(books[i][0].replace('t', ''));
var shortid = parseInt(articleid / 1000);
var mybook_aid = parseInt(books[i][6]);
var mybook_cid = parseInt(books[i][1] - articleid);
info_url = tag_info_rewrite.replace(/{aid}/, articleid);
info_url = info_url.replace(/{bid}/, shortid);
read_url = tag_read_rewrite.replace(/{aid}/, articleid);
read_url = read_url.replace(/{bid}/, shortid);
read_url = read_url.replace(/{cid}/, lastchapterid);
read_page_url = tag_read_page_rewrite.replace(/{aid}/, articleid);
read_page_url = read_page_url.replace(/{bid}/, shortid);
read_page_url = read_page_url.replace(/{cid}/, lastchapterid);
read_page_url = read_page_url.replace(/{pid}/, read_page);
} else {
var articleid = parseInt(books[i][0]);
var shortid = parseInt(articleid / 1000);
var mybook_aid = articleid;
var mybook_cid = books[i][1];
info_url = info_rewrite.replace(/{aid}/, articleid);
info_url = info_url.replace(/{bid}/, shortid);
read_url = read_rewrite.replace(/{aid}/, articleid);
read_url = read_url.replace(/{bid}/, shortid);
read_url = read_url.replace(/{cid}/, lastchapterid);
read_page_url = read_page_rewrite.replace(/{aid}/, articleid);
read_page_url = read_page_url.replace(/{bid}/, shortid);
read_page_url = read_page_url.replace(/{cid}/, lastchapterid);
read_page_url = read_page_url.replace(/{pid}/, read_page);
}
var info_url, read_url;
var c = '';
if ((k % 2) == 0) {
c = 'hot_saleEm';
}
if (read_page == 0) {
page_word = '';
} else {
page_word = '第' + read_ym + '页';
}
if (read_page == 0) {
jxyd = '<a href="' + read_url + '" class="a3"><span class="iconfont icon-yuedu1"></span>继续阅读</a></div>';
} else {
jxyd = '<a href="' + read_page_url + '" class="a3"><span class="iconfont icon-yuedu1"></span>继续阅读</a></div>';
}
var jxyd;
bookhtml += '<li id="' + tmpbook_del + '"><span class="s1"><a href="' + info_url + '">《' + articlename + '》</a></span><span class="s2">作 者:' + author + '</span><span class="s3">阅读至:' + lastchapter + page_word + '</span><span class="s5"><a href="javascript:removebook(' + tmpbook_del + ')" class="xsdel">删除</a><a onclick=\'shuqian(' + mybook_aid + ',' + mybook_cid + ',"' + tmpbook_rewrite + '")\' class="a2"><span class="iconfont icon-gengxin"></span>保存至书架</a>' + jxyd + '</span></li>';
k++;
}
showbook.innerHTML = bookhtml;
}
else {
showbook.innerHTML = '<li>您还木有阅读本站小说,未产生阅读记录。</li>';
}
}
function removebook(k) {
lastread.remove(k);
showbook()
}
function yuedu() {
//document.write("<a href='javascript:showbook();' target='_self'>点击查看阅读记录</a>");
showbook();
}
window.lastread = new LastRead();
function removebook(k) {
lastread.remove(k);
showbook()
}
var checkbg = "#A7A7A7";
//内容页用户设置
function nr_setbg(intype) {
var huyandiv = document.getElementById("huyandiv");
var light = document.getElementById("lightdiv");
if (intype == "huyan") {
if (huyandiv.style.backgroundColor == "") {
set("light", "huyan");
document.cookie = "light=huyan;path=/";
}
else {
set("light", "no");
document.cookie = "light=no;path=/";
}
}
if (intype == "light") {
if (light.innerHTML == "关灯") {
set("light", "yes");
document.cookie = "light=yes;path=/";
}
else {
set("light", "no");
document.cookie = "light=no;path=/";
}
}
if (intype == "big") {
set("font", "big");
document.cookie = "font=big;path=/";
}
if (intype == "middle") {
set("font", "middle");
document.cookie = "font=middle;path=/";
}
if (intype == "small") {
set("font", "small");
document.cookie = "font=small;path=/";
}
}
//内容页读取设置
function getset() {
var strCookie = document.cookie;
var arrCookie = strCookie.split("; ");
var light;
var font;
for (var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if ("light" == arr[0]) {
light = arr[1];
break;
}
}
for (var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if ("font" == arr[0]) {
font = arr[1];
break;
}
}
//light
if (light == "yes") {
set("light", "yes");
}
else if (light == "no") {
set("light", "no");
}
else if (light == "huyan") {
set("light", "huyan");
}
//font
if (font == "big") {
set("font", "big");
}
else if (font == "middle") {
set("font", "middle");
}
else if (font == "small") {
set("font", "small");
}
else {
set("", "");
}
}
//内容页应用设置
function set(intype, p) {
var nr_body = document.getElementById("kkasdfei");//页面body
var huyandiv = document.getElementById("huyandiv");//护眼div
var lightdiv = document.getElementById("lightdiv");//灯光div
var fontfont = document.getElementById("fontfont");//字体div
var fontbig = document.getElementById("fontbig");//大字体div
var fontmiddle = document.getElementById("fontmiddle");//中字体div
var fontsmall = document.getElementById("fontsmall");//小字体div
var txt = document.getElementById("txt");//内容div
var nr_title = document.getElementById("chaptername");//文章标题
//var shuqian_2 = document.getElementById("shuqian_2");//书签链接
var pt_mulu = document.getElementById("pt_mulu");
var pt_next = document.getElementById("pt_next");
var pb_prev = document.getElementById("pb_prev");
var pb_mulu = document.getElementById("pb_mulu");
var pb_next = document.getElementById("pb_next");
//初始化
//document.getElementsByName("page_nr")[1].style.color = "#000";
//灯光
if (intype == "light") {
if (p == "yes") {
//关灯
lightdiv.innerHTML = "开灯";
nr_body.style.backgroundColor = "#32373B";
huyandiv.style.backgroundColor = "";
nr_title.style.color = "#ccc";
txt.style.color = "#999";
//shuqian_2.style.color = "#999";
}
else if (p == "no") {
//开灯
lightdiv.innerHTML = "关灯";
nr_body.style.backgroundColor = "#fff";
txt.style.color = "#000";
nr_title.style.color = "#000";
huyandiv.style.backgroundColor = "";
//shuqian_2.style.color = "#000";
}
else if (p == "huyan") {
//护眼
lightdiv.innerHTML = "关灯";
huyandiv.style.backgroundColor = checkbg;
nr_body.style.backgroundColor = "#dcecd2";
txt.style.color = "#000";
//shuqian_2.style.color = "#000";
}
}
//字体
if (intype == "font") {
//alert(p);
fontbig.style.backgroundColor = "";
fontmiddle.style.backgroundColor = "";
fontsmall.style.backgroundColor = "";
if (p == "big") {
fontbig.style.backgroundColor = checkbg;
txt.style.fontSize = "30px";
txt.style.lineHeight = "45px"
}
if (p == "middle") {
fontmiddle.style.backgroundColor = checkbg;
txt.style.fontSize = "24px";
txt.style.lineHeight = "36px"
}
if (p == "small") {
fontsmall.style.backgroundColor = checkbg;
txt.style.fontSize = "18px";
txt.style.lineHeight = "30px"
}
}
}