必须先成功添加并验证自定义搜索引擎(如“站长工具”),再通过@match精准匹配结果页url(如https://tool.chinaz.com/search*),配合domcontentloaded等待机制编写用户脚本,确保在搜索结果页正确执行增强逻辑。

你想让宙斯浏览器直接调用某个小众工具站、内部系统或境外搜索服务,但预置列表里没有它,手动添加搜索引擎后还想让它自动执行一段脚本(比如自动补全参数、跳过登录页、过滤广告结果),这就需要把自定义搜索引擎和用户脚本联动起来——不是只填个%s,而是让脚本在搜索发起前或结果页加载时立即干预。
先确保搜索引擎已正确添加
脚本无法触发的前提,往往是搜索根本没走你预期的路径。【必须确认该搜索引擎已保存成功且能正常跳转】,否则脚本连执行机会都没有。
点击右上角三点菜单→“设置”→向下滚动找到并点击“搜索引擎”→点击底部“+”号→在“搜索引擎名称”中输入“站长工具”→“关键字”填zt→“搜索URL”填https://tool.chinaz.com/search?q=%s→点击“保存”。
返回首页,在地址栏输入zt+空格+关键词(如zt ip),回车,确认页面跳转到chinaz.com且URL中包含你输入的关键词。若跳转失败或URL缺失参数,脚本后续所有操作都无效。
为该搜索引擎匹配专属脚本
脚本不会自动识别你刚添加的搜索引擎,它只认URL。所以你要让脚本精准命中搜索结果页,而不是首页或404页。
方法一:用@match直接锁定结果页域名与路径
点击工具栏猴子图标→“管理面板”→“创建新脚本”→删除默认内容→粘贴以下元数据块:
// ==UserScript==
// @name 站长工具搜索增强
// @namespace http://zeus.browser/scripts
// @version 0.1
// @description 自动展开IP查询结果、隐藏广告位
// @author You
// @match https://tool.chinaz.com/search*
// @grant none
// ==/UserScript==
注意:@match行必须写成https://tool.chinaz.com/search*,不能漏掉末尾星号;也不能写成https://tool.chinaz.com/*,否则会误触首页和其他无关页面。
方法二:用@include + @exclude组合更精细控制
如果你发现脚本在搜索页和详情页都触发了,但只想作用于搜索结果页,就改用:
// @include https://tool.chinaz.com/search*
// @exclude https://tool.chinaz.com/search?*q=*
不过宙斯浏览器当前版本不支持@exclude正则语法,所以【优先用@match,别尝试@exclude】。
编写脚本逻辑并验证执行时机
搜索结果页通常动态加载,DOM结构可能延迟渲染。如果脚本过早执行,目标元素还不存在,就会静默失败。
第一步:强制等待DOM就绪
在元数据块下方,第一行必须写:
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', main); } else { main(); }
第二步:定义main函数包裹全部逻辑
function main() {
// 例如:给每个搜索结果标题加红色边框
document.querySelectorAll('.search-result h3').forEach(el => el.style.border = '2px solid red');
}
第三步:保存后立刻验证
在地址栏输入zt+空格+关键词→回车→页面加载完成后按F12打开开发者工具→切换到Console标签页→输入console.log('test')回车,若看到输出,说明脚本已加载;再检查页面是否有红色边框出现。没有?说明@match没命中,或main函数没执行。











