您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically prepends dorks to Google search queries.
// ==UserScript== // @name Auto Dorks for Google // @namespace http://tampermonkey.net/ // @version 1.3 // @description Automatically prepends dorks to Google search queries. // @author OpticOddities // @match *://*/* // @grant GM_setValue // @grant GM_getValue // @license MIT // ==/UserScript== (function() { 'use strict'; const getSearchBox = () => document.querySelector('textarea[name="q"], input[name="q"]'); const isGoogle = () => location.hostname.includes("google."); function updateGoogleQuery() { if (isGoogle()) { const searchBox = getSearchBox(); if (!searchBox) return; let query = searchBox.value.replace(/before:\d{4}-\d{2}-\d{2}|after:\d{4}-\d{2}-\d{2}/g, '').trim(); ['beforeDate', 'afterDate'].forEach(key => { if (GM_getValue(key + "Enabled", false)) { const date = GM_getValue(key, ''); if (date) query = `${key.split('Date')[0]}:${date} ${query}`; } }); searchBox.value = query; } } function createDateField(labelText, key) { const wrapper = document.createElement("div"); wrapper.innerHTML = `<input type="checkbox" id="${key}Enabled" ${GM_getValue(key + "Enabled", false) ? 'checked' : ''}><label for="${key}Enabled">${labelText}</label><input type="date" id="${key}" ${!GM_getValue(key + "Enabled", false) ? 'disabled' : ''} value="${GM_getValue(key, '')}">`; wrapper.querySelector('input[type="checkbox"]').onchange = () => { const isEnabled = wrapper.querySelector('input[type="checkbox"]').checked; GM_setValue(key + "Enabled", isEnabled); wrapper.querySelector('input[type="date"]').disabled = !isEnabled; updateGoogleQuery(); }; wrapper.querySelector('input[type="date"]').onchange = () => { GM_setValue(key, wrapper.querySelector('input[type="date"]').value); updateGoogleQuery(); }; return wrapper; } const wrenchIcon = document.createElement("div"); wrenchIcon.innerHTML = "🔧"; wrenchIcon.style.cssText = "position: fixed; top: 10px; right: 10px; cursor: pointer; z-index: 1000;"; wrenchIcon.style.display = isGoogle() ? "block" : "none"; // Hides wrench icon when not on Google const foldoutPanel = document.createElement("div"); foldoutPanel.style.cssText = "display: none; position: fixed; top: 40px; right: 10px; background: white; border: 1px solid black; padding: 10px; z-index: 1000;"; wrenchIcon.onclick = () => foldoutPanel.style.display = foldoutPanel.style.display === "none" ? "block" : "none"; document.body.append(wrenchIcon, foldoutPanel); foldoutPanel.append(createDateField("Before: ", "beforeDate"), createDateField("After: ", "afterDate")); setInterval(() => { wrenchIcon.style.display = isGoogle() ? "block" : "none"; // Update wrench icon visibility based on site }, 1000); window.addEventListener('load', () => isGoogle() && getSearchBox() && updateGoogleQuery()); })();