繁体   English   中英

wget和curl在下载时以某种方式修改bencode文件

[英]wget and curl somehow modifying bencode file when downloading

好的,所以我有一个很奇怪的问题,我不确定如何解释...基本上我正在尝试解码一个Bencode文件(.torrent文件),现在我已经尝试了4种或5种不同的脚本通过Google和SO找到运气不佳(在非字典中得到这样的返回,或者从同一个输出错误)

现在我像这样下载.torrent文件

wget http://link_to.torrent file  
 //and have also tried with curl like so 
curl -C - -O http://link_to.torrent

并得出结论,当我以这种方式下载时,文件中发生了某些事情。 原因是我发现此站点将解码您在线上载的.torrent文件,以显示文件中包含的信息。 但是,当我不仅通过浏览器单击链接而是使用上述方法之一下载.torrent文件时,它也不起作用。 那么,有没有人使用这些方法之一遇到过类似的问题,找到了解决问题的方法,甚至解释了为什么会这样? 据我所知,我在网上找不到太多信息,也不知道可以用于我的服务器的解决方法

更新:好的,正如@ coder543建议的那样,比较通过浏览器和wget下载的文件大小。 使用wget样式时它们的大小不相同,因此文件大小较小,因此很明显问题是wget & curl没有其他问题。

Updat 2:好的,所以我现在已经尝试了几次,并且将问题缩小了一点,问题似乎只出现在torcache和torrage链接上。 来自其他站点的链接似乎正常运行或按预期运行...因此,以下是一些链接,我通过以下三种方法得出的结果:

   *** differnet sizes***
 http://torrage.com/torrent/6760F0232086AFE6880C974645DE8105FF032706.torrent
   wget -> 7345 , curl -> 7345 , browser download -> 7376

 *** same size***
 http://isohunt.com/torrent_details/224634397/south+park?tab=summary
 wget -> 7491 , curl -> 7491 , browser download -> 7491

 *** differnet sizes***
 http://torcache.net/torrent/B00BA420568DA54A90456AEE90CAE7A28535FACE.torrent?title=[kickass.to]the.simpsons.s24e12.hdtv.x264.lol.eztv
 wget -> 4890 , curl-> 4890 , browser download -> 4985

  *** same size***
 http://h33t.com/download.php?id=cc1ad62bbe7b68401fe6ca0fbaa76c4ed022b221&f=Game%20of%20Thrones%20S03E10%20576p%20HDTV%20x264-DGN%20%7B1337x%7D.torrent 
  wget-> 30632 , curl -> 30632 , browser download -> 30632

  *** same size***
 http://dl7.torrentreactor.net/download.php?id=9499345&name=ubuntu-13.04-desktop-i386.iso
 wget-> 32324, curl -> 32324, browser download -> 32324

 *** differnet sizes***
http://torrage.com/torrent/D7497C2215C9448D9EB421A969453537621E0962.torrent
wget -> 7856 , curl -> 7556 ,browser download -> 7888

因此,我似乎在某些网站上运行良好,但实际上是在torcache.net和torrage.com上提供文件的网站。 现在,如果我可以直接使用其他站点而不直接依赖缓存的话,那就好了,但是我正在使用bitsnoop api(它将所有数据从torrage.com中拉出,因此这并不是一个选择),如果有人有任何想法的话关于如何解决此问题或为找到解决方案而采取的步骤,将不胜感激!

即使任何人都可以复制结果,也将不胜感激! ...我的服务器是64位体系结构上的12.04 LTS,我尝试进行实际下载比较的笔记本电脑是相同的

对于使用命令行工具检索的文件,我得到:

$ file 6760F0232086AFE6880C974645DE8105FF032706.torrent
6760F0232086AFE6880C974645DE8105FF032706.torrent: gzip compressed data, from Unix

可以肯定的是,使用gunzip解压缩将产生正确的输出。 查看服务器发送的内容,会得出有趣的线索:

$ wget -S http://torrage.com/torrent/6760F0232086AFE6880C974645DE8105FF032706.torrent
--2013-06-14 00:53:37--  http://torrage.com/torrent/6760F0232086AFE6880C974645DE8105FF032706.torrent
Resolving torrage.com... 192.121.86.94
Connecting to torrage.com|192.121.86.94|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.0 200 OK
  Connection: keep-alive
  Content-Encoding: gzip

因此服务器确实报告它正在发送gzip压缩数据,但是wget和curl忽略了这一点。 curl具有--compressed开关,它将为您正确解压缩数据。 即使对于未压缩的文件,这也应该是安全的,它只是告诉http服务器客户端支持压缩,但是在这种情况下,curl会查看接收的标头以查看它是否真正需要解压缩。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM