一尘不染

是否可以使用Linux命令从HTTP服务器仅读取前N个字节?

linux

这是问题。

给定URL http://www.example.com ,我们可以从页面中读取前N个字节吗?

  • 使用 wget ,我们可以下载整个页面。
  • 使用 curl ,有-r,0-499指定前500个字节。似乎解决了问题。

您还应该知道,许多HTTP / 1.1服务器都未启用此功能,因此当您尝试获取范围时,您将获得整个文档。

  • 在python中使用 urlib 。这里有类似的问题,但根据康斯坦丁(Konstantin)的评论,真的是这样吗?

上一次我尝试该技术时,它失败了,因为实际上不可能从HTTP服务器中仅读取指定数量的数据,即隐式读取所有HTTP响应,然后再从中读取前N个字节。
因此,最后您最终下载了整个1Gb恶意响应。

因此问题在于,实际上我们如何从HTTP服务器读取前N个字节?

问候与感谢


阅读 255

收藏
2020-06-07

共1个答案

一尘不染

curl | head -c 499

要么

curl <url> | dd bs=1 count=499

应该做

还有一些更简单的工具,可能具有更强大的可用性,例如

    netcat host 80 <<"HERE" | dd count=499 of=output.fragment
GET /urlpath/query?string=more&bloddy=stuff

HERE

要么

GET /urlpath/query?string=more&bloddy=stuff
2020-06-07