一个 Tampermonkey 油猴脚本,在任何网页底部注入搜索引擎快捷栏,支持 46+ 引擎一键切换、拖拽排序、智能排序、快捷搜索、自定义引擎管理,并在 GitHub 搜索结果页自动标注部署网站和发布版本。
在所有网页底部注入一个浮动引擎栏,默认显示 9 个引擎(Bing、Google、百度、密塔、Yandex、哔哩哔哩、APKPure、夸克、知乎)。点击任意引擎即可用当前页面的搜索关键词在新标签页打开对应搜索引擎。如果当前页面没有搜索关键词,点击引擎会弹出快捷搜索面板。
通过左下角汉堡菜单 → 引擎排序设置切换:
| 模式 | 行为 |
|---|---|
| 默认模式 | 保持用户拖拽排序的顺序,引擎可自由拖拽 |
| 智能排序 | 按使用频率自动排列,频率相同时按原顺序,禁用拖拽 |
智能排序下,每次点击引擎搜索都会记录使用次数,常用引擎自动浮到前面。
按 Alt+S 或点击引擎栏中的搜索框打开全屏搜索面板:
按 Alt+E 或通过汉堡菜单打开:
在 github.com/search 页面自动激活,为每个仓库结果添加两个标签,显示在仓库描述下方:
技术细节:支持 301 重定向跟随(处理重命名仓库如 facebook/react)、API 结果缓存、5 级 DOM 定位策略适配 GitHub CSS Modules 哈希类名。
| 快捷键 | 功能 |
|---|---|
Alt + S |
打开快捷搜索面板 |
Alt + E |
打开引擎管理中心 |
Alt + M |
切换汉堡菜单 |
Escape |
关闭当前浮层 |
Tab / Shift + Tab |
在浮层内循环聚焦 |
安装 Tampermonkey 浏览器扩展(支持 Chrome、Firefox、Edge、Safari)。
sousuo.user.js| 权限 | 用途 |
|---|---|
GM_setValue / GM_getValue |
存储引擎配置、排序顺序、使用次数 |
GM_addStyle |
注入样式 |
GM_xmlhttpRequest |
GitHub API 调用、README/package.json 抓取 |
unsafeWindow |
访问页面上下文 |
@connect github.com |
GitHub API 请求 |
@connect raw.githubusercontent.com |
README/package.json 抓取 |
@connect api.github.com |
Releases/Tags API 查询 |
脚本的所有配置通过 GM 存储自动管理,无需手动编辑。以下是关键存储项:
| 存储键 | 默认值 | 说明 |
|---|---|---|
punk_setup_search |
Bing-Google-Baidu-MetaSo-YandexSearch-Bilibili-ApkPure-Quark-Zhihu |
启用的引擎 mark 列表(- 分隔),顺序即显示顺序 |
userSearchEngines |
[] |
用户自定义引擎列表 |
engine_sort_mode |
default |
排序模式:default 或 smart |
engine_usage_counts |
{} |
各引擎使用次数(智能排序用) |
engineBarOffset |
0 |
引擎栏底部偏移值(输入法弹出时调整) |
恢复默认:在引擎管理中心点击"恢复默认"按钮,清空所有自定义引擎和配置。
prefers-color-scheme 偏好backdrop-filter: blur() 应用于所有浮层passive: truerole="button" + aria-label,浮层 aria-modal百度:延迟 500ms 同步 input#kw 的值,确保搜索关键词正确提取。
自动添加引擎:5 级识别策略依次尝试表单分析、搜索输入框检测、Meta 标签识别、URL 参数匹配、已知域名模式映射。
CSS 隔离:管理面板内所有 input、select 元素使用 !important 声明,防止宿主页面(如百度)的全局 CSS 重置导致复选框不可见。
githubEnhancer GitHub 搜索结果增强(部署检测 + 版本检测)
accessibility 无障碍(键盘导航 + ARIA + 焦点陷阱)
utils 工具函数库(关键词提取 + 排序持久化 + SVG 图标)
domHandler DOM 操作(引擎栏注入 + 拖拽排序 + 滚动监听)
searchOverlay 快捷搜索面板(搜索 + 网站导航)
hamburgerMenu 汉堡菜单(排序设置 + 偏移设置)
managementPanel 引擎管理中心(增删改查 + 自动识别)
appInitializer 应用初始化(作用域检测 + 页面事件监听)
9 个模块均为独立对象,通过共享的 appState、CLASS_NAMES、STORAGE_KEYS、DEFAULT_CONFIG 常量协调。
晚风知我意