以 灵活又顺手 的方式 在(切换) 任意一个 或 (连续)多个 搜索引擎(或任意网站)进行搜索。
新手友好,专家满意。包括日常、娱乐及工作。
俱有 多搜索引擎工具 该有的基本功能,如:
- 内置 百度,Google,B站,Youtube,Github,淘宝 等
- GET/POST
- 自定引擎
等。 在具有了 以上 基本功能 之后,它还可以✨:
- 🖋️ 文本单行或多行
- ⌨️ 调用搜索的过程可完全仅用键盘,不碰鼠标。其自身UI里内置类似Vimium的功能,键盘可点击不同的搜索引擎(详情)
- 🖥️ 桌面(扩展或网页)和移动(网页)
- 🔎 甚至兼容那些 不对外开放GET/POST搜索接口 的网站(这里称其为In-page-Ajax-render)(详见下FAQ)
- 🔎 一个按钮一次调用多个操作。跨引擎呼叫搜索
- 💪 用户可JSON编程做高级自定义(亦有GUI易用编辑)。引擎数据 和 搜索方式 的 高灵活性 (详情)
等...详见下文
视频介绍:特色概括+完整说明: Bilibili | Youtube (分章节视频,可直接看某一功能的使用说明)
大术专搜 👨💻 既专又广 🗺️ 手敲几下 🖱️ 纵横去往 (装逼时间)
图标含意:「術」(术)字 篆刻简版线条 + 放大镜 代表搜索查询
名称含意:1.在搜索方面有强大的技术技巧 2.亦可以搜索「术」这类内容 (起了个很装逼/扮嘢/作势的名字~)
- 开始安装使用
- 基础屏幕截图 及演示、视频
- 功能及特性
- FAQ * Q: 到底什么是「In-page-Ajax-render」?
- 已收录引擎
- 相似工具和方法比较
- 如何编辑搜索引擎(GUI或JSON)
- For Developers
使用方式有:
-
浏览器扩展(推荐)
- Firefox Addon
- Chrome Addon 或 下载 .crx。 适用于:Google Chrome、Microsoft Edge、Brave、Vivaldi、Opera、
搜狗浏览器(部分)、360极速浏览器(部分) 等
-
网页版 :演示作用为主,网页版不能像扩展一样完全工作。网页版可在手机浏览器使用。
使用扩展 | 可深可广 | UI风格可选 |
---|---|---|
搜索选择内容 | 几种UI显示方式 | Vem (类似Vimium) |
编辑搜索引擎 | 特别搜索方式 灵活、可扩展 | |
视频介绍:特色概括+完整说明: Bilibili | Youtube (分章节视频,可直接看某一功能的使用说明)
- 🔎 任意搜索引擎、查询网站(内置90+)集于一处(连续)操作。任何支持GET/POST的
- 🔎 自定义搜索引擎(详情)(在扩展中可同步)
- 🔎 调用浏览器内联的搜索引擎(扩展。因此已加进浏览器的可直接用。仅Firefox)
- 🖋️ 单行或多行 文本编辑及发送
例如需要翻译文章段落时就很有用
- 🗂️ 引擎分类卡片
- 📋 保存(仅在本地)、复用和管理搜索历史(无痕模式下不保存)。复用方式:双击动作
- 单行编辑时:替换文本框
- 多行编辑时:插入至光标
- 🖱️ 将选择的文本(单行或多行)作为搜索词
- Firefox无痕模式中无 (bug 1380812).
- ⌨️ 可自定的快捷键。默认为(可能需自行修改):
- 唤出界面。Firefox:
Ctrl+Alt+S
Chrome及其他:Ctrl+Shift+S
- 将选择文本设定为搜索词。Firefox:
Ctrl+Alt+D
Chrome及其他:Ctrl+Shift+D
Firefox更改 | Chrome更改
chrome://extensions/shortcuts
- 唤出界面。Firefox:
- 🖥️ 适配多处:桌面(扩展或网页)和移动(网页)。扩展在工具栏按钮弹出界面、独立标签、侧边栏(浏览器原生)多处可用
- ⌨️ Vem特性:内置类似Vimium的功能,可用键盘快捷点击不同的搜索引擎(详情)
- 🔎 甚至兼容那些 不对外开放GET/POST搜索接口 的网站(这里称其为In-page-Ajax-render)(详情)
- 🔎 一个按钮一次调用多个操作
- ✨ 好看强大的同时,非常轻量级(详情)
- 💪 用户可JSON编程做高级自定义(亦有GUI易用编辑)。内置的 及 用户自定义 的引擎采用同种数据格式(详情)。引擎数据 和 搜索方式 的 高灵活性:
- 🔲 一引擎,多按钮:对于一个引擎,可以支持不同的操作。(各按钮继承引擎的数据,按钮之下的某些键值可覆盖引擎名下的键值数据作用)
- 📞 跨引擎调用:可调用另一引擎(中的某一按钮的动作)来动作
- 🔏 可针对引擎需要,对用户输入进行字符串格式化,或字符替换,编码选择
- 🔎 适当结合上两点,可搜索不提供搜索的网站
若你用过 !bang
或 omnibox,它们都要求你背诵代号。
而 大术专搜 的 Vem模式 让你 可视化、快捷 地 用键盘 (连续)点击不同的搜索引擎的不同按钮。使用Shift+Enter
进入Vem模式
这部分未翻译完成。详细见英文文档对应的本部分
- 🛡️ 不向网页注入任何代码(除搜索In-page-Ajax-render网站时外)
- 🛡️ 纯客户端功能及数据完整,不需第三方服务器。完全无搜集任何用户数据
- 🛡️ 用户自定义引擎的GUI编辑器为在线使用(减小扩展体积),若追求极致的安全性,也可以将它们之间的通信禁用,采用手动编辑
A:
普通的GET/POST搜索流程是:
- 你输入搜索词,点击搜索按钮
- 你的浏览器把搜索词装入GET/POST query中,发到你指定的目标网站
- 你的浏览器打开新tab并载入目标网站返回的HTML
大术专搜的In-page-Ajax-render搜索功能是:
- 你输入搜索词,点击搜索按钮
- 你的浏览器打开你指定的目标网站页面(未发送搜索词)
- 本工具向该页面注入一个简单的JS,把你的搜索词填入页面上的文本框中(通过你指定的css selector找到它),然后JS模拟点击提交按钮(同样通过你的css selector找到)动作
- 网站页面本身的JS会起作用,Ajax获取搜索结果,浏览器渲染展示在该页面上
本工具的In-page-Ajax-render搜索功能,可以用于搜索那些不对外开放GET/POST搜索接口的(例如SPA型网页),或者要检验在搜索入口表单分配的随机token的
「In-page-Ajax-render」是 In-page-submit-form-via-Ajax-then-XHR-gets-search-result-then-render-and-show-in-page-without-web-frame-navigation 的简称。
视频说明中也有关于这部分的解读
目前 90+ 。查看收录引擎列表
有经验的用户可看直观的横向比较,快速了解“独门”特色。(顺便了解其他工具)
一般用以上GUI编辑器即可。若不用GUI(例如你是高级用户,或想使用进阶特性),可以继续阅读以下关于JSON数据的说明。
大术专搜用户可通过编程的方式设置搜索引擎。以下讲述JSON格式的编辑引擎说明。以下两者皆适用:
- 用户自定义的私人引擎
- 大术专搜内置搜索引擎(
enginesdata.js
)
只需要很简单的JSON,及基本HTTP GET Method
知识。
{
"百度": "https://www.baidu.com/s?wd={0}",
"Google": "https://www.google.com/search?q={0}",
"Yahoo Search": "https://search.yahoo.com/search?q={0}"
}
关于简短形式的更多说明
以上虽然简单且正确,但如果你是程序员,建议不要将key和显示名称混用。例如,应该至少用:
{
"baidu": {
"dname": "百度",
"full_url": "https://www.baidu.com/s?wd={0}"
}
}
使用完整形式有机会发挥本工具所有功能。
亦支持将 简短形式 和 完整形式 混合使用。
完整形式例子
{
"yahoo": {
"dname": "Yahoo搜索",
"addr": "https://search.yahoo.com",
"action": "https://search.yahoo.com/search",
"kw_key": "q"
},
"google": {
"dname": "Google",
"addr": "https://www.google.com",
"action": "https://www.google.com/search",
"kw_key": "q",
"btns": {
"search": {
"label": "Google一下"
},
"lucky": {
"label": "运气不错",
"params": [
{"key":"btnI", "val": "1"}
]
}
}
},
"label_mbap" : { "lstr": "跨引擎" },
"itunesapps": {
"dname": "iTunes Apps (Google)",
"addr": "https://www.apple.com/itunes/charts/free-apps/",
"btns": {
"search_apps": {
"label": "Search Apps",
"kw_format": "{0} site:apple.com/*app",
"use_other_engine": {
"engine": "google",
"btn": "search"
}
}
}
},
"label_usaj": { "lstr": "搜 In-page-Ajax-render 的网站" },
"chrome_ext_dev": {
"dname": "Chrome Ext Dev Doc",
"addr": "https://developer.chrome.com/docs/extensions/reference/",
"action": "https://developer.chrome.com/docs/extensions/reference/",
"ajax": ".search-box__input"
},
"label_many": { "lstr": "一次搜索多个引擎" },
"many_once" : {
"dname": "多个引擎",
"btns": {
"gg_ddg": {
"label": "Google + DDG",
"use_other_engine": ["google", "duckduckgo"]
}
}
}
}
视频说明中也有关于这部分的解读
JSON格式。
使用 完整形式 的引擎数据可以包含以下键值(其中包含了特别搜索方式的说明):
数据说明
// # 按钮之下的某些键值可覆盖引擎名下的键值
{
"引擎名": {
"dname": "引擎显示名字",
"addr": "主页URL", // # 可选
"tip": "引擎提示文字", // # 可选
"action": "表单目标url",
// # 例如,https://search-engine.com/search?q=输入内容,
// # 则action为https://search-engine.com/search
"kw_key": "query string中关键字的键名", // # 上例中,此处为q
"full_url": "http://www.example.com/search/{0}", // # 可选。仅GET method时。会覆盖上两个。整个url
"method": "get/post", // # 可选 默认为get
"charset": "UTF-8/gb2312/gb18030/big5/....", // # 可选 默认UTF-8 (注意:不支持full_url)
"allow_referer": false, // # false(default)/true 可选
"kw_replace": [ [" ", "-"] ] , // # 可选,关键字中需要替换的字符,此例将空格替换为'-'
"kw_format": "格式化关键字{0}后的样子", // # 可选. {0}即常见的%s
"params":[ // # 可选,该操作所需的query string中关键字之外的键和值。POST method时常需要
{"key": "键", "val": "值"},
// # 例如,https://search-engine.com/search?q=输入内容&option=searchall
// # 则 {key: "option", val: "searchall"},
],
"use_other_engine": { // # 可选,使用另一个引擎来操作。
"dbname": "bigsearch/user/browser", // # 可选,另一个引擎的数据来源(3个可能来源数据库):大术专搜内建库(缺省)/用户自定库/浏览器内置库
"engine": "引擎名",
"btn": "按钮名" // # 可选。无则使用第一个按钮
// # 这一整个object也可简化成一个引擎名字符串
},
// # (如果是个数组,则可一次调用多个操作)
"ajax": ...... // # 可选。详见专门的搜索In-page-Ajax-render网站说明
"btns": { // # 可选。若没有此项,则显示一个"搜索"按钮,点击按钮为默认行动
"按钮名": {
"label": "按钮显示文字",
"btn_tip": "提示文字", // # 可选
"..." : "..." // # 这里可以有键值。按钮下的会覆盖引擎下的
},
....
}
},
}
视频说明中也有关于这部分的解读
有些网站无公开的GET/POST搜索接口(或搜索结果非以HTML返回),需要打开它们的页面后输入,它们然后通过Ajax展现结果。(见FAQ)
大术专搜支持收录和调用这类网站(通过你的浏览器往页面注入js,实现输入、点击、表单提交的自动化),且易配置:
例1:指定输入框的css selector。将自动进行关键词输入,模拟回车动作
"ajax": "#search-box-input"
例2:先延时2s,输入,再延时1s,然后模拟点击按钮
"ajax": [2000, "#search-box-input", 1000, "#submit-button"]
视频说明中也有关于这部分的解读
大术专搜 👨💻 万页在手 🗺️ 网之所询 🌐 无不可收 (装逼时间)
用户使用自定义后,我们鼓励将JSON提交到源码(往
enginesdata.js
文件提交)
目前可见的一些改进、完善、发展空间:
- Omnibox
- 兼容OpenSearch等,一键自动添加或转换
快速且轻量: 不使用任何大型库或框架。尽管UI既有简洁又有丰富风格,所有主要功能和UI皆是纯JS+CSS。
-
LZ-UTF8.js (38kB not minified. Data compression library, only for user-custom engines sync)
Copyright (c) 2021, Rotem Dan Released under the MIT license.
-
Foggy Lake (37kB webp. Default background photo)
by Quang Nguyen Vinh
-
Unicons icon (svg)
Unicons by Iconscout
因为目前只有中英2种语言,尚未使用任何框架,只用了一个简单函数实现多语言。
对于要多语言的字符串(单独是英文也行),使用JS函数i18n()
,其输入参数可以是:
- 一个字符串数组(仅中文及英文两种语言时用)。
[0]
内为中文,[1]
内为英文 - 一个Object如
{zh: "这是中文, en: "这是英文", fr: "这是法文"}
该函数执行时会返回对应语言的一个字符串
如果你想添加一个仅针对某一语言用户的搜索引擎,可以在引擎数据中使用visible_lang
,以使它只对某语言可见。
这工具的代码一部分最早可追溯到2008年左右。2015年首次将网页功能发布在网上可公开使用。2020年代初,才发现webExtension和JS已经标准化,于是做出了浏览器扩展版本并开了Github repo。(是的,慢慢地发展,不是全职的)
有过(并可能仍会有)重构。尽管部分代码仍有岁月的痕迹,但一直很现代并很好用。
代码在AGPL许可下发布