// ==UserScript==
// @name 【龙笑天下】博客网站留言评论信息自动填充
// @namespace https://www.ilxtx.com/automatically-fill-in-personal-information.html
// @version 2.1.3
// @description 博客网站留言评论自动填写个人信息方法
// @author 龙笑天
// @namespace https://greasyfork.org/zh-CN/users/831228
// @homepage https://greasyfork.org/zh-CN/scripts/434862
// @include http://*/*
// @include https://*/*
// @exclude *://*/wp-admin/*
// @exclude *://*/admin/*
// @exclude *://*.aliyun.com/*
// @exclude *://myssl.com*
// @exclude *://*.alipay.com/*
// @exclude *://*.taobao.com/*
// @exclude *://*.alimama.com/*
// @exclude *://*.tmall.com/*
// @exclude *://*.qq.com/*
// @exclude *://*.tencent.com/*
// @exclude *://*.qcloud.com/*
// @exclude *://*.tenpay.com/*
// @exclude *://*.baidu.com/*
// @exclude *://*.iqiyi.com/*
// @exclude *://*.jd.com/*
// @exclude *://*.meituan.com/*
// @exclude *://*.cloudflare.com/*
// @exclude *://*.yundun.com/*
// @exclude *://github.com/*
// @exclude *://weibo.com/*
// @exclude *://*.sina.com.cn/*
// @exclude *://*.youku.com/*
// @exclude *://*.bilibili.com/*
// @exclude *://*.acfun.cn/*
// @exclude *://douban.com/*
// @exclude *://*.jd.com/*
// @exclude *://*.huya.com/*
// @exclude *://*.douyin.com/*
// @exclude *://*.douyu.com/*
// @exclude *://*.sohu.com/*
// @exclude *://*.letv.com/*
// @exclude *://*.toutiao.com/*
// @exclude *://*.ixigua.com/*
// @exclude *://*.kafan.cn/*
// @exclude *://*.163.com/*
// @exclude *://*.126.com/*
// @exclude *://*.hupu.com/*
// @exclude *://*.qidian.com/*
// @exclude *://*.mi.com/*
// @exclude *://*.360.cn/*
// @exclude *://*.icbc.com.cn/*
// @exclude *://*.ccb.com/*
// @exclude *://*.abchina.com/*
// @exclude *://*.cmbchina.com/*
// @exclude *://*.boc.cn/*
// @exclude *://*.bankcomm.com/*
// @exclude *://*.psbc.com/*
// @exclude *://*.pingan.com/*
// @exclude *://*.citicbank.com/*
// @exclude *://*.cib.com.cn/*
// @exclude *://*.spdb.com.cn/*
// @exclude *://*.cebbank.com/*
// @exclude *://*.cmbc.com.cn/*
// @exclude *://*.cgbchina.com.cn/*
// @exclude *://*.unionpay.com/*
// @exclude *://*.chinalife.com.cn/*
// @exclude *://*.citi.com/*
// @exclude *://*.hsbc.com/*
// @exclude *://*.sc.com/*
// @exclude *://*.google.com/*
// @exclude *://*.google.hk/*
// @exclude *://*.google.cn/*
// @exclude *://*.apple.com/*
// @exclude *://*.youtube.com/*
// @exclude *://*.facebook.com/*
// @exclude *://twitter.com/*
// @exclude *://*.qianxin.com/*
// @exclude *://*.mail-tester.com/*
// @exclude *://*.openai.com/*
// @exclude *://*.godaddy.com/*
// @exclude *://*.lowendtalk.com/*
// @exclude *://*.racknerd.com/*
// @exclude *://*.colocrossing.com/*
// @exclude *://*.namecheap.com/*
// @exclude *://*.namesilo.com/*
// @exclude *://*.expireddomains.net/*
// @exclude *://*.mailu.io/*
// @exclude *://*.amazon.cn/*
// @exclude *://*.amazon.com/*
// @exclude *://*.qiniu.com/*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAADAFBMVEX///////98f4EveJQEdKAAcakAcacAc6J7f4F/f4BtfYMnd5YDc6ENdJ43eJNRe4tLeo5wfoMzeJMAcqMcdppdfIhffIhce4knd5cbdppHeo4fdpoFc6JBeZAAc6MAcqUAc6QEc6IgdppvfoMTdZ1Jeo0Gc6EAcqQBdKFKeo0UdZ2Ef35vfYMcdZwfdZoAc6EAdKEAdKIZdZsZdZwHc6F+f38WdJ0cdZoCdKELdJ9Ve4t4foESdJ4ddpp7foAyeJQZdZoAcaQAc6UBc6JgfId/f3+Df355f4BGeo98foCJf31ufoNYe4lhfIcJc6EOdZ0PdJ4/eZAgdpk9eZEid5gNdZ4MdZ4QdZ4md5cld5cCdKBUe4qCf34YdZt9f4BmfYY0d5Qhdpgud5Y+eZAddpkBc6FnfYVofYZXe4pufYOGgH1jfYdwfYOEgH6FgH5rfYQAdKABc6Ard5U6eZFefIgud5QMdJ5Meo0DdKABc6NHeY58f4AfdpkCc6FpfYUGdJ8Fc6Bce4gRc6A3eJIBcqUod5Z7f4ABdKAedplGeo5Ieo1ifYcxeJMmdpkAcKlQe4xbe4gAcaUHc593f4GBgH9mfIYEc6EEc6AAc6AAcqIDc6B3foIAcagAcaZTe4sVdZsyeJMCc6ILdJ4weJRIeo54f4EkdpcWdZt9fn89eZAcdpmBf39ReotofYVlfIZtfYQCc6B9f38veJVAeo9Se4tbe4kXdZt9foAgdpiAf34DdJ8wd5ROe4xgfIgBcqNRe4wFc6FLeo02eJMLdJ18f39Neowmd5YPdJ0AcqFcfIg/eZFAeZBbfIhAeY9vfYQmdpcfdpgYdptFeo8IdJ8cdZkFdKBrfYU4eJIDc6IVdJ0bdZtMe40XdpsUdZxZfIoKdJ8edppbfIkud5UCc6NVfIqOgHtUe4sAcqZae4kueJVWe4pPeowpd5aCgH8AAAIBAQAOAABicRgZ9oD//gAAdOkAAAAAAAL2aAAAABkAAAAAABgAgAAAAAAAAAAAAAAAAACw+0DzAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIzSURBVHjafVO/ixNBFP6KvUxzqSaNXJjNHUdmsZlZED1BQd1eRfyBC1cE3D5pQg4MBlH2KmEtEhMSjlwjXJVKDotDuEJbEcE7FIsr/DecN7Orq0Qfy/DtezPfe/O9eUDJvJUKY5UVD8tttVqg6uqSMK+V/87xv8JrdToo/IYxXxDV+kY5Xt8EmpIFuTHZBM43f8cJShVozXQYmkUHShrXhSJeu4hL0guY3gp0QB/T7LLxX7lalI9r19UNocOGYMYaQqvIBqK8fuDmrdu4IwLcrd67/wAPmYpdSNh12/20WFzkZCpxwObIsS+0lswy8nankIEcXSjLEynd2yH0eCfRqk/oCQbAU+CZKyUNU76bo7al8Gl5AWQvXWKt1ZDQSKlX44kBFWCKmdHIFrvHO2FK+uART3UyB/YzYtfmMuw1+WUaJuLA3i4JY7NVcMpCGxKryFxpx4BEabUwtRhmaVP0pMuRqpHdsCs6bB9VJikFFRmP31jmPj+ELV++NTEZZ1SkueZRklgKFXO0MkLvOrRhcmT5ujhmW/bcHvMwchryAd5/YMckFOkoY9Ul96wFuZgTyp5DTKSTGjUMVepS45DHPO8w7w9xULRb5swYqIR9tOgT1ZV7DalcfC4a0mauj0aEL8WTO8Ept438ahriWt3yT3FSKz9a/5tZxm16tN9tOc5devYk91nPPPr4zPo26+XB2FinNZ4JMzjyh9Vq7b+jt82XTGf0a2S96B/zjalvbPqH6yfbenh4ag/oaAAAAABJRU5ErkJggg==
// @run-at document-end
// @grant unsafeWindow
// @license MIT
// ==/UserScript==
(function() {
'use strict';
/////////// 评论信息配置 ///////////
// 您的昵称
var dr_gm_comment_author_name = '您的昵称';
// 您的邮箱
var dr_gm_comment_author_email = '您的邮箱';
// 您的网址
var dr_gm_comment_author_url = '您的网址';
/////////// 评论信息配置 ///////////
// 开启debug true/false
var dr_gm_debug = false;
// 评论信息缺失不执行
if ( dr_gm_comment_author_name==='' || dr_gm_comment_author_email==='' ) { return; }
// 只能在顶层窗口中执行
if ( window.top !== window.self ) { return; }
// 开始执行
setTimeout(dr_init, 1500);
// 填充评论框
function dr_js_autofill_commentinfos() {
var lauthor = ["input#author","input[name='comname']","input#inpName","input[name='author']","input#ds-dialog-name","input#name","input[name='name']","input[name='nick']","input#comment_author", ".comment-form input[placeholder='昵称(必填)']","input.atk-name"],
lmail =["input#mail","input#email","input[name='commail']","input#inpEmail","input[name='email']","input#ds-dialog-email","input[name='mail']","input#comment_email", ".comment-form input[type='email']","input.atk-email"],
lurl =["input#url","input[name='comurl']","input#inpHomePage","input#ds-dialog-url","input[name='url']","input[name='website']","input#website","input[name='link']","input#comment_url", ".comment-form input[type='url']","input.atk-link"];
for (var i = 0; i < lauthor.length; i++) {
var author = document.querySelector(lauthor[i]);
if (author != null) {
author.value = dr_gm_comment_author_name;
author.dispatchEvent(new Event('input'));
author.dispatchEvent(new Event('change'));
break;
}
}
for (var j = 0; j < lmail.length; j++) {
var mail = document.querySelector(lmail[j]);
if (mail != null) {
mail.value = dr_gm_comment_author_email;
mail.dispatchEvent(new Event('input'));
mail.dispatchEvent(new Event('change'));
break;
}
}
for (var k = 0; k < lurl.length; k++) {
var url = document.querySelector(lurl[k]);
if (url != null) {
url.value = dr_gm_comment_author_url;
url.dispatchEvent(new Event('input'));
url.dispatchEvent(new Event('change'));
break;
}
}
return ! 1;
}
// init
function dr_init(){
var filled = false;
var obj = dr_get_type();
if ( dr_gm_debug ) {
console.log( '【龙笑天下】GM脚本填充评论信息:', obj );
}
if( obj && obj.fill ){
dr_js_autofill_commentinfos();
filled = true;
}
console.log( '【龙笑天下】GM脚本填充评论信息'+( filled?'成功':'失败' )+':', obj.type );
}
// 判断评论程序类型
function dr_get_type(){
var obj = null;
obj = dr_is_wordpress();
if( obj ){
return obj;
}
obj = dr_is_twikoojs();
if( obj ){
return obj;
}
obj = dr_is_artalkjs();
if( obj ){
return obj;
}
obj = dr_is_valinejs();
if( obj ){
return obj;
}
obj = dr_is_typecho();
if( obj ){
return obj;
}
obj = dr_is_zblog();
if( obj ){
return obj;
}
obj = dr_is_emlog();
if( obj ){
return obj;
}
return false;
}
// 检测评论程序
// wordpress
function dr_is_wordpress(){
var ck_class = false,
ck_meta = null,
ck_resources = null,
ck_includes = null,
ck_api = null;
// 检查body上的class
var ck_body_obj = document.body;
if( !ck_body_obj.classList.contains('logged-in') && ( ck_body_obj.classList.contains('wp-singular') || ck_body_obj.classList.contains('single') || ck_body_obj.classList.contains('page') ) ){
ck_class = true;
}
// 检查meta生成器标签
ck_meta = document.querySelector('meta[name="generator"][content*="WordPress"]');
// 检测路径的资源引用
ck_resources = document.querySelectorAll(`
link[href*="/wp-content/"],
script[src*="/wp-content/"],
img[src*="/wp-content/"],
style[src*="/wp-content/"]
`);
// 检测路径的资源引用
ck_includes = document.querySelectorAll(`
script[src*="/wp-includes/"],
link[href*="/wp-includes/"]
`);
// 检测WordPress REST API
ck_api = document.querySelector('link[href*="/wp-json/"]');
// 综合判断
var ret = ck_meta!== null ||
ck_resources.length>0 ||
ck_includes.length>0 ||
ck_api!== null;
if( dr_gm_debug ){
console.log( '===== wordpress begin =====' );
console.log( 'ck_class:', ck_class );
console.log( 'ck_meta:', ck_meta );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_includes:', ck_includes );
console.log( 'ck_api:', ck_api );
console.log( 'ret:', ret );
console.log( '===== wordpress end =====' );
}
// 返回
if ( ret ) {
return {type:'wordpress', fill:ck_class&&ret};
}
return false;
}
// typecho
function dr_is_typecho(){
// 检查meta生成器标签
const ck_meta = document.querySelector('meta[name="generator"][content*="Typecho"]');
// 检测路径的资源引用
var ck_resources = document.querySelectorAll(`
link[href*="/usr/themes/"],
link[href*="/usr/plugins/"],
script[src*="/usr/themes/"],
script[src*="/usr/plugins/"]
`);
// 检查特有的全局变量
const ck_var = typeof window.Typecho !== 'undefined';
// 综合判断
var ret = ck_meta !== null ||
ck_resources.length > 0 ||
ck_var;
if( dr_gm_debug ){
console.log( '===== typecho begin =====' );
console.log( 'ck_meta:', ck_meta );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_var:', ck_var );
console.log( 'ret:', ret );
console.log( '===== typecho end =====' );
}
// 返回
if ( ret ) {
return {type:'typecho', fill:ret};
}
return false;
}
// ZBlog
function dr_is_zblog() {
// 检查meta生成器标签
const ck_meta = document.querySelector('meta[name="generator"][content*="Z-Blog"]');
// 检测路径的资源引用
var ck_resources = document.querySelectorAll(`
link[href*="/zb_users/"],
link[href*="/zb_system/"],
script[src*="/zb_users/"],
script[src*="/zb_system/"]
`);
// 检查全局变量
const ck_var = typeof window.ZBlog !== 'undefined';
// 综合判断
var ret = ck_meta !== null ||
ck_resources.length > 0 ||
ck_var;
if( dr_gm_debug ){
console.log( '===== zblog begin =====' );
console.log( 'ck_meta:', ck_meta );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_var:', ck_var );
console.log( 'ret:', ret );
console.log( '===== zblog end =====' );
}
// 返回
if ( ret ) {
return {type:'zblog', fill:ret};
}
return false;
}
// Emlog
function dr_is_emlog() {
// 检查meta生成器标签
const ck_meta = document.querySelector('meta[name="generator"][content*="Emlog"]');
// 检测路径的资源引用
var ck_resources = document.querySelectorAll(`
link[href*="/content/templates/"],
link[href*="/content/plugins/"],
script[src*="/content/templates/"]
`);
// 4. 检查特有的全局变量
const ck_var = typeof window.emlog !== 'undefined';
// 综合判断
var ret = ck_meta !== null ||
ck_resources.length > 0 ||
ck_var;
if( dr_gm_debug ){
console.log( '===== emlog begin =====' );
console.log( 'ck_meta:', ck_meta );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_var:', ck_var );
console.log( 'ret:', ret );
console.log( '===== emlog end =====' );
}
// 返回
if ( ret ) {
return {type:'emlog', fill:ret};
}
return false;
}
// twikoo.js
function dr_is_twikoojs() {
// 检测路径的资源引用
var ck_resources = document.querySelectorAll(`
script[src*="twikoo.min.js"],
script[src*="twikoo.js"],
script[src*="twikoo.all.min.js"],
script[src*="twikoo.all.js"],
script[src*="jsdelivr.net/npm/twikoo/"],
script[src*="unpkg.com/twikoo"],
script[src*="staticfile.org/twikoo/"]
`);
// 检测容器元素
const ck_container = document.querySelector('#twikoo-wrap');
// 检测全局对象
const ck_var = typeof window.twikoo !== 'undefined';
// 综合判断
var ret = ck_resources.length > 0 ||
ck_container!==null ||
ck_var;
if( dr_gm_debug ){
console.log( '===== twikoo.js begin =====' );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_container:', ck_container );
console.log( 'ck_var:', ck_var );
console.log( 'ret:', ret );
console.log( '===== twikoo.js end =====' );
}
// 返回
if ( ret ) {
return {type:'twikoo.js', fill:ret};
}
return false;
}
// artalk.js
function dr_is_artalkjs() {
// 检测script标签引用
const ck_resources = Array.from(document.scripts).some(script => {
return script.src.includes('artalk.js') ||
script.src.includes('artalk.min.js') ||
script.src.includes('artalk/dist/') ||
script.src.includes('jsdelivr.net/npm/artalk');
});
// 检测容器元素
const ck_container = document.querySelector('#artalk-wrap');
// 检测全局对象
const ck_var = typeof window.Artalk !== 'undefined';
// 检测初始化代码特征
const ck_initcode = document.documentElement.innerHTML.includes('Artalk.init({');
// 综合判断
var ret = ck_resources ||
ck_container !== null ||
ck_var ||
ck_initcode;
if( dr_gm_debug ){
console.log( '===== artalk.js begin =====' );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_container:', ck_container );
console.log( 'ck_var:', ck_var );
console.log( 'ck_initcode:', ck_initcode );
console.log( 'ret:', ret );
console.log( '===== artalk.js end =====' );
}
// 返回
if ( ret ) {
return {type:'artalk.js', fill:ret};
}
return false;
}
// valine.js
function dr_is_valinejs() {
// 检测script标签引用
const ck_resources = Array.from(document.scripts).some(script => {
return script.src.includes('/Valine.min.js"') ||
script.src.includes('/Valine.js') ||
script.src.includes('unpkg.com/valine') ||
script.src.includes('jsdelivr.net/npm/valine');
});
// 检测容器元素
const ck_container = document.querySelector('#vcomments');
// 检测全局对象
const ck_var = typeof window.Valine !== 'undefined';
// 检测初始化代码特征
const ck_initcode = document.documentElement.innerHTML.includes('new Valine({');
// 综合判断
var ret = ck_resources ||
ck_container !== null ||
ck_var ||
ck_initcode;
if( dr_gm_debug ){
console.log( '===== valine.js begin =====' );
console.log( 'ck_resources:', ck_resources );
console.log( 'ck_container:', ck_container );
console.log( 'ck_var:', ck_var );
console.log( 'ck_initcode:', ck_initcode );
console.log( 'ret:', ret );
console.log( '===== valine.js end =====' );
}
// 返回
if ( ret ) {
return {type:'valine.js', fill:ret};
}
return false;
}
})();