Greasy Fork is available in English.
自动抓取抖音/微博/百度/头条热搜词,每次自动填入Bing搜索框并回车(自动提交),首次启动弹窗全部热词。每次5-10秒随机延迟。热搜词只在第一次启动时获取。
当前为
// ==UserScript==
// @name 必应Rewards热搜自动输入任务
// @version 2.1.0
// @description 自动抓取抖音/微博/百度/头条热搜词,每次自动填入Bing搜索框并回车(自动提交),首次启动弹窗全部热词。每次5-10秒随机延迟。热搜词只在第一次启动时获取。
// @author Sentaku1129
// @match https://www.bing.com/*
// @match https://cn.bing.com/*
// @license GNU GPLv3
// @icon https://www.bing.com/favicon.ico
// @run-at document-end
// @grant GM_registerMenuCommand
// @grant GM_setValue
// @grant GM_getValue
// @namespace http://greasyfork.icu/users/1029902
// ==/UserScript==
var max_rewards = 30; // 每日最大自动输入次数
const appkey = ""; // 如有API key请填写
const Hot_words_apis = "https://api.gmya.net/Api/";
const keywords_source = ['BaiduHot', 'TouTiaoHot', 'DouYinHot', 'WeiBoHot'];
const default_search_words = [
"盛年不重来,一日难再晨", "千里之行,始于足下", "少年易学老难成,一寸光阴不可轻", "敏而好学,不耻下问", "海内存知已,天涯若比邻", "三人行,必有我师焉",
"莫愁前路无知已,天下谁人不识君", "人生贵相知,何用金与钱", "天生我材必有用", "海纳百川有容乃大;壁立千仞无欲则刚", "穷则独善其身,达则兼济天下", "读书破万卷,下笔如有神",
"学而不思则罔,思而不学则殆", "一年之计在于春,一日之计在于晨", "莫等闲,白了少年头,空悲切", "少壮不努力,老大徒伤悲", "一寸光阴一寸金,寸金难买寸光阴", "近朱者赤,近墨者黑",
"吾生也有涯,而知也无涯", "纸上得来终觉浅,绝知此事要躬行", "学无止境", "己所不欲,勿施于人", "天将降大任于斯人也", "鞠躬尽瘁,死而后已", "书到用时方恨少", "天下兴亡,匹夫有责",
"人无远虑,必有近忧", "为中华之崛起而读书", "一日无书,百事荒废", "岂能尽如人意,但求无愧我心"
];
// 只在“开始”菜单真正启动时,抓取热搜并缓存
GM_registerMenuCommand('开始', function () {
GM_setValue('Cnt', 0);
GM_setValue('HotSearchList', null);
fetchHotWords().then(words => {
GM_setValue('HotSearchList', JSON.stringify(words));
location.href = "https://www.bing.com/?br_msg=Please-Wait";
});
}, 'o');
// 停止菜单
GM_registerMenuCommand('停止', function () {
GM_setValue('Cnt', max_rewards + 10);
alert("已停止自动输入!");
location.reload();
}, 'o');
/**
* 获取多平台热搜词(只在第一次菜单启动时执行)
* @returns {Promise<string[]>}
*/
async function fetchHotWords() {
for (let i = 0; i < keywords_source.length; i++) {
const source = keywords_source[i];
let url;
if (appkey) {
url = Hot_words_apis + source + "?format=json&appkey=" + appkey;
} else {
url = Hot_words_apis + source;
}
try {
const response = await fetch(url);
if (!response.ok) throw new Error('HTTP error! status: ' + response.status);
const data = await response.json();
if (data.data && data.data.length) {
const titles = data.data.map(item => item.title);
// 仅首次成功时弹窗全部热词
alert("获取到的热搜词:\n" + titles.join('\n'));
return titles.slice(0, max_rewards);
}
} catch (error) {
// 某个来源失败则继续下一个
console.error('热搜词来源请求失败:', error);
}
}
alert("全部热搜API失效,使用默认搜索词。");
return default_search_words.slice(0, max_rewards);
}
// 字符扰动,防检测
function AutoStrTrans(st) {
let yStr = st;
let rStr = "试验";
let zStr = "";
let prePo = 0;
for (let i = 0; i < yStr.length;) {
let step = parseInt(Math.random() * 6) + 1;
if (i > 0) {
zStr = zStr + yStr.substr(prePo, i - prePo) + rStr;
prePo = i;
}
i = i + step;
}
if (prePo < yStr.length) {
zStr = zStr + yStr.substr(prePo, yStr.length - prePo)
}
return zStr;
}
// 自动填入搜索框并回车
function fillBingInputAndEnter(words, cnt) {
// 主输入框id为sb_form_q,或class为b_searchbox
let input = document.getElementById('sb_form_q') || document.querySelector('.b_searchbox');
if (input) {
input.value = words[cnt % words.length];
input.focus();
input.select();
// 创建并派发回车事件(实际触发提交)
let e = new KeyboardEvent('keydown', {
bubbles: true,
cancelable: true,
key: 'Enter',
code: 'Enter',
which: 13,
keyCode: 13
});
input.dispatchEvent(e);
}
}
// 自动滚动到底部
function smoothScrollToBottom() {
document.documentElement.scrollIntoView({ behavior: 'smooth', block: 'end' });
}
// 主体自动输入+回车逻辑
(function () {
'use strict';
if (GM_getValue('Cnt') == null) GM_setValue('Cnt', max_rewards + 10);
let cnt = GM_getValue('Cnt');
let hotSearchList = GM_getValue('HotSearchList');
if (cnt < max_rewards && hotSearchList) {
let words = JSON.parse(hotSearchList);
startFillInput(cnt, words);
}
function startFillInput(cnt, words) {
let tt = document.getElementsByTagName("title")[0];
if (tt) tt.innerHTML = "[" + cnt + " / " + max_rewards + "] " + tt.innerHTML;
smoothScrollToBottom();
// 5-10秒随机延迟
let delay = Math.floor(Math.random() * 5000) + 5000;
setTimeout(function () {
GM_setValue('Cnt', cnt + 1);
let nowtxt = words[cnt % words.length];
nowtxt = AutoStrTrans(nowtxt);
fillBingInputAndEnter([nowtxt], 0);
// 自动回车,无需跳转链接
}, delay);
}
})();