不确定是否可以分享我试图获取其来源的网站,但我认为有必要更好的解释。如果没有提前,我深表歉意
命令:
curl -k -L -s https://www.mi.com
由于某种原因,输出是二进制数据,出现以下错误
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
如何阅读页面 HTML 源代码?谢谢!
答案1
返回的数据是压缩的,您可以curl
通过添加以下命令直接处理解压--compressed
选项:
curl -k -L -s --compressed https://www.mi.com
答案2
只需将其重定向到文件,然后您就可以调查它是什么:
curl -k -L -s https://www.mi.com > outFile
您现在可以使用该file
命令查看outFile
包含的内容:
$ file outFile
outFile: gzip compressed data, from Unix, original size modulo 2^32 135402
所以,您刚刚下载了压缩数据。要查看它,请解压缩:
mv outFile outFile.gz ## gzip requires the .gz extension
gunzip outFile.gz
或者只是使用可以处理压缩数据的工具,例如zmore
:
zmore outFile
或者zcat
:
zcat outFile
答案3
Use "--output -" to tell Warning: curl to output it to your terminal anyway
像
curl -k -L --output - s https://www.mi.com
或--output file
将其保存到类似的文件中
curl -k -L --output filename s https://www.mi.com
并使用您最喜欢的编辑器检查该文件。
答案4
如果您不知道什么格式二进制输出是否会更安全检查输出格式第一的。
否则,正如您已经使用的那样-s
,对于批处理/自动化脚本等静默模式,您可以直接通过管道连接到合适的二进制转换器。
或者,假设 HTTP 输出已被压缩,只需解压它。
检查二进制卷曲输出
curl -k -L -s https://www.mi.com -I
例如,curl -k -L -s https://www.mi.com -I | grep Content-
还将显示其他输出元数据,例如编码(例如 UTF-8)、字节长度(此处为 169747 字节,重定向后):
内容类型:text/html
内容长度:223
内容类型:文本/html;字符集=utf-8
内容长度:169747
注意:上面的HTTP请求被重定向,因此我们从curl获得2个响应和2个响应头。第一个来自重定向,第二个来自最终输出。
- 通过管道
type
检查二进制数据类型(文件类型):
curl -k -L -s https://www.mi.com | type
- 使用
-o
或者--output
保存到文件:
curl -k -L -s https://www.mi.com -o outFile
传递二进制输出(例如传递到图像查看器)
您还可以使用管道将响应标头指示的图像传递Content-Type: image/x-icon
给接受标准输入的查看器,例如feh
显示它:
curl -k -L -s https://www.mi.com/favicon.ico | feh
解压curl输出
二进制输出可能是以下结果HTTP 压缩通常用于节省带宽和加快传输速度。
- 管道输送至
zcat
直接解压查看:
curl -k -L -s https://www.mi.com | zcat
如果curl的输出未按预期压缩,将显示以下警告:
gzip: stdin: 不是 gzip 格式
作为特登互动解释。
- 使用
--compressed
:
curl -k -L -s https://www.mi.com --compressed
作为斯蒂芬已经回答了。