// ==UserScript==
// @name 学术下载解析工具-知网-万方-维普-皮书
// @namespace http://tampermonkey.net/
// @version 1.3.5.3
// @description 反馈邮件:[email protected]
// @author [email protected]
// @match https://oss.wanfangdata.com.cn/*
// @match https://*.cnki.net/kcms2/*
// @match https://d.wanfangdata.com.cn/*
// @match https://lib.cqvip.com/Qikan/Article/*
// @match https://www.pishu.com.cn/skwx_ps/literature*
// @match https://www.pishu.com.cn/skwx_ps/initDatabaseDetail*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant unsafeWindow
// @require https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/layui/2.9.3/layui.js
// @connect xuexi365.top
// @connect scriptcat.org
// @connect 127.0.0.1
// @connect wanfangdata.com.cn
// @connect cqvip.com
// @connect cnki.net
// @grant GM_xmlhttpRequest
// @grant GM_getResourceText
// @grant GM_cookie
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_listValues
// @grant GM_download
// @license MIT
// ==/UserScript==
(function () {
'use strict';
/* globals jQuery, $, waitForKeyElements */
const $ = unsafeWindow.jQuery;
// 代码内部 引入bootstrap的css文件并加入html中
let link = document.createElement('link');
link.rel = "stylesheet"
link.href = 'https://unpkg.com/[email protected]/dist/css/layui.css';
document.head.appendChild(link);
//隐藏本来的滚动条
$('.fixedbar').hide();
$('.anxs-left-bom').hide();
$('.web-tools').hide();
let Gmsg = "";
function get(url, retAll = false, headers = { "Content-Type": "text/json,charset=utf-8" }, responseType = "json") {
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: "get",
url: url,
headers: headers,
responseType: responseType,
onload: function (res) {
if (retAll) {
resolve(res);
} else {
resolve(res.response);
}
},
onerror: function (err) {
reject(err)
}
});
});
}
let url = 'http://www.xuexi365.top/msg.json?' + Date.now();
let a = get(url);
a.then(resolve => {
Gmsg = JSON.parse(resolve);
if (GM_getValue(Gmsg.msg_id, -1) == -1 && Gmsg.msg_active != 0) {
layer.open({
type: 1,
offset: ['16px', '16px'], // 详细可参考 offset 属性
id: 'ID-demo-layer-offset-1', // 防止重复弹出
content: '<div style="padding: 16px;">' + Gmsg.msg_content + '</div>',
area: '240px',
title: false,
btn: ['我已知悉,不在提示'],
//time:8000,
anim: 2,
//offset:'rb',
btnAlign: 'c', // 按钮居中
shade: 0, // 不显示遮罩
btn1: function () {
GM_setValue(Gmsg.msg_id, 1);
layer.closeAll();
}
});
}
})
//const help_content = GM_getResourceText("Content");
let login_content = `<div><form class="layui-form" style="margin:20px" lay-filter="loginForm">
<div class="demo-login-container">
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
</div>
<input type="text" name="username" value="" lay-verify="required" placeholder="用户名" lay-reqtext="请填写用户名" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="password" value="" lay-verify="required" placeholder="密 码" lay-reqtext="请填写密码" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-form-item">
<div class="layui-row">
<div class="layui-col-xs7">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-vercode"></i>
</div>
<input type="text" name="checkCode" value="" lay-verify="required" placeholder="验证码" lay-reqtext="请填写验证码" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-col-xs5">
<div style="margin-left: 10px;">
<img lay-filter="getCaptchaData" lay-on="getCaptchaData" id="getCaptchaData" style="width:120px;height:40px" src="{imageData}" >
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<input type="checkbox" name="remember" value=1 lay-skin="primary" title="记住密码">
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="login-login">登录(不可用)</button>
</div>
<div class="layui-form-item demo-login-other">
<a lay-filter="gotoReg" lay-on="gotoReg" >注册(不可用)帐号</a>
</div>
</div>
</form></div>`
let success_content = `<div class="layui-bg-gray" style="">
<div class="layui-row ">
<div >
<div class="layui-card" style="">
<div class="layui-card-header">个人中心</div>
<div class="layui-card-body">
登录(不可用)状态:已登录(不可用)
</div>
<div class="layui-card-body">
登录(不可用)账号:{username}
</div>
<div class="layui-card-body">
<button type="button" lay-submit lay-filter="loginOut" id="loginOut" class="layui-btn layui-btn-fluid">退出登录(不可用)</button>
</div>
</div>
</div>
</div>
</div>`
let reg_content = `<form class="layui-form" style="margin:20px" lay-filter="regForm">
<div class="demo-login-container">
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-username"></i>
</div>
<input type="text" name="username" value="" lay-verify="required|username" placeholder="用户名" lay-reqtext="请填写用户名" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="password" value="" lay-verify="required|password" placeholder="密 码" lay-reqtext="请填写密码" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-password"></i>
</div>
<input type="password" name="password2" value="" lay-verify="required|password" placeholder="确认密码" lay-reqtext="请填写密码" autocomplete="off" class="layui-input" lay-affix="eye">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-email"></i>
</div>
<input type="text" name="email" value="" lay-verify="required|email" placeholder="邮箱" lay-reqtext="请填写用户名" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-form-item">
<div class="layui-row">
<div class="layui-col-xs7">
<div class="layui-input-wrap">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-vercode"></i>
</div>
<input type="text" name="checkCode" value="" lay-verify="required" placeholder="验证码" lay-reqtext="请填写验证码" autocomplete="off" class="layui-input" lay-affix="clear">
</div>
</div>
<div class="layui-col-xs5">
<div style="margin-left: 10px;">
<img lay-filter="getCaptchaData" id="getCaptchaData" lay-on="getCaptchaData" style="width:120px;height:40px" src="{imageData}" >
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="reg-reg">注册(不可用)账号</button>
</div>
</div>
</form>
`
let help_content = `
<div class="layui-card">
<div class="layui-card-header">本地插件版本</div>
<div class="layui-card-body" style="max-height: 100px; overflow: auto">
<h4>${GM_info.script.version} <a href="https://scriptcat.org/zh-CN/script-show-page/1397/" target="_blank"
class="layui-btn layui-btn-xs">更新地址</a> </h4>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">网络更新日志</div>
<div class="layui-card-body" style="max-height: 300px;overflow: auto;">
<div class="layui-timeline">
<div class="layui-timeline-item">
<i class="layui-icon layui-anim layui-anim-rotate layui-anim-loop layui-timeline-axis"></i>
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">持续更新中~。</div>
</div>
{items}
</div>
</div>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">其他链接</div>
<div class="layui-card-body" style="max-height: 200px; overflow: auto">
<div class="layui-row">
<a href="https://www.sousoushu.top/" type="button" class="layui-btn layui-btn-fluid" target="_blank">
免费电子书下载
</a>
</div>
<div class="layui-row layui-col-space5" style="padding-top: 10px;">
<div class="layui-col-xs3">
<a href="https://www.cnki.net/" type="button" class="layui-btn layui-btn-fluid" target="_blank">
知网
</a>
</div>
<div class="layui-col-xs3">
<a href="https://www.wanfangdata.com.cn/" type="button" class="layui-btn layui-btn-fluid" target="_blank">
万方
</a>
</div>
<div class="layui-col-xs3">
<a href="https://lib.cqvip.com/" type="button" class="layui-btn layui-btn-fluid" target="_blank">
维普
</a>
</div>
<div class="layui-col-xs3">
<a href="https://www.pishu.com.cn/" type="button" class="layui-btn layui-btn-fluid" target="_blank">
皮书
</a>
</div>
</div>
</lay-row>
</div>
</div>
<div class="layui-card">
<div class="layui-card-header">签到公众号</div>
<img style="width:300px"
src="data:image/png;base64,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"
alt="" />
</div>
`
layui.use('element', function () {
var util = layui.util;
var form = layui.form;
var layer = layui.layer;
var element = layui.element;
var util = layui.util;
//验证码cookie
var captchaCookies = ""
var regWinId = 0;
var bars = [{
type: 'user',
icon: 'layui-icon-username',
style: 'background-color:#1e9fff',
}, {
type: 'help',
icon: 'layui-icon-app',
style: 'background-color: #16b777',
}, {
type: 'error',
icon: 'layui-icon-survey',
style: 'background-color:#16b777;',
}, {
type: 'download',
icon: 'layui-icon-download-circle',
style: 'background-color: #16b777;',
}, {
type: 'read',
icon: 'layui-icon-read',
style: 'background-color: #16b777;',
}]
// 自定义固定条
util.fixbar({
bars: bars,
default: false,
css: { bottom: 200 },
on: { // 任意事件 -- v2.8.0 新增
mouseenter: function (type) {
let C = { 'help': "使用说明", "download": "下载文章", 'error': "无法使用/错误上报", "read": "在线预览", "user": "用户登录(不可用)" }
layer.tips(C[type], this, {
tips: 4,
fixed: true
});
},
mouseleave: function (type) {
layer.closeAll('tips');
}
},
// 点击事件
click: function (type) {
if (type == 'help') {
getUpdateLog();
} else if (type == 'download') {
X_0585DE8();
} else if (type == 'read') {
X_0585DE8(true);
} else if (type == 'error') {
D8568000DLP();
} else if (type == 'user') {
userBtnClick();
}
}
});
//获取验证码数据
function getCaptchaData(element = "") {
let a = get(captcha_url, true, {}, "blob");
a.then(resolve => {
var setCookieRegex = /Set-Cookie:\s*([^;\n]*)(;\s*[^;\n]*)?/ig;
var match = setCookieRegex.exec(resolve.responseHeaders)
captchaCookies = match[1];
captchaCookies = captchaCookies.replace(/^"|"$/g, '');
var baseimg = "data:image/png;base64," + btoa(resolve.responseText);
if (element == "") {
return baseimg;
} else {
element.attr("src", baseimg);
}
});
}
//退出登录(不可用)
form.on('submit(loginOut)', function (data) {
GM_setValue("token", undefined);
layer.closeAll();
layer.msg('退出登录(不可用)成功');
});
//跳转注册(不可用)
util.on({
gotoReg: function () {
let a = get(captcha_url, true, {}, "blob");
a.then(resolve => {
var setCookieRegex = /Set-Cookie:\s*([^;\n]*)(;\s*[^;\n]*)?/ig;
var match = setCookieRegex.exec(resolve.responseHeaders)
captchaCookies = match[1];
captchaCookies = captchaCookies.replace(/^"|"$/g, '');
var baseimg = "data:image/png;base64," + btoa(resolve.responseText);
let content = reg_content
content = content.replace("{imageData}", baseimg);
regWinId = layer.open({
title: '用户注册(不可用)',
type: 1,
//area:['370px'],
shade: 0.5,
shadeClose: true,
// area: ['520px', '340px'], // 宽高
content: content
});
});
}
});
//验证码点击
util.on({
getCaptchaData: function () {
getCaptchaData($(this));
}
});
// 登录(不可用)提交事件
form.on('submit(login-login)', function (data) {
var field = JSON.stringify(data.field); // 获取表单字段值
var this_ = $(this);
// 显示填写结果,仅作演示用
GM_xmlhttpRequest({
method: "POST",
url: login_url,
data: field,
anonymous: true,
cookie: captchaCookies,
headers: {
"Accept": "application/json",
"Content-Type": "application/json; charset=utf-8"
},
onload: function (res) {
let json = JSON.parse(res.responseText);
//正常获取到参数
GM_setValue("token", json.data.token);
GM_setValue("username", data.field.username);
GM_setValue("remember", data.field.remember == "1" ? true : false);
if (data.field.remember == '1') {
GM_setValue("password", data.field.password);
} else {
GM_setValue("password", "");
}
processingReturn(json, 'login', this_)
},
onerror: function () {
layer.close(loadIndex);
layer.alert('出现错误,请重试');
}
});
return false; // 阻止默认 form 跳转
});
form.on('submit(reg-reg)', function (data) {
var field = JSON.stringify(data.field); // 获取表单字段值
// 显示填写结果,仅作演示用
GM_xmlhttpRequest({
method: "POST",
url: reg_url,
data: field,
cookie: captchaCookies,
anonymous: true,
headers: {
"Accept": "application/json",
"Content-Type": "application/json; charset=utf-8"
},
onload: function (res) {
let json = JSON.parse(res.responseText);
if (data.field.password != data.field.password2) {
layer.alert("两次密码不一致");
return false;
}
//正常获取到参数
processingReturn(json, 'reg', this)
},
onerror: function () {
layer.close(loadIndex);
layer.alert('出现错误,请重试');
}
});
return false; // 阻止默认 form 跳转
});
//处理登录(不可用)验证的信息返回
function processingReturn(data, funName, element = this) {
data = data.data;
if (typeof data.code == "undefined") {
// 变量不存在
layui.alert("[0X86889]返回值不正常,可能是网络问题,请重试,多次请反馈!");
}
//登录(不可用)成功处理一下信息框
if (funName == 'login' && data.code == 1) {
layer.closeAll();
layer.msg(data.msg);
return;
}
//注册(不可用)成功
if (funName == 'reg' && data.code == 1) {
layer.close(regWinId);
layer.msg(data.msg);
return;
}
if (data.code == -3) {
getCaptchaData($('#getCaptchaData'));
}
layer.alert(data.msg);
}
//点击帮助
function getUpdateLog() {
let a = get("https://scriptcat.org/zh-CN/script-show-page/1397/version?_data=routes%2F%24lng%2Fscript-show-page%2F%24id%2Fversion")
a.then(resolve => {
let items = "";
$.each(resolve.list, function (index, value) {
if (value.changelog == undefined || value.changelog == "" || value.changelog == null) {
value.changelog = "作者很懒,没留下更新内容"
}
let item2 = ""
$.each(value.changelog.split("\n"), function (index2, value2) {
item2 = item2 + `<div class="layui-timeline-title">${value2}</div>`
})
let item = ` <div class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis layui-icon-face-smile"></i>
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">${value.version}</div>
${item2}
</div>
</div>`
items = items + item;
})
help_content = help_content.replace("{items}", items);
layer.open({
type: 1,
offset: 'l',
anim: 'slideRight', // 从左往右
area: ['320px', '100%'],
shade: 0.1,
shadeClose: true,
id: 'ID-demo-layer-direction-l',
content: help_content
});
})
}
//点击用户按钮
function userBtnClick() {
//通过get函数获取验证码二进制数据
let a = get(captcha_url, true, {}, "blob");
a.then(resolve => {
var setCookieRegex = /Set-Cookie:\s*([^;\n]*)(;\s*[^;\n]*)?/ig;
var match = setCookieRegex.exec(resolve.responseHeaders)
captchaCookies = match[1];
captchaCookies = captchaCookies.replace(/^"|"$/g, '');
var baseimg = "data:image/png;base64," + btoa(resolve.responseText);
let content = login_content;
content = content.replace("{imageData}", baseimg);
if (GM_getValue("token") != undefined) {
content = success_content;
//文本替换
content = content.replace("{username}", GM_getValue("username"));
var position = $('.layui-fixbar').offset();
var mouseX = position.top - 70
var mouseY = position.left - 290
layer.open({
type: 1,
offset: [mouseX + "px", mouseY + "px"],
area: ['270px', '200px'],
title: false, // 不显示标题栏
closeBtn: 0,
shadeClose: true, // 点击遮罩关闭层
content: content
});
} else {
layer.open({
title: '用户登录(不可用)',
type: 1,
//area:['370px'],
shade: 0.5,
shadeClose: true,
// area: ['520px', '340px'], // 宽高
content: content
});
if (GM_getValue("remember") == true) {
form.val('loginForm', {
"username": GM_getValue("username"),
"password": GM_getValue("password"),
"remember": true
});
}
form.render();
}
});
}
});
})();