googler 完全指南:在终端命令行中高效执行 Google 搜索的实战手册

原创2026-10-14 17:44:441,897 阅读
文章标签:开发工具

googler 完全指南:在终端命令行中高效执行 Google 搜索的实战手册

googler 是一个运行在终端里的 Google 搜索利器,支持网页、新闻、视频与指定站点搜索,直接展示标题、URL 与摘要,并可在命令行内打开浏览器、翻页、连续发起新查询。本文以仓库 README.md 为主体,结合 googler 单文件脚本源码、Makefile 与 tests/test_googler.py 测试用例,系统讲解安装部署、全部命令行参数、交互式 omniprompt、配色定制、代理与浏览器集成等实战要点,读完即可上手并深入理解其内部实现。

一、googler 是什么

googler 是一个从命令行对 Google 发起搜索(web、news、videos 与 site search)的强力工具。每次搜索会展示每条结果的标题、URL 和摘要,并可以直接在终端里用浏览器打开结果。结果按页抓取(支持翻页导航),并且支持在同一个 googler 实例中连续进行多次搜索(non-stop searches)。

它最初是为了满足没有 X 图形环境的 headless 服务器而生,可以很方便地与文本浏览器(w3m、lynx 等)集成;但如今它已经成长为非常灵活的工具:可以一次抓取任意数量的结果、从任意位置开始显示、按任意时间段过滤、通过别名快速搜索任意数量的网站、轻松切换搜索域名……所有这些都发生在一个干净、无广告、无杂散 URL 的界面中。配套的 shell 补全脚本让你无需记忆任何选项。googler 与 Google 没有任何关联(not affiliated to Google in any way),这一点在 README 中有明确声明。

二、功能特性总览

