V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sunsulei
V2EX  ›  程序员

迅雷地址 thunder://*****的下载文件大小获取。转自问答分类,那边人好少。。

  •  
  •   sunsulei · 2017-06-18 01:44:54 +08:00 · 3887 次点击
    这是一个创建于 2734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬好:

    我这边去网上抓了几十万条的 thunder://xxxxxxx 的链接,现在想获取对应这个链接的文件大小。

    现在的解决方案是去 http://lixian.xunlei.com 用 httpClient 模拟登陆然后通过新建任务来获取到文件大小,有个问题是大部分的链接返回的大小全是 0,抓了一个多星期了才完成了一万多条的数据。

    迅雷客户端新建任务贴地址那里也会经常出现文件大小 0 的情况,但是点击下载后就会出现大小数量,请问我该怎么抓这个数据呢?

    尝试过 wireShark 来抓,发现来往请求不知道是加密还是直接传的流,没整明白。望各位大佬赐教。

    9 条回复    2017-06-18 19:10:17 +08:00
    just1
        1
    just1  
       2017-06-18 01:46:31 +08:00 via Android
    base64 可以得到真实地址吧
    sunsulei
        2
    sunsulei  
    OP
       2017-06-18 01:48:51 +08:00
    @just1 真实地址得到了没用啊,基本上都是电影的链接(正经电影),都是 ftp 的,而且都是死链,全指望着迅雷了。
    NullMan
        3
    NullMan  
       2017-06-18 02:12:24 +08:00
    迅雷链接是 base64(xx + infohash + xx)的值,而迅雷是有种子库的,链接是带 infohash 的,通过 http 请求迅雷种子库,下载种子文件,然后解析种子文件,种子文件里有文件大小的字段。几年前我玩过。
    NullMan
        4
    NullMan  
       2017-06-18 02:16:20 +08:00
    刚 base64_decode 了下,看样子迅雷链接不仅 base64_encode 磁力链接了,还 encode ftp 链接... 没办法咯。
    sunsulei
        5
    sunsulei  
    OP
       2017-06-18 02:21:35 +08:00
    @NullMan 感谢大佬。
    我也知道是 base64 的结果,能不能通过模拟迅雷客户端的下载请求得到文件大小呢?
    xifangczy
        6
    xifangczy  
       2017-06-18 03:21:30 +08:00   ❤️ 2
    迅雷离线文件下载地址里就包含文件大小
    http://gdl.lixian.vip.xunlei.com/download?fid=BTdO/+1MLIgVGnLeDr4vh+xN77FMiqosAAAAAIN8EOOvYw/FpzFUajsRUFQJvKAm&………………

    fid 里就包含有大小

    ```
    import struct
    def parse_fid(fid):
    cid, size, gcid = struct.unpack("<20sq20s", fid.decode("base64"))
    return cid.encode("hex").upper(), size, gcid.encode("hex").upper()
    print parse_fid("BTdO/+1MLIgVGnLeDr4vh+xN77FMiqosAAAAAIN8EOOvYw/FpzFUajsRUFQJvKAm")
    ```

    输出
    ('05374EFFED4C2C88151A72DE0EBE2F87EC4DEFB1',749374028,'837C10E3AF630FC5A731546A3B11505409BCA026')

    749374028 就是大小
    strict
        7
    strict  
       2017-06-18 16:04:31 +08:00 via iPhone
    6666
    sunsulei
        8
    sunsulei  
    OP
       2017-06-18 19:09:34 +08:00
    @xifangczy 感谢提供新思路。

    http://imgur.com/FO1Y4D6

    我的方法是这样获取文件大小的,如果这样获取的是 0 的话,基本上提交离线任务也会一直下载中状态。所以此方案也不行。。
    sunsulei
        9
    sunsulei  
    OP
       2017-06-18 19:10:17 +08:00
    [Imgur]( )
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2405 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:32 · PVG 23:32 · LAX 07:32 · JFK 10:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.