我一直在尝试构建一个Web爬网程序,该爬网程序生成所遇到文件的校验和。我不想为无限流(Internet广播,实时视频源等)生成校验和,因为它会挂住搜寻器并最终导致其耗尽内存。因此,我需要一种方法来过滤掉它们。
我尝试检查content-length
是否设置为-1,因为流媒体不报告内容长度,但是发现许多其他服务器选择不报告其文档中的内容长度,或者使用不报告内容的渐进式下载长度。我当前的解决方案是检查content-type
是video/*
还是audio/*
且content-length
是-1,但这有可能丢弃渐进下载的长度不限的媒体文件。
有没有一种简便的方法可以测试流是否无限长而无需检查流是否超过任意值?对于这个项目,我的语言是Java与JSoup,如果有关系的话。
最佳答案
有没有一种简便的方法可以测试流是否无限长而无需检查流是否超过任意值?
既没有一种简单的方法,也没有一种硬性的方法来确定在结束之前可以从任意流中读取多少字节。实际上,即使Web服务器发送了指示特定内容长度的响应标头,也不能保证它不会发送比广告内容更多的内容,甚至不能保证内容是有限的。
即使您使用您描述的启发式方法,但如果内容长于您准备容纳的时间,就需要准备切断它。