如何伪造主机并多线程下载一个文件?

如何伪造主机并多线程下载一个文件?

我想下载 227 GB 的数据文件这里但现在我大概需要 20-24 小时。Torrent 协议对于下载中的任务和/或并行进程来说非常棒,但主机将连接数限制为一个 (1)。建议

  • 你能伪造主机并在这里多线程执行任务wget吗?......我认为不容易......伪代码,我认为禁用目录和禁用主机目录是有意义的;推迟机器人;只取.bin文件;说我的浏览器是火狐;下载到目录/tmp/;线程数 150

    wget -n 150 -nd -nH -e robots=off -A".bin" -U mozilla \
        -P /tmp/ http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
    
  • 排除proxilla,因为不在 apt-get 中

特征

  • 主机将连接数限制为一 (1)。
  • 我在 axel 中设置了 150 个连接,因为我的最大下载速度是 30 MB,所以应该获得 15 MB/s(=0.1 MB/s * 150)的下载速度,但现在估计开始时的时间为 21 小时。
  • VPN 尝试:只要主机开始将用户列入黑名单。

将 axel 排除在任务之外

Axel 甚至在连接数为 1-16 时也失败,并且还需要进度条 ( -a)

# http://www.cyberciti.biz/tips/download-accelerator-for-linux-command-line-tools.html
axel -a -n 1 -s 16 http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
Initializing download: http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
File size: 243615796224 bytes
Opening output file tiny_images.bin
Error opening local file

从任务中排除 aria2c

  • 即使有 2-16 个连接,主机也会导致故障;-c如果中断,允许继续下载,-x 10并且-s 10每个服务器最多允许 10 个连接

    # http://askubuntu.com/a/507890/25388
    aria2c -c -x10 -s10 http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
    
    08/17 21:27:25 [ERROR] CUID#6 - Download aborted. URI=http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
    Exception: [AbstractCommand.cc:398] errorCode=16 URI=http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
      -> [RequestGroup.cc:714] errorCode=16 Download aborted.
      -> [AbstractDiskWriter.cc:222] errNum=13 errorCode=16 Failed to open the file /media/masi/SamiSwapVirtual/tiny_images.bin, cause: Permission denied
    
    08/17 21:27:25 [NOTICE] Download GID#1e5701ee3b4d44f4 not complete: /media/masi/SamiSwapVirtual/tiny_images.bin
    
    Download Results:
    gid   |stat|avg speed  |path/URI
        ======+====+===========+=======================================================
    1e5701|ERR |       0B/s|/media/masi/SamiSwapVirtual/tiny_images.bin
    
    Status Legend:
    (ERR):error occurred.
    
    aria2 will resume download if the transfer is restarted.
    If there are any errors, then see the log file. See '-l' option in help/man page for details.
    

Ubuntu:16.04 64 位
LTE 路由器:TP-link MR220,带最新固件
LTE 连接:30/20 MB 用于下载/上传
下载硬盘:2 TB ext4 Transcend

答案1

不幸的是,你的要求几乎是不可能的。你无法强制服务器允许多个连接。

如果他们根据 IP 限制连接数,那么你需要为每个连接发送不同的 IP。此时,你需要一个程序,可以将来自不同计算机的同一文件的多个部分与即时创建的部分合并。这在技术上应该是可行的,但肯定不切实际,因为你必须找到这样的程序,而且据我所知,这样的程序并不存在。


我能想到的只有两个选择:

  1. 按照允许的速率下载。
  2. 将文件从该服务器转载到另一台服务器,然后从该服务器下载。
    • 这是最快的选择,但最好利用数据中心中现有的服务器。
    • 对于大多数人来说这不是一个实用的选择。

话虽如此,我自己测试了下载,它提供了我的互联网计划仅用一个连接就可以处理的绝对最大速度。

我有一个 60 Mbit 的连接,因此我可以以 5.5MBps - 7.5MBps(兆字节每秒)的速度下载文件。从纽约大学下载的速度为 7.2MBps,这完全合理,并且超过了我的平均最高速度 6.5MBps。这意味着以我的速度下载大约需要 10 个小时。

我怀疑你的连接速度是 30Mbit,因此需要花费两倍的时间,所以我估计瓶颈在你那边,而不是纽约大学。

相关内容