您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Use DuckDuckGo !bangs on your preferred search engine
// ==UserScript== // @name !bangAnywhere // @namespace https://github.com/RuiNtD // @version 1.1.3 // @description Use DuckDuckGo !bangs on your preferred search engine // @author RuiNtD // @match https://*.google.com/search?* // @match https://*.bing.com/search?* // @match https://search.brave.com/search?* // @match https://*.qwant.com/?* // @match https://*.startpage.com/*/search* // @noframes // @homepageURL https://gf.qytechs.cn/scripts/469625 // @icon https://icons.duckduckgo.com/ip2/duckduckgo.com.ico // @require https://cdn.jsdelivr.net/npm/@violentmonkey/url@0 // @resource bangs https://duckduckgo.com/bang.js // @license MIT // @grant GM_getResourceText // ==/UserScript== (function (url) { 'use strict'; // Modified from https://github.com/t3dotgg/unduck function getBangUrl(query) { const match = query.match(/!(\S+)/i); const bangTag = match?.[1]?.toLowerCase(); if (!bangTag) return; const bangs = JSON.parse(GM_getResourceText("bangs")); const bang = bangs.find(b => b.t == bangTag); if (!bang) return null; const cleanQuery = query.replace(/!\S+\s*/i, "").trim(); if (!cleanQuery) return `https://${bang.d}`; return bang.u.replace("{{{s}}}", encodeURIComponent(cleanQuery)); } function checkQuery() { const url = new URL(window.location.href); const params = url.searchParams; const qInput = document.querySelector("input#q"); const query = (params.get("q") || params.get("query") || qInput?.value || "").trim(); if (!query) return; console.log("!bangAnywhere Query:", query); const bangUrl = getBangUrl(query); console.log("!bangAnywhere Redirect:", bangUrl); if (bangUrl) window.location.replace(bangUrl); } url.onNavigate(checkQuery); checkQuery(); })(VM);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址