微软Bing 必应积分自动脚本(Microsoft Bing Rewards Script)

使用Edge搜索,生成高度随机的1500万+搜索词,循环搜索直到达到指定次数。优化UI,包含倒计时。本脚本修改自 yclown 的原始项目。

// ==UserScript==
// @name         微软Bing 必应积分自动脚本(Microsoft Bing Rewards Script)
// @version      1.0.5
// @description  使用Edge搜索,生成高度随机的1500万+搜索词,循环搜索直到达到指定次数。优化UI,包含倒计时。本脚本修改自 yclown 的原始项目。
// @author       BABAlala (原作者 yclown, 修改自其项目 https://github.com/yclown/myTamperMokey)
// @match        https://cn.bing.com/search?*
// @match        https://www.bing.com/search?*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bing.com
// @require      https://code.jquery.com/jquery-3.1.1.min.js
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_addStyle
// @license      GPL-3.0
// @namespace    https://gf.qytechs.cn/users/1413398
// ==/UserScript==

(function() {
    'use strict';

    // 默认配置
    const DEFAULT_CONFIG = {
        max_pc: 40,
        max_ph: 30,
        min_interval: 50,
        max_interval: 120
    };

    // 添加美化样式
    GM_addStyle(`
        #reward_tool {
            position: fixed; right: 10px; top: 100px; background: #fff; padding: 15px; border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1); width: 200px; font-family: sans-serif; z-index: 9999;
        }
        #reward_tool a {
            display: block; margin: 5px 0; padding: 5px; color: #fff; background: #0078d4; border-radius: 4px; text-align: center;
        }
        #reward_tool a:hover { background: #005bb5; }
        #reward_tool p { margin: 5px 0; color: #333; font-size: 12px; }
        #reward_tool .count { font-weight: bold; color: #e74c3c; }
        #reward_tool #reward_info { color: #27ae60; }
        #reward_tool #countdown { color: #e67e22; font-weight: bold; }
    `);

    // 初始化界面
    const countInfo = GetConfig();
    document.body.insertAdjacentHTML('beforeend', `
        <div id="reward_tool">
            <a id="reward_finish">结束脚本</a>
            <a id="reward_clean">重置搜索</a>
            <p>电脑: <span class="count" id="pc_count">${countInfo.pc_count}</span> / ${DEFAULT_CONFIG.max_pc}</p>
            <p>手机: <span class="count" id="ph_count">${countInfo.ph_count}</span> / ${DEFAULT_CONFIG.max_ph}</p>
            <p id="reward_info"></p>
            <p>下次搜索: <span id="countdown">--</span></p>
        </div>`);

    // 事件绑定
    $("body").on("click", "#reward_clean", CleanCount);
    $("body").on("click", "#reward_finish", Finish);

    // 主循环
    let timer = null;
    StartSearch();

    function StartSearch() {
        const config = GetConfig();
        console.log("StartSearch: ", config, "IsPhone: ", IsPhone());
        if (config.pc_count >= DEFAULT_CONFIG.max_pc && config.ph_count >= DEFAULT_CONFIG.max_ph) {
            ShowInfo(config);
            return;
        }

        const interval = GetRandomInterval();
        let remainingTime = interval / 1000;
        UpdateCountdown(remainingTime);

        timer = setInterval(() => {
            remainingTime--;
            UpdateCountdown(remainingTime);
            if (remainingTime <= 0) {
                clearInterval(timer);
                PerformSearch();
                StartSearch();
            }
        }, 1000);
    }

    function PerformSearch() {
        const config = GetConfig();
        console.log("PerformSearch: ", config);
        if ((!IsPhone() && config.pc_count >= DEFAULT_CONFIG.max_pc) || (IsPhone() && config.ph_count >= DEFAULT_CONFIG.max_ph)) return;

        try {
            const searchInput = document.getElementById("sb_form_q") || document.querySelector("input[name='q']");
            const searchButton = document.getElementById("sb_form_go") || document.querySelector("button[type='submit']");
            console.log("Input: ", searchInput, "Button: ", searchButton);

            if (!searchInput) throw new Error("搜索框未找到");
            if (!searchButton) throw new Error("搜索按钮未找到");

            searchInput.value = GetRandomSearchTerm();
            if (IsPhone()) config.ph_count++; else config.pc_count++;
            GM_setValue("bing_reward", JSON.stringify(config));
            ShowInfo(config);
            searchButton.click();
        } catch (error) {
            console.error("搜索出错:", error);
            setTimeout(StartSearch, 5000); // 出错后5秒重试
        }
    }

    // 手机检测
    function IsPhone() {
        const userAgent = navigator.userAgent.toLowerCase();
        const isMobileUA = /mobile|android|iphone|ipad|touch/i.test(userAgent);
        const isSmallScreen = window.innerWidth < 768;
        return isMobileUA || isSmallScreen;
    }

    // 获取配置
    function GetConfig() {
        let config = GM_getValue("bing_reward");
        const today = new Date().toISOString().split("T")[0]; // 简化日期处理
        if (!config || JSON.parse(config).date !== today) {
            config = { date: today, pc_count: 0, ph_count: 0 };
        } else {
            config = JSON.parse(config);
        }
        return config;
    }

    // 显示信息
    function ShowInfo(config) {
        document.getElementById("pc_count").textContent = config.pc_count;
        document.getElementById("ph_count").textContent = config.ph_count;
        document.getElementById("reward_info").textContent = config.pc_count < DEFAULT_CONFIG.max_pc || config.ph_count < DEFAULT_CONFIG.max_ph ? '未完成' : '今日已完成';
    }

    // 更新倒计时
    function UpdateCountdown(seconds) {
        document.getElementById("countdown").textContent = seconds > 0 ? `${Math.floor(seconds)}秒` : '搜索中...';
    }

    // 重置计数
    function CleanCount() {
        const today = new Date().toISOString().split("T")[0];
        GM_setValue("bing_reward", JSON.stringify({ date: today, pc_count: 0, ph_count: 0 }));
        alert("计数已重置");
        location.reload();
    }

    // 结束脚本
    function Finish() {
        const today = new Date().toISOString().split("T")[0];
        GM_setValue("bing_reward", JSON.stringify({ date: today, pc_count: DEFAULT_CONFIG.max_pc, ph_count: DEFAULT_CONFIG.max_ph }));
        clearInterval(timer);
        alert("脚本已结束");
    }

// 简化搜索词生成
function GetRandomSearchTerm() {
    const topics = [
        'AI', '区块链', '云计算', '编程', '安全', '天气', '电影', '健康', '旅游', '美食',
        '大数据', '物联网', '虚拟现实', '增强现实', '机器学习', '深度学习', '网络安全', '游戏开发', '前端开发', '后端开发',
        '量子计算', '5G技术', '智能家居', '无人驾驶', '机器人', '电子商务', '社交媒体', '数字营销', '金融科技', '教育科技',
        '生物技术', '新能源', '环境保护', '太空探索', '航空技术', '建筑设计', '室内装饰', '时尚趋势', '音乐创作', '摄影技巧',
        '健身运动', '瑜伽冥想', '心理健康', '宠物护理', '园艺种植', '汽车保养', '科技新闻', '历史文化', '语言学习', '职业规划',
        '投资理财', '股票市场', '房地产', '法律知识', '烹饪技巧', '烘焙食谱', '咖啡文化', '葡萄酒', '手工DIY', '电子竞技',
        '动漫文化', '科幻小说', '悬疑推理', '浪漫爱情', '儿童教育', '育儿经验', '老年健康', '旅行攻略', '户外探险', '极限运动',
        '艺术绘画', '雕塑工艺', '舞蹈教学', '戏剧表演', '电影评论', '电视剧', '综艺节目', '名人八卦', '体育赛事', '奥运会',
        '世界杯', '篮球技巧', '足球战术', '跑步训练', '游泳技巧', '自行车', '登山装备', '露营指南', '钓鱼技巧', '野外生存',
        // 程序员相关热门词汇(增加5倍后新增部分)
        'Python', 'JavaScript', 'Java', 'C++', 'Rust', 'Go', 'TypeScript', 'React', 'Vue', 'Angular',
        'Node.js', 'Django', 'Flask', 'Spring', 'Kubernetes', 'Docker', 'Git', 'GitHub', 'CI/CD', 'DevOps',
        '微服务', 'API设计', '数据库', 'SQL', 'NoSQL', 'MongoDB', 'Redis', 'PostgreSQL', 'MySQL', 'Linux',
        'Shell脚本', '算法', '数据结构', '设计模式', '单元测试', '代码审查', '敏捷开发', 'Scrum', 'TDD', 'BDD',
        'AWS', 'Azure', 'GCP', '服务器less', '负载均衡', '分布式系统', '高并发', '性能优化', '内存管理', '多线程',
        'WebAssembly', 'GraphQL', 'RESTful', 'OAuth', 'JWT', '加密算法', '正则表达式', '调试工具', '日志分析', '容器化',
        '虚拟机', 'Nginx', 'Apache', '负载测试', '压力测试', '代码重构', '开源项目', '技术博客', '编程竞赛', '黑客马拉松',
        'ChatGPT', '生成式AI', '自然语言处理', '计算机视觉', '强化学习', '神经网络', 'TensorFlow', 'PyTorch', 'Keras', 'Hadoop',
        'Spark', 'Kafka', '消息队列', '实时流处理', '数据可视化', 'ETL', '数据仓库', 'BI工具', '低代码', '全栈开发',
        '前端框架', '后端框架', '移动开发', 'Flutter', 'React Native', 'Android开发', 'iOS开发', '跨平台', 'UI设计', 'UX优化',
        'SEO优化', 'Web3', '智能合约', 'DApp', 'NFT', '元宇宙', '边缘计算', '嵌入式开发', '硬件编程', '物联网安全',
        'Rust编程', 'Go并发', 'Python爬虫', 'Java性能', 'C++模板', 'JavaScript异步', 'TypeScript类型', 'React Hooks', 'Vue3', 'Angular组件',
        'Node性能', 'Django部署', 'Flask微服务', 'Spring Boot', 'Kubernetes集群', 'Docker镜像', 'Git工作流', 'GitHub Actions', 'CI管道', 'DevOps工具',
        '微服务架构', 'API网关', '数据库优化', 'SQL查询', 'NoSQL设计', 'MongoDB索引', 'Redis缓存', 'PostgreSQL事务', 'MySQL调优', 'Linux命令',
        'Shell自动化', '算法优化', '数据结构实现', '设计模式应用', '单元测试框架', '代码审查工具', '敏捷实践', 'Scrum流程', 'TDD实践', 'BDD测试',
        'AWS Lambda', 'Azure Functions', 'GCP部署', '服务器less架构', '负载均衡策略', '分布式事务', '高并发设计', '性能调优', '内存泄漏', '多线程编程',
        'WebAssembly应用', 'GraphQL查询', 'RESTful设计', 'OAuth认证', 'JWT令牌', '加密技术', '正则匹配', '调试技巧', '日志系统', '容器编排',
        '虚拟化技术', 'Nginx配置', 'Apache优化', '负载测试工具', '压力测试方法', '代码重构技巧', '开源贡献', '技术写作', '编程挑战', '黑客技术',
        'AI模型', '生成式模型', 'NLP应用', 'CV算法', '强化学习框架', '神经网络优化', 'TensorFlow部署', 'PyTorch训练', 'Keras模型', 'Hadoop集群',
        'Spark计算', 'Kafka流', '消息队列设计', '实时数据', '数据可视化工具', 'ETL流程', '数据仓库设计', 'BI分析', '低代码平台', '全栈项目',
        '前端优化', '后端部署', '移动应用', 'Flutter组件', 'React Native性能', 'Android调试', 'iOS优化', '跨平台开发', 'UI框架', 'UX设计',
        'SEO策略', 'Web3开发', '智能合约部署', 'DApp设计', 'NFT市场', '元宇宙技术', '边缘计算应用', '嵌入式系统', '硬件接口', '物联网协议'
    ];
    const actions = [
        '学习', '制作', '找到', '优化', '下载',
        '探索', '研究', '设计', '开发', '测试',
        '分享', '购买', '安装', '升级', '定制',
        '分析', '比较', '推荐', '订阅', '收藏',
        '注册(不可用)', '登录(不可用)', '评论', '评分', '发布',
        '搜索', '浏览', '预订', '取消', '退款',
        '咨询', '预约', '参加', '观看', '直播',
        '编辑', '保存', '删除', '恢复', '备份',
        '同步', '连接', '断开', '配置', '调试',
        // 增加5倍后新增部分
        '部署', '监控', '维护', '迁移', '集成',
        '编译', '运行', '构建', '清理', '重启',
        '审查', '验证', '生成', '转换', '提取',
        '推送', '拉取', '合并', '分支', '提交',
        '格式化', '压缩', '解压', '加密', '解密',
        '初始化', '重置', '调整', '扩展', '缩小',
        '查询', '过滤', '排序', '分组', '聚合',
        '模拟', '预测', '训练', '评估', '优化',
        '导入', '导出', '复制', '粘贴', '剪切',
        '撤销', '重做', '锁定', '解锁', '标记',
        '上传', '下载', '缓存', '刷新', '重载',
        '启动', '停止', '暂停', '继续', '切换',
        '分配', '回收', '调度', '执行', '终止',
        '绑定', '解除', '映射', '解析', '渲染',
        '打包', '分发', '签名', '认证', '授权',
        '追踪', '记录', '分析', '统计', '报告',
        '清理', '归档', '恢复', '同步', '对比',
        '调整', '校准', '测量', '检测', '修复',
        '模拟', '仿真', '实验', '验证', '确认',
        '规划', '实施', '跟踪', '反馈', '改进',
        '协商', '协作', '竞争', '挑战', '超越'
    ];
    const qualifiers = [
        '最新', '免费', '简单', '高效', new Date().getFullYear() + '年',
        '热门', '经典', '高级', '基础', '专业',
        '快速', '详细', '实用', '创新', '独家',
        '全球', '本地', '实时', '历史', '未来',
        '入门', '进阶', '专家', '初学者', '必备',
        '最优', '便宜', '豪华', '便携', '耐用',
        '安全', '可靠', '开源', '商业', '个人',
        '儿童', '成人', '老年', '家庭', '团队',
        '在线', '离线', '虚拟', '真实', '互动',
        // 增加5倍后新增部分
        '稳定', '灵活', '强大', '轻量', '复杂',
        '动态', '静态', '自动', '手动', '智能',
        '前沿', '传统', '实验', '正式', '临时',
        '完整', '精简', '扩展', '核心', '边缘',
        '本地化', '国际化', '定制化', '标准化', '模块化',
        '高效能', '低功耗', '高性能', '低延迟', '高可用',
        '单机', '集群', '分布式', '集中式', '去中心化',
        '异步', '同步', '并行', '串行', '多核',
        '轻便', '重型', '便携式', '固定式', '移动式',
        '公开', '私有', '共享', '独占', '加密',
        '实时性', '延迟性', '可靠性', '可扩展性', '可维护性',
        '跨平台', '单平台', '多语言', '单语言', '多用户',
        '低成本', '高成本', '预算内', '超预算', '性价比',
        '初级', '中级', '高级', '专家级', '大师级',
        '快速入门', '深度学习', '全面掌握', '基础教程', '高级技巧',
        '最新版', '旧版', '测试版', '稳定版', '开发版',
        '本地部署', '云端部署', '混合部署', '容器部署', '虚拟部署',
        '高分辨率', '低分辨率', '高清', '标清', '超清',
        '单线程', '多线程', '高并发', '低并发', '高负载',
        '轻量级', '重量级', '简洁版', '完整版', '精华版',
        '快速加载', '延迟加载', '预加载', '懒加载', '即时加载'
    ];

    // 随机决定是 actions + qualifiers + topics 还是 actions + topics
    const useQualifier = Math.random() > 0.5; // 50% 概率使用 qualifiers
    const action = actions[Math.floor(Math.random() * actions.length)];
    const topic = topics[Math.floor(Math.random() * topics.length)];
    const qualifier = qualifiers[Math.floor(Math.random() * qualifiers.length)];

    return useQualifier ? `${action} ${qualifier} ${topic}` : `${action} ${topic}`;
}

    // 随机时间间隔
    function GetRandomInterval() {
        const min = DEFAULT_CONFIG.min_interval * 1000;
        const max = DEFAULT_CONFIG.max_interval * 1000;
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址