lynx 是一个全功能的文本网页浏览器,支持HTTP、HTTPS、FTP、Gopher等多种协议。它不显示图像,但可以高效地显示纯文本内容,非常适合在终端、远程SSH会话中使用。
在大多数 Linux 发行版中,可以通过包管理器安装:
sudo apt-get install lynx
sudo yum install lynx
# CentOS 8+使用dnf
sudo dnf install lynx
sudo dnf install lynx
sudo pacman -S lynx
brew install lynx
lynx -version
lynx [选项] [URL或文件]
| 选项 | 说明 |
|---|---|
-accept_all_cookies |
接受所有cookie |
-anonymous |
匿名模式,不发送用户信息 |
-auth=ID:PASSWD |
设置HTTP认证的用户名和密码 |
-cache=NUMBER |
设置缓存中的文档数量 |
-case |
在搜索字符串时区分大小写 |
-cfg=FILE |
指定配置文件 |
-dump |
将格式化输出转储到标准输出并退出 |
-editor=EDITOR |
设置外部编辑器 |
-error_file=FILE |
将错误信息写入文件 |
-force_html |
强制将输入视为HTML |
-get_data |
从stdin读取数据并将其作为URL参数 |
-head |
发送HEAD请求 |
-help |
显示帮助信息 |
-history |
将历史记录保存在lynx历史文件中 |
-image_links |
将图像作为链接处理 |
-index=URL |
设置默认索引文件 |
-link=NUMBER |
从给定URL开始编号链接 |
-localhost |
禁用URL的远程服务 |
-nobrowse |
目录浏览模式 |
-nocolor |
禁用颜色 |
-nolist |
禁用链接列表格式 |
-nopause |
禁用暂停提示 |
-noredir |
防止HTTP重定向 |
-nostatus |
禁用状态消息显示 |
-post_data |
使用POST方法发送表单数据 |
-source |
显示网页源代码 |
-telnet |
禁用Telnet协议 |
-term=TERM |
设置终端类型 |
-useragent="STRING" |
设置User-Agent字符串 |
-validate |
验证URL |
-version |
显示版本信息 |
-vikeys |
启用vi风格的键绑定 |
# 启动lynx浏览器(进入交互模式)
lynx
# 直接打开特定网页
lynx https://www.google.com
# 打开本地HTML文件
lynx index.html
lynx界面通常分为以下几个部分:
| 快捷键 | 功能 |
|---|---|
↑ / ↓ |
上下移动光标(选择链接) |
→ 或 Enter |
跟随当前选中的链接 |
← |
返回上一页 |
g |
前往新URL(Go) |
o |
打开选项菜单 |
p |
打印/保存当前页面 |
/ |
在当前页面搜索 |
n |
查找下一个匹配项 |
? |
显示帮助信息 |
q |
退出lynx(会提示确认) |
Q |
立即退出(不确认) |
a |
添加书签 |
v |
查看书签 |
d |
下载当前链接 |
c |
与服务器建立新连接 |
r |
刷新当前页面 |
Ctrl+R |
重新加载当前页面 |
= |
显示页面信息(URL、标题等) |
Ctrl+G |
取消当前操作 |
z |
停止当前加载 |
m |
返回主页 |
Space |
向下翻页 |
b |
向上翻页 |
# 浏览网页
lynx https://www.example.com
# 浏览本地文件
lynx /path/to/file.html
# 使用匿名模式浏览
lynx -anonymous https://www.example.com
# 查看网页HTML源代码
lynx -source https://www.example.com
# 将源代码保存到文件
lynx -source https://www.example.com > page_source.html
# 查看并格式化源代码
lynx -source https://www.example.com | tidy -i
# 将网页内容转储为纯文本
lynx -dump https://www.example.com
# 转储内容并保存到文件
lynx -dump https://www.example.com > page_content.txt
# 转储并显示链接列表
lynx -dump -listonly https://www.example.com
# 提取页面所有链接
lynx -dump -listonly https://www.example.com | grep -E "^ *[0-9]+\. "
# 提取链接并显示URL
lynx -dump -hiddenlinks=listonly https://www.example.com
# 提取特定域名的链接
lynx -dump -listonly https://www.example.com | grep "example.com"
# 通过POST方法提交数据
echo "username=admin&password=secret" | lynx -post_data https://example.com/login
# 从文件读取POST数据
lynx -post_data -post_file=data.txt https://example.com/submit
# 使用HTTP基本认证
lynx -auth=username:password https://protected.example.com
# 提示输入认证信息
lynx -auth https://protected.example.com
# 只发送HEAD请求检查网站
lynx -head https://www.example.com
# 检查多个网站
for site in google.com github.com stackoverflow.com; do
echo "检查 $site..."
lynx -head https://$site 2>&1 | grep "HTTP"
done
# 自动化填写表单(使用stdin)
echo -e "username\ntest@example.com\nmessage" | lynx https://example.com/contact
# 使用cookie保持会话
lynx -cookie_file=cookies.txt https://example.com
# 统计网页字数
lynx -dump https://www.example.com | wc -w
# 提取网页标题
lynx -dump https://www.example.com | head -n 5 | grep -i "title"
# 查找特定关键词
lynx -dump https://www.example.com | grep -i "keyword"
#!/bin/bash
# 批量获取网页标题
urls=("https://google.com" "https://github.com" "https://stackoverflow.com")
for url in "${urls[@]}"; do
echo "处理: $url"
lynx -dump "$url" | head -n 10
echo "---"
done
#!/bin/bash
# 监控网页内容变化
URL="https://www.example.com"
OLD_FILE="/tmp/old_content.txt"
NEW_FILE="/tmp/new_content.txt"
# 获取当前内容
lynx -dump "$URL" > "$NEW_FILE"
# 比较变化
if [ -f "$OLD_FILE" ]; then
diff "$OLD_FILE" "$NEW_FILE"
fi
# 更新旧内容
mv "$NEW_FILE" "$OLD_FILE"
#!/bin/bash
# 简单的RSS阅读器
RSS_URL="https://example.com/feed.rss"
# 获取并显示RSS内容
lynx -dump "$RSS_URL" | grep -A 2 -B 2 "item\|entry"
#!/bin/bash
# 检查网页中的死链
URL="https://www.example.com"
lynx -dump -listonly "$URL" | awk '{print $2}' | while read link; do
if lynx -head "$link" 2>&1 | grep -q "200 OK"; then
echo "✓ $link"
else
echo "✗ $link"
fi
done
# 生成网页的文本"截图"
lynx -dump https://www.example.com > webpage_screenshot.txt
# 带有颜色的输出(如果终端支持)
lynx -dump -color https://www.example.com | aha > webpage_colored.html
lynx的配置文件通常位于 ~/.lynxrc 或 /etc/lynx.cfg。可以配置以下选项:
# 查看lynx配置
lynx -cfg
# 编辑个人配置文件
vim ~/.lynxrc
# ~/.lynxrc 示例
# 设置默认字符集
CHARACTER_SET:utf-8
# 设置主页
DEFAULT_INDEX_FILE:https://www.google.com
# 启用颜色
COLOR:1
# 设置外部编辑器
EDITOR:vim
# 显示图片链接
IMAGE_LINKS:1
# 保存访问历史
HISTORY_FILE:~/.lynx_history
# 设置用户代理
USERAGENT:"Lynx/2.8.9rel.1"
# 禁用cookie
ACCEPT_ALL_COOKIES:FALSE
| 工具 | 类型 | 特点 | 适用场景 |
|---|---|---|---|
| lynx | 文本浏览器 | 轻量、快速、支持交互、可脚本化 | 服务器环境、远程访问、自动化测试 |
| curl | 命令行工具 | 功能强大、支持多种协议、适合API调用 | HTTP请求、文件传输、API测试 |
| wget | 下载工具 | 递归下载、断点续传、适合批量下载 | 网页镜像、文件下载 |
| links/elinks | 文本浏览器 | 类似lynx,支持框架、表格 | 替代lynx,需要更多功能 |
| w3m | 文本浏览器 | 支持表格、框架、图像显示 | 需要表格支持的文本浏览 |
| Firefox/Chrome | 图形浏览器 | 完整功能、支持JavaScript、扩展 | 日常网页浏览、Web开发 |
A: 可能是字符编码问题,尝试以下方法:
lynx -display_charset=utf-8echo $LANGCHARACTER_SET:utf-8# 强制使用UTF-8编码
lynx -display_charset=utf-8 https://www.example.com
# 转换输出编码
lynx -dump https://www.example.com | iconv -f ISO-8859-1 -t UTF-8
A: lynx 不支持JavaScript执行,因为它是纯文本浏览器。如果需要JavaScript支持,可以考虑:
puppeteer、phantomjscurl获取页面后,用其他工具处理JavaScriptA: 可能是SSL证书问题,尝试:
sudo apt-get install ca-certificates-noverify选项(不推荐):lynx -noverify https://... A: 有多种方式保存页面:
# 1. 使用p键(交互模式)
# 在lynx中按p键,选择保存选项
# 2. 使用-dump选项
lynx -dump https://www.example.com > page.txt
# 3. 保存源代码
lynx -source https://www.example.com > page.html
# 4. 使用wget下载
wget https://www.example.com
-dump选项快速获取网页内容用于脚本处理grep、awk、sed进行文本处理