4

好的,所以我遇到了一个奇怪的问题,我不完全确定如何解释......基本上我正在尝试解码一个 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不在于其他东西 .. 想法?

更新 2: 好的,所以我现在已经尝试了几次,我正在缩小问题的范围,这个问题似乎只发生在 torcache 和 torrage 链接上。来自其他网站的链接似乎可以正常工作或按预期工作......所以这里有一些链接和我从 thrre 不同方法得到的结果:

   *** 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,我尝试实际下载比较的笔记本电脑是相同的

4

1 回答 1

6

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

$ 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 确实会查看接收到的标头以查看它是否真的需要解压缩。

于 2013-06-13T23:04:13.403 回答