Linux访问网页命令
在Linux终端里访问网页,问网最直接的页命工具是curl。很多人以为浏览网页必须打开浏览器,问网但服务器管理员、页命爬虫开发者、问网甚至调试接口的页命普通程序员,早就习惯了用一行命令把网页“拉”下来。问网curl 就像一把瑞士军刀——它能把HTTP请求发出去,页命把响应内容打印在终端里,问网还能保存成文件。页命
举个真实例子。问网我排查公司某个API是页命否正常时,不会打开Postman,问网而是页命直接敲:
curl -I https://api.example.com/health 这条命令只返回响应头,不下载整个页面。问网如果看到HTTP/2 200,就知道服务活着。要是返回503,那八成是后端挂了。这种效率是浏览器给不了的——你总不能在图形界面里右键查看网络请求吧?
curl的用法远不止“抓个页面”。加个-L参数跟随重定向,-b携带Cookie模拟登录态,-d提交POST表单。比如测试登录接口:
curl -d "username=test&password=123" -X POST https://example.com/login 这玩意儿还能断点续传下载文件,用-C -就能接着上次的进度继续拉。说实话,我下载大文件时几乎不用wget,因为curl的语法更统一,而且几乎所有Linux发行版都预装了它。
不过curl也有短板。它把整个响应塞进终端,遇到几十MB的HTML页面,屏幕直接刷成乱码。这时候得用w3m或lynx——这两个是纯文本浏览器。它们能把网页渲染成可读的文本格式,支持链接跳转,甚至能显示表格。我偶尔在没图形界面的服务器上查文档,就用w3m打开man page的在线版,比翻本地手册快多了。
w3m的操作很朴素。方向键移动光标,回车点链接,q退出。它不加载图片和JavaScript,但正因如此,打开网页的速度快得像本地文件。有一次我远程调试客户的服务器,那台机器连GUI都没装,我全靠w3m查了Stack Overflow的解决方案。你别说,纯文本看代码块反而更清晰,没有广告和侧边栏干扰。
要是连w3m都没有,还有更轻量的方法。用echo配合/dev/tcp直接发HTTP请求,虽然原始,但能救命。举个例子:
exec 3<>/dev/tcp/example.com/80 echo -e "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" >&3 cat <&3 这段脚本手动构造了HTTP报文,然后读取响应。它不依赖任何额外工具,只要bash支持。当然,这属于“硬核模式”,平时没人这么干,但当你被困在一个精简到极致的内核环境时,这招能让你从远程服务器抓取配置脚本。
还有个场景容易被忽略——测试网页是否被墙。我在国内访问某些国外站点时,浏览器直接超时,但用curl配合代理就能确认是网络问题还是站点问题。比如:
curl -x socks5://127.0.0.1:1080 https://www.google.com 如果返回内容,说明代理通畅;如果卡住不动,可能是DNS污染。这种排查思路比打开浏览器看“无法访问此网站”要精确得多。
最后提个细节。curl默认不保存Cookie,但用-c和-b就能维护会话状态。比如先访问登录页获取token,再带着token请求数据接口,整个过程可以写成脚本自动化。我写过一个小工具,每天凌晨用curl从内部系统拉取报表,再通过邮件发送,全程无人值守。这比人工打开网页点击下载靠谱多了——至少不会忘记周五下午的例行操作。
说真的,Linux命令行访问网页的精髓在于“可控”。你能精确控制每个请求头、每个参数、每次重定向,而不是被浏览器牵着鼻子走。一旦习惯了这种掌控感,再回到图形界面反而觉得别扭。毕竟,效率这东西,谁用谁知道。