根据 README.md 的 Features 一节,googler 的核心能力包括:

  • Google Search、Google Site Search、Google News、Google Videos 四种搜索模式;
  • 快速且干净:无广告、无杂散 URL、无杂乱内容,支持自定义配色;
  • 在 omniprompt 中导航结果页、在浏览器中打开 URL;
  • 借助 googler @t 附加脚本实现零成本的基于关键字的站点搜索;
  • 为 Bash、Zsh、Fish 提供搜索关键字与选项补全脚本;
  • 一次抓取 n 条结果、从第 n 条结果开始显示;
  • 可关闭自动拼写纠正、搜索精确关键字;
  • 指定时间范围、国家/域名(默认全球/.com)、语言;
  • 支持 Google 关键字语法(如 filetype:mime、site:somesite.com);
  • 直接打开第一条结果(类似 I'm Feeling Lucky);
  • 不退出程序即可在 omniprompt 中发起新一轮搜索;
  • 支持 HTTPS 代理、自定义 User Agent、默认强制 TLS 1.2;
  • 文档与 man page 详尽,附大量使用示例;
  • 依赖极简(minimal dependencies)。

三、安装与部署

3.1 依赖要求

googler 需要 Python 3.6 或更高版本,且每个 minor 版本仅支持最新的 patch 版本。它本身是单文件、无第三方运行时依赖的 Python 脚本。

在 omniprompt 中使用 c 键把 URL 复制到剪贴板时,googler 会查找系统剪贴板工具:在 Linux 上依次查找 xsel、xclip、termux-clipboard-set;在 macOS 上使用默认安装的 pbcopy;在 Windows 上使用默认安装的 clip。此外,在没有 X11 的环境下,它还支持通过 GNU Screen 和 tmux 的复制粘贴缓冲区完成复制(从源码 googler 的 copy_url 实现可以看到,其探测顺序为 xsel → xclip → wl-copy → termux-clipboard-set → pbcopy/clip,之后还会回退到 tmux set-buffer 与 screen -X readbuf)。

3.2 从包管理器安装

推荐直接使用发行版包管理器安装 googler。若包管理器中的版本过旧,可改用其他安装方式。googler 已进入 Arch Linux、CentOS、Debian、Fedora、openSUSE、Ubuntu 等多个发行版仓库,并可通过 Snap Store 以 snap install googler 安装。

给打包者的提示:googler v2.7 及以后版本内置了"原地自升级(in-place self-upgrade)"机制,打包发行前如希望禁用该机制,可运行:

$ make disable-self-upgrade

该 target 在 Makefile 中实现:通过 sed 把脚本内的 ENABLE_SELF_UPGRADE_MECHANISM = True 改写为 False,从而在打包时彻底关闭自升级入口。

3.3 从源码安装

有 git 时直接克隆本仓库;否则可下载最新稳定版或开发版压缩包。安装到默认位置(/usr/local):

$ sudo make install

卸载 googler 及相关文档:

$ sudo make uninstall

make 支持 PREFIX 变量,可安装到其他位置。从 Makefile 可以看到,install 会把可执行文件装入 $(PREFIX)/bin,man page(googler.1,gzip 压缩后)装入 $(PREFIX)/share/man/man1,README 装入 $(PREFIX)/share/doc/googler。

3.4 独立运行与单文件部署

googler 是独立可执行脚本(#!/usr/bin/env python3),在 Termux 这类环境中也能直接运行。从脚本所在目录:

$ ./googler

由于整个工具就是仓库根目录下的 googler 这一个 Python 文件,你也可以只下载这一个文件部署:将其放到 PATH 中并赋予可执行权限,随后用 sudo googler -u 让 googler 完成自我升级。若想跟随开发主线(风险较高),可在自升级时加上 --include-git 获取 git master 版本。

3.5 自升级机制(源码视角)

自升级开关在脚本中定义为 ENABLE_SELF_UPGRADE_MECHANISM = True(googler),且仅在非 Windows 平台注册 -u/--upgrade 与 --include-git 选项(googler)。main() 中检测到 opts.upgrade 后调用 self_upgrade(include_git=...) 并立即退出(googler)。self_upgrade 通过 download_latest_googler 下载最新版本到临时文件,再用 self_replace 原地替换当前脚本,替换时保留原文件的属主与权限位。

3.6 Shell 补全

Bash、Fish、Zsh 的搜索关键字与选项补全脚本分别位于 auto-completion/ 目录下的 bash/googler-completion.bash、fish/googler.fish、zsh/_googler 子目录中。安装方式请参考所用 shell 的手册。补全能力让 googler 'hello w<TAB> 这类带引号的关键字也能自动补全。

四、命令行用法速览(19 个实用示例)

以下示例来自 README.md,可直接复制使用:

  1. 搜索 hello world:

    $ googler hello world
    
  2. 抓取 15 条结果、时间限定最近 14 个月、从第 3 条结果开始、限定站点 imdb.com(关键字 jungle book):

    $ googler -n 15 -s 3 -t m14 -w imdb.com jungle book
    

    或用 --from/--to 限定到 2016-04-04 至 2016-12-31 的区间:

    $ googler -n 15 -s 3 --from 04/04/2016 --to 12/31/2016 -w imdb.com jungle book
    
  3. 读取 gadgets 的最新新闻:

    $ googler -N gadgets
    
  4. 从 Google India 服务器以英文搜索 IPL cricket:

    $ googler -c in -l en IPL cricket
    
  5. 搜索 PyCon 2020 的视频:

    $ googler -V PyCon 2020
    
  6. 搜索带引号的精确文本:

    $ googler it\'s a "beautiful world" in spring
    
  7. 搜索指定文件类型:

    $ googler instrumental filetype:mp3
    
  8. 关闭自动拼写纠正(例如精确搜索 googler 而不是被纠正成 google):

    $ googler -x googler
    
  9. I'm Feeling Lucky 搜索(直接打开第一条结果并退出):

    $ googler -j leather jackets
    
  10. 多站点限定搜索(可重复使用 -w):

    $ googler -w amazon.com -w ebay.com digital camera
    

    站点限定在 omniprompt 中会持续生效,后续新搜索仍然沿用。

  11. 位置参数拼接与别名创意:位置参数会以空格拼接成最终查询串,所以可以玩出各种别名,例如始终排除某个站点:

    $ alias googler='googler " -site:seoarticlefactory.com"'
    $ googler '<hugely popular keyword filled with SEO garbage>'
    
  12. 定义单词查询别名:

    alias define='googler -n 2 define'
    
  13. 在 omniprompt 中搜索关键字 n、p、o、O、q、g keywords 或结果序号:由于这些会被 omniprompt 当作命令解释,需要加 g 前缀,例如:

    g n
    g g keywords
    g 1
    
  14. 输入输出重定向(管道场景必须加 -C 关闭控制字符):

    $ googler -C hello world < input > output
    
  15. 管道输出:

    $ googler -C hello world | tee output
    
  16. 自定义配色(例如针对 Solarized Dark 设计的暖色方案):

    $ googler --colors bjdxxy google
    $ GOOGLER_COLORS=bjdxxy googler google
    
  17. 通过 HTTPS 代理走流量(例如本机 Privoxy 监听 8118 端口):

    $ googler --proxy localhost:8118 google
    

    默认情况下,若环境变量 https_proxy 已定义,googler 会自动使用它。

  18. 引号内关键字自动补全(配合补全脚本):

    $ googler 'hello w<TAB>
    
  19. 获取更多帮助:

    $ googler -h
    $ man googler
    

五、命令行参数全解

googler -h 输出的完整用法如下(与 README.md 中 Cmdline options 一节一致):

usage: googler [-h] [-s N] [-n N] [-N] [-V] [-c TLD] [-l LANG] [-g CC] [-x]
               [--colorize [{auto,always,never}]] [-C] [--colors COLORS] [-j] [-t dN] [--from FROM]
               [--to TO] [-w SITE] [-e SITE] [--unfilter] [-p PROXY] [--notweak] [--json]
               [--url-handler UTIL] [--show-browser-logs] [--np] [-4] [-6] [-u] [--include-git] [-v] [-d]
               [KEYWORD [KEYWORD ...]]

Google from the command-line.

各参数的含义与默认值如下(默认值均可在 googler 的 parse_args 源码中逐一印证):

参数 说明
KEYWORD 搜索关键字(位置参数),多个关键字自动以空格拼接成查询
-h, --help 显示帮助并退出
-s N, --start N 从第 N 条结果开始显示(默认 0)
-n N, --count N 显示 N 条结果(默认 10)
-N, --news 搜索新闻板块
-V, --videos 搜索视频板块
-c TLD, --tld TLD 按国家/地区搜索,使用顶级域名 .TLD,如 in 表示印度
-l LANG, --lang LANG 以语言 LANG 显示结果
-g CC, --geoloc CC 按国家代码 CC 做地理定位搜索(与 TLD 使用相同的国家代码)
-x, --exact 关闭自动拼写纠正
--colorize [{auto,always,never}] 是否彩色输出;默认 auto(stdout 是 tty 时才启用颜色);不带参数使用等价于 --colorize=always
-C, --nocolor 等价于 --colorize=never
--colors COLORS 设置输出颜色(六字母字符串,详见后文 Colors 一节)
-j, --first, --lucky 在浏览器中打开第一条结果并退出
-t dN, --time dN 时间限定:[h5(5 小时)、d5(5 天)、w5(5 周)、m5(5 个月)、y5(5 年)]
--from FROM 日期区间的起始日期/月/年;必须使用带斜杠的美式日期格式,如 2/24/2020、2/2020、2020;可与 --to 搭配,并覆盖 -t/--time
--to TO 日期区间的结束日期/月/年;格式同 --from
-w SITE, --site SITE 限定站点搜索(可重复使用,内部 action='append')
-e SITE, --exclude SITE 从结果中排除指定站点(可重复使用)
--unfilter 不过滤相似结果
-p PROXY, --proxy PROXY 通过 HTTP 代理走流量;格式为 [http://][user:password@]proxyhost[:port];默认值取自环境变量 https_proxy
--notweak 关闭 TCP 优化与强制 TLS 1.2
--json 以 JSON 格式输出结果;隐含 --noprompt
--url-handler UTIL 使用自定义脚本或 CLI 工具打开结果
--show-browser-logs 不抑制浏览器进程的 stdout/stderr 输出
--np, --noprompt 搜索完直接退出,不进入交互提示
-4, --ipv4 仅使用 IPv4 连接(默认 IPv4 优先、IPv6 兜底)
-6, --ipv6 仅使用 IPv6 连接
-u, --upgrade 执行原地自升级
--include-git 与 --upgrade 搭配时,获取最新的 git master 版本
-v, --version 显示版本号并退出(当前仓库源码中版本为 4.3.2,见 googler)
-d, --debug 开启调试日志

源码视角:parse_args 是标准的 argparse.ArgumentParser 扩展(GooglerArgumentParser),其中几个值得注意的实现细节:

  • -p/--proxy 的默认值通过 https_proxy_from_environment() 即 os.getenv('https_proxy') 注入(googler),所以文档说"默认使用环境变量 https_proxy";
  • -n 的默认值 10、-s 的默认值 0 都在参数定义处写死(googler);
  • --colors 的默认值优先取环境变量 GOOGLER_COLORS,否则回退到默认配色串 GKlgxy(googler);
  • -u/--upgrade 仅在 ENABLE_SELF_UPGRADE_MECHANISM 为真且非 Windows 平台时注册;
  • -C 在解析完成后把 colorize 强制设为 never(googler);
  • 另有两个隐藏调试选项 -D/--debugger(进入 IPython/pdb 交互 DOM)与 --parse(解析转储的 HTML),仅用于开发者调试。

六、omniprompt:终端内的交互式搜索 REPL

不带 --np 运行时,googler 会在显示结果后进入 omniprompt(即 googler 中 GooglerCmd 类实现的 REPL),支持不退出程序连续搜索。可用按键如下:

按键/输入 动作
n / p 抓取下一页 / 上一页搜索结果
index(数字) 在浏览器中打开对应序号的结果
f 跳回第一页
o [index|range|a ...] 打开空格分隔的结果序号、数字区间(区间内不支持 sitelinks)或全部(a);不带参数则用浏览器打开当前搜索
O [index|range|a ...] 与 o 相同,但尝试用 GUI 浏览器打开
g keywords 以原始选项对 keywords 发起一次新的 Google 搜索;omniprompt 按键与序号需用 g 前缀转义(如 g n、g 1)
c index 把指定结果的 URL 复制到剪贴板
u 切换 URL 展开/折叠
q、^D、双击 Enter 退出 googler
? 显示 omniprompt 帮助
其他输入 以原始选项发起一次新搜索

源码视角:cmdloop 中的命令分发逻辑清晰可见(googler):f 跳首页、g 前缀触发新搜索、o/O 打开结果、p 上一页、q 退出、x 精确搜索、unfilter 关闭过滤、? 打印帮助、纯数字命中 self._urltable 则直接 open_url、u 切换 Result.urlexpand、c <index> 调 copy_url,其余输入一律当作新关键字走 do_google。n/p 翻页底层由 GoogleUrl.next_page()(_start += _num)与 prev_page()(回退一页,已在第一页时抛 ValueError)驱动(googler)。

七、配置方案:用别名代替配置文件

googler 没有配置文件——这是刻意设计,为了保持工具的速度并避免不同操作系统之间的差异。用户完全可以用**别名(alias)**享受配置文件的好处(唯一的例外是配色方案,它额外支持通过环境变量 GOOGLER_COLORS 定制)。这样也无需记忆任何选项。

例如在 bash/zsh/ksh 中定义:

alias g='googler -n 7 -c ru -l ru'

此后 g 会从 Google Russia 服务器抓取 7 条结果,并优先显示俄语内容。

别名同时实现了配置文件的两种作用:

  • 持久设置:用户调用 g 时自动展开为偏好的默认参数;
  • 覆盖设置:得益于 Python argparse 的工作方式,googler 被写成"命令行传入的选项完全覆盖别名中的设置"。所以同一用户运行 g -l de -c de -n 12 hello world 时,会从 Google Germany 服务器返回 12 条结果,并优先显示德语内容——别名里预设的 -c ru -l ru -n 7 被彻底覆盖。

除了别名,googler 还通过环境变量提供少量"配置":

  • GOOGLER_COLORS:六字母配色串,优先级等同 --colors;
  • DISABLE_URL_EXPANSION:设置后结果只显示域名而非完整 URL;
  • BROWSER:指定打开结果的浏览器;
  • https_proxy:代理默认值;
  • DISABLE_PROMPT_COLOR=1:强制关闭彩色 omniprompt(见故障排查一节)。

八、googler @t:零成本的关键字站点搜索

googler @t 是 Google Site Search 的便捷附加组件,通过别名把"站点限定搜索"进一步简化。仓库中的 auto-completion/googler_at/googler_at 文件包含一整套网站搜索别名。加载方式:

$ source googler_at

或:

$ . googler_at

加载后,搜索 Wikipedia 中的 hexspeak 只需:

$ @w hexspeak

所有别名都以 @ 符号开头(因此得名 googler @t),与普通 shell 命令冲突的概率极低。你也可以自由地向该文件追加自己的别名,并把有趣的别名贡献回上游。

该文件内置了大量站点别名,例如:@w(Wikipedia)、@gh(GitHub)、@so(Stack Overflow)、@hn(Hacker News)、@yt(YouTube)、@imdb(IMDB)、@r(Reddit)、@aw(Arch Wiki)、@man(Ubuntu Manpage)、@python(Python 文档)、@n(Google News,即 googler -N)、@g(普通 Google 搜索)等。它们本质上都是 alias @xx='googler -w 某域名' 的展开,因此可以继续叠加其他 googler 选项,例如:

$ @w -n 5 hexspeak

为了让别名在每次启动 shell 时自动可用,可把 source 语句写进 shell 的 rc 文件(如 ~/.bashrc、~/.zshrc)。

九、颜色定制(Colors)

googler 允许通过一个六字母字符串定制配色方案,风格类似 BSD 的 LSCOLORS。六个字母依次代表:

  1. 结果序号(indices)
  2. 标题(titles)
  3. URL
  4. 元数据/发布时间(metadata/publishing info,仅 Google News)
  5. 摘要(abstracts)
  6. 提示符(prompts)

六字母串可通过 --colors 选项传入,或通过环境变量 GOOGLER_COLORS 传入。支持的字母含义如下:

字母 颜色/样式
a black
b red
c green
d yellow
e blue
f magenta
g cyan
h white
i bright black
j bright red
k bright green
l bright yellow
m bright blue
n bright magenta
o bright cyan
p bright white
A-H 对应小写字母颜色的粗体版本
I-P 对应小写字母亮色的粗体版本
x normal(正常)
X bold(粗体)
y reverse video(反显)
Y bold reverse video(粗体反显)

默认配色串为 GKlgxy,其含义是:

  • G:粗体亮青色序号(indices)
  • K:粗体亮绿色标题(titles)
  • l:亮黄色 URL
  • g:青色元数据/发布时间
  • x:正常摘要(abstracts)
  • y:反显提示符(prompts)

源码视角:颜色映射表 COLORMAP 定义在 googler,将字母映射为 ANSI 转义序列,例如 a→\x1b<a href="https://link.gitcode.com/i/d3eef0dd64ee830e1fc4db302ed0e754" target="_blank">30m(黑)、i→\x1b[90m(亮黑)、A→\x1b[30;1m(粗体黑)、x→\x1b[0m(正常)、y→\x1b[7m(反显)等;main() 中根据 colorize 的取值(always/auto/never)决定是否实例化 Colors,auto 模式下通过 sys.stdout.isatty() 判断是否为终端([googler)。

需要留意的是:

  • 亮色(实现为 \x1b[90m–\x1b[97m)并非在所有支持彩色的终端模拟器中都可用;
  • 部分终端模拟器会把粗体文本直接显示为亮色;
  • 还有一些终端模拟器需要通过默认关闭的开关来区分粗体与亮色。

具体行为请查阅所用终端模拟器的手册以及 ANSI 转义序列相关文档。

十、与浏览器、终端的集成

10.1 文本浏览器集成

只要设置了 BROWSER 环境变量,googler 即可与多种文本浏览器开箱即用:

$ export BROWSER=w3m

或单次使用:

$ BROWSER=w3m googler query

由于部分图形浏览器会向控制台输出干扰信息,googler 默认抑制浏览器进程的输出,除非 BROWSER 指向已知的文本浏览器白名单:目前为 elinks、links、lynx、w3m、www-browser(源码中即 text_browsers = <a href="https://link.gitcode.com/i/0c60434175a8ea2eb38f6e4809f6a0a2" target="_blank">'elinks', 'links', 'lynx', 'w3m', 'www-browser'],见 [googler)。若你使用其他文本浏览器,需要显式用 --show-browser-logs 开启浏览器输出。从源码看,浏览器输出抑制的判定在 googler:--show-browser-logs 被指定、或 BROWSER 在白名单内时不抑制,否则抑制。

如果设置了 BROWSER 但想用 GUI 浏览器打开结果,可使用 omniprompt 的 O 键:googler 会忽略文本浏览器、转而调用 GUI 浏览器,且 O 操作始终抑制浏览器日志(源码中 O 前缀命令会临时置位 open_url.override_text_browser,见 googler)。

10.2 自定义打开方式:--url-handler

--url-handler UTIL 允许传入自定义脚本或 CLI 工具来打开结果 URL。源码 open_url 函数(googler)说明:设置 open_url.url_handler 后,googler 不再调用标准的 webbrowser.open(),而是以 URL 为参数 spawn 一个子进程调用该工具。

10.3 仅显示域名(Domain-only URL)

若想只在结果中显示域名而不是展开的完整 URL(节省屏幕空间),设置环境变量 DISABLE_URL_EXPANSION 即可。源码中对应的逻辑是 Result.urlexpand = True if os.getenv('DISABLE_URL_EXPANSION') is None else False(googler),即在 omniprompt 中也可用 u 键随时切换展开状态。

10.4 WSL(Windows Subsystem for Linux)

在 WSL 下,googler 默认无法探测到 Windows 侧的 GUI 浏览器。需要显式把 BROWSER 环境变量设置为某个 Windows 可执行文件的路径,例如在 shell 的 rc 中加入:

$ export BROWSER='/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'

十一、JSON 输出与非交互模式

googler 支持机器可读的 JSON 输出(--json),此时结果以 JSON 数组形式打印到 stdout,并隐含 --noprompt 不会进入交互提示。仓库测试 tests/test_googler.py 正是通过 --debug --json 组合抓取结果并断言字段结构:例如 test_default_search 断言每条结果都包含 url、title、abstract 且至少部分结果含 matches;test_videos_search 断言视频结果来自 YouTube 且元数据含 "Uploaded by";test_site_search 验证 --site=en.wikipedia.org 与 site:en.wikipedia.org 两种写法效果一致。

非交互相关的其他选项还有:

  • --np, --noprompt:搜索完直接退出;
  • -j, --first, --lucky:打开第一条结果后退出。

从 googler 的 main() 可以看到,当 --json、-j、--noprompt 或 --parse 任一命中时,程序走非交互分支:抓取后 display_results(json_output=opts.json) 并 sys.exit(0);-j 分支则先 open_url(repl.results[0].url) 打开第一条结果,无结果时向 stderr 打印 No results.。

十二、网络、代理与 TLS 细节

  • 代理:-p/--proxy 的取值格式为 <a href="https://link.gitcode.com/i/43a7c265c65a794ff31231003ef57a33" target="_blank">http://][user:password@]proxyhost[:port];默认回退到环境变量 https_proxy。源码 parse_proxy_spec([googler)负责解析代理串:剥离 http:// 前缀、解析 user:password@ 认证部分,未写端口时默认补 :1080。
  • TCP 优化与 TLS:默认情况下 googler 应用一些 TCP 优化并强制 TLS 1.2(Python 3.4 及以上)。若连接异常,可用 --notweak 同时关闭两者。
  • IPv4/IPv6:默认 IPv4 优先、IPv6 兜底;-4 强制仅 IPv4,-6 强制仅 IPv6。源码 create_socket_connection(googler)在未显式指定地址族时,会把 getaddrinfo 结果按"IPv4 优先"排序后逐个尝试连接。
  • User Agent:脚本内置了固定的 Chrome UA 字符串(googler),以便以浏览器方式获取搜索结果页。

十三、故障排查(Troubleshooting)

  1. 结果数量少于预期:某些情况下 googler 显示的结果会少于请求数(例如 -n 1 时可能一条都不显示)。原因是 Google 会根据地理位置插入 YouTube 等自家服务结果、地图位置等,googler 会尽量剔除这些结果;有时 Google 本身也不返回恰好 10 条(默认值)。作者选择尽量剔除这类结果,代价是更多处理与更多耗时。此时直接按 n 翻页即可获取下一组结果。

  2. 连接问题:默认启用的 TCP 优化与强制 TLS 1.2(Python 3.4+)可能导致连不上,用 --notweak 关闭即可。

  3. Google News 在部分语言不可用:当语言为 dk(丹麦)、fi(芬兰)或 is(冰岛)时 News 服务不可用,请改用 -l en。

  4. macOS iTerm2 彩色提示符异常:可强制使用普通提示符:

    export DISABLE_PROMPT_COLOR=1
    
  5. 非 UTF-8 stdout 报错:googler 启动时会检查 stdout 编码(check_stdout_encoding,googler),若终端编码不是 UTF-8 会打印错误提示并以状态码 1 退出,此时请把终端 locale 切换到 UTF-8。

十四、设计取舍与项目渊源(Notes)

  • 为什么不用 Google 官方 API:Google 官方 Custom Search JSON API 面向"自定义搜索引擎实例"发起查询,免费额度每日仅约 100 次,且作者对未来的计费与策略变动有所保留,也不愿公开暴露个人 API Key。因此 googler 选择"浏览器方式":直接抓取并解析 Google 的 HTML 页面——这是一条开放、免费的技术路径。这一点在 README 的 Notes 中有完整说明。
  • 项目渊源:googler 最初源于 Henri Hakkinen 的早期作品,当前仓库由 Arun Prakash Jana 在原作者多年无维护活动后独立创建并持续演进,保留了原始版权信息,但代码已经完全不同。
  • 第三方生态:社区中有 rofi 集成脚本,以及支持补全建议的 Albert Launcher 插件(awesome-albert-plugins),均可与 googler 配合使用(README 注明了这些资源但未由本项目维护)。

十五、进一步阅读

  • README.md:项目主文档,包含全部特性、安装方式与使用示例;
  • googler:单文件 Python 实现,含参数解析、URL 构造(GoogleUrl 类,googler)、HTML DOM 解析(parse_html,googler)与交互 REPL(GooglerCmd,googler);
  • googler.1:man page,含 --colors、--show-browser-logs 等参数的详细说明;
  • Makefile:安装、卸载与 disable-self-upgrade 目标;
  • auto-completion/:Bash、Fish、Zsh 补全脚本与 googler_at 站点搜索别名;
  • tests/test_googler.py:覆盖默认搜索、新闻/视频、站点限定、精确搜索、时间/日期范围等场景的集成测试;
  • CHANGELOG:版本演进记录;LICENSE:GPLv3 协议。

一句话总结:googler 用一个零依赖的 Python 单文件,把"无广告、可翻页、可连续搜索、可自定义配色、可对接文本浏览器"的 Google 搜索体验完整搬进了终端,无论是 headless 服务器、WSL 还是日常命令行工作流,它都是值得常备的搜索利器。

登录后查看全文
googler