如何通过Bash命令获取指定URL的HTML源码并输出到终端
终端输出网页HTML源码的Bash命令解决方案
你之前的命令无输出通常有两个核心原因:一是目标站点存在http到https的重定向,curl默认不会跟随重定向;二是很多站点会拦截默认标识的curl请求,拒绝返回内容。
可用方案
方案1:直接输出源码(无需存储变量)
使用如下curl命令即可直接在终端打印返回的HTML源码:
curl -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" 替换为你的目标URL
参数说明:
-L:让curl自动跟随301/302等重定向响应,请求跳转后的目标地址-A:自定义请求的User-Agent,伪装成普通浏览器请求,避免被站点反爬策略拦截
方案2:存储到变量后输出
如果你需要先把源码存到变量再做后续处理,正确写法如下:
# 将源码写入page变量 page=$(curl -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" http://www.cyberciti.biz/) # 输出变量存储的源码 echo "$page"
替代方案:使用wget实现
如果本机安装了wget,也可以用如下命令实现相同效果:
wget -qO - 替换为你的目标URL
参数说明:
-q:开启静默模式,不输出下载进度等无关日志-O -:将请求到的内容输出到标准输出终端,而不是写入本地文件
异常排查
如果执行命令后仍然无返回,可以按以下顺序排查:
- 确认本机网络可以正常访问目标站点,可先尝试在浏览器中打开对应URL验证可用性
- 如果目标站点有更严格的反爬策略,可以按需给curl添加
-e参数设置Referer请求头,或者添加-x参数使用代理访问
内容的提问来源于stack exchange,提问作者NotQuiteSo1337
相关产品推荐
相关产品推荐

