一键搜索引擎
```html 我按下那个按钮,屏幕闪了一下。索引三秒后,键搜二十七个标签页同时打开,索引每个都停在一个搜索框里,键搜光标在闪,索引像一群等着喂食的键搜雏鸟。这是索引我自己攒的“一键搜索”——一个油猴脚本,绑了二十多个网站,键搜从百度、索引必应到小众的键搜代码搜索、学术镜像,索引甚至包括几个需要手动点“我不是键搜机器人”的站点。按一下,索引全发出去。键搜以前查一个冷门报错,我得挨个开网站、复制关键词、粘贴、回车。现在?一次点击,剩下的就是等结果。 这玩意儿不是凭空冒出来的。最早我只有一个书签文件夹,里面塞了十几个搜索页。每次用中键点开一整个文件夹,浏览器卡成幻灯片。后来换成 keyword 快捷方式,在地址栏敲几个字母加空格,确实快了不少。但问题没解决——每个引擎的语法不一样。Google 支持 site: 和 filetype:,百度对引号的处理时灵时不灵,某学术引擎甚至不认减号排除。每次切换,我脑子得像拨号盘一样重新对焦。 真正的转折点是有次找一份 2008 年的 PDF 标准文档。Google 搜不到,必应给了三个广告,百度全是文库付费。我花了四十分钟,最后在一个俄罗斯镜像站里翻到了。当时我就想,能不能让机器替我干这个“到处翻”的活? 于是有了第一版脚本。原理简单到可笑:一个 for 循环,把关键词拼进每个搜索引擎的 URL 模板,然后 window.open 一把梭。但马上遇到问题——浏览器弹窗拦截。二十几个标签页同时开,Chrome 直接封了,还弹个黄条警告“阻止了弹出式窗口”。我改成用 iframe 在后台加载,结果有些网站设了 X-Frame-Options: DENY,白屏。最后找到个偏方:用 GM_openInTab 配合 setTimeout 错开时间,每 200 毫秒开一个。虽然慢点,但稳定。 现在我的搜索流程是这样的:选中一段文字,按 Alt+S,脚本抓取选中内容,弹出一个小面板,上面列着所有引擎的复选框。我通常只勾五六个——Google、必应、百度、GitHub、Stack Overflow,再加一个搜狗微信搜索。点“发射”,标签页像扑克牌一样在后台展开。我泡杯茶,回来挨个看。哪个有结果就留,没结果的直接关掉。整个过程从“人找信息”变成“信息找人”。 当然,这法子有代价。二十几个标签页吃内存,老电脑直接跪。而且有些网站的反爬机制会把你当 DDoS,轻则验证码,重则临时封 IP。我有次用公司网络狂搜,结果整个办公室的出口 IP 被某学术数据库拉黑了两小时。后来学乖了,把并发数降到三个,加个随机延迟,伪装成“手速慢的人类”。 另一个坑是结果去重。不同引擎返回的链接经常重复,尤其那些聚合站。我写了个简单的指纹函数,取 URL 的域名加路径前 30 个字符,扔进 Set 里过滤。但有时候同一篇文章在 http 和 https 下算两个,得手动归一化。这种细节没人教你,全是踩坑踩出来的。 有人问我为什么不直接用那些“元搜索”网站,比如 Dogpile 或者 Searx。试过。它们要么引擎少,要么结果排序黑箱,要么界面丑得像我 2005 年做的第一个网页。自己攒的这套虽然糙,但每个引擎的返回格式我都能控制,想加就加,想删就删。上个月我把一个总弹广告的引擎踢了,换成一个专门搜暗网索引的(当然,得挂 Tor)。 最爽的时刻是找一些犄角旮旯的东西。比如某本 1970 年代苏联数学教材的英译本,或者一个已经关停的论坛里的讨论存档。普通搜索引擎要么没收录,要么排在十页之后。一键撒网出去,总有一个角落能捞到。那种感觉,像同时派了二十个侦探去查案,你坐在家里等电报。 不过我也清楚,这法子只适合我这种“搜索成瘾”的人。普通人打开百度,第一页找不到就放弃了。对他们来说,一键搜索反而是一种干扰——二十七个标签页,光看标题就晕了。工具这东西,终究是匹配思维方式的。我的思维是发散的、并行的,所以需要这种“乱枪打鸟”的界面。你要是习惯线性思考,那还是老老实实用一个引擎,翻到第三页。 昨天我又加了个新功能:搜索结果自动截图存档。因为有些页面过两天就 404 了,或者内容被悄悄修改。脚本在后台把每个标签页截成 PNG,存到本地文件夹,文件名带上时间戳和引擎名。这样即使链接死了,我还能翻出截图对一对。你看,一键搜索最后变成了一键考古。 技术没什么高深的。一个用户脚本,几百行 JavaScript,加上一点对 HTTP 和浏览器行为的理解。但就是这么个粗糙的东西,把我从“搜索苦力”里解放了出来。现在我看到任何不懂的词,第一反应不是“百度一下”,而是“撒网”。一键搜索引擎
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-