V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Lime
V2EX  ›  分享发现

分享一个 Go 写的 BT 种子爬虫

  •  
  •   Lime · 2016-08-08 00:07:24 +08:00 · 10668 次点击
    这是一个创建于 3036 天前的主题,其中的信息可能已经有所发展或是发生改变。
    主要实现了 BitTorrent DHT 协议。爬虫的原理主要是利用 DHT 协议监听别人的 announce_peer 消息,然后根据得到的 infohash 利用 BEP-9 下载 medata info(BT 种子文件的主要部分,可以认为是种子文件)。粗略估计了下,不到 24 小时左右下载了 10w+个 BT 种子。

    里边的数据看了下,有很多电影、 pdf 、 mp3 、软件等资源,包括很多限制级资源,比如色情视频。你可以拿它做数据分析,也可以用它来建一个 BT 搜索引擎,不过要小心版权问题,也要做好被墙的心理准备(涉及敏感资源)。

    最后 http://bthub.io 是用它建的一个 BT search engine 。

    Github: https://github.com/shiyanhui/dht
    第 1 条附言  ·  2016-08-08 22:42:32 +08:00
    为那些没有 Go 环境而又懒的人,准备好了编译好的二进制可执行文件,包括 Win , Linux 和 OS X 平台的。下载下来解压,直接执行对应平台的程序即可。

    https://github.com/shiyanhui/dht/releases
    第 2 条附言  ·  2016-08-09 15:15:32 +08:00
    准备写一些列文章讲一下,这个原理篇 http://www.jianshu.com/p/5c8e1ef0e0c3
    42 条回复    2016-08-12 13:36:54 +08:00
    batnss
        1
    batnss  
       2016-08-08 01:01:42 +08:00 via Android
    支持下
    Asimov
        2
    Asimov  
       2016-08-08 01:04:19 +08:00
    Lonely
        3
    Lonely  
       2016-08-08 01:39:02 +08:00 via iPhone
    interesting
    zwpaper
        4
    zwpaper  
       2016-08-08 08:16:20 +08:00 via iPhone
    有意思,周末看看代码,学习一下
    Lime
        5
    Lime  
    OP
       2016-08-08 08:49:43 +08:00 via iPhone
    @Asimov 嗯,看了下这个的源代码,关于爬虫的原理是类似的,实现上他没有遵循官方 BT 协议规范,比如 routingtable 的实现,而且 dht 协议也只实现了一部分, transaction 的处理则没有。不过他这样做也没错,因为两者的目标不一样。他那个是一个纯 BT 爬虫,我则希望按照官方文档实现,然后通过更改参数,提供标准模式和爬虫模式,也就是说,我这个既可以用来做一个标准的 DHT 组件,也可以用来爬 BT 种子。
    scnace
        6
    scnace  
       2016-08-08 08:57:09 +08:00 via Android
    已 star 支持。。有空玩玩😊
    v2014
        7
    v2014  
       2016-08-08 09:02:15 +08:00
    好多黑方块,编码有问题吧
    Lime
        8
    Lime  
    OP
       2016-08-08 09:16:35 +08:00
    @v2014 好眼力!因为爬来的内容是多种语言,看了下竟然还有阿拉伯语的,所以猜测他们制作种子的时候有的不是用 utf-8 做的,所以 utf8 解不了...
    youmuyoua
        9
    youmuyoua  
       2016-08-08 10:37:28 +08:00
    厉害!
    fising
        10
    fising  
       2016-08-08 10:40:42 +08:00 via iPhone
    每隔一段时间就有人来宣传自己造的 DHT 轮子
    Lime
        11
    Lime  
    OP
       2016-08-08 10:51:34 +08:00
    @fising 哈哈
    la0wei
        12
    la0wei  
       2016-08-08 11:12:22 +08:00
    @Lime @fising kat 倒下后更加需要这样的轮子
    crayygy
        13
    crayygy  
       2016-08-08 11:32:38 +08:00
    随手搜了个”生活大爆炸“,结果也是有点感人。还好工位后面没人= =
    Lime
        14
    Lime  
    OP
       2016-08-08 11:34:26 +08:00
    @crayygy = =
    dxwwym
        15
    dxwwym  
       2016-08-08 12:24:44 +08:00 via iPhone
    学习
    m5Rc6ufZ9fj4tdoY
        16
    m5Rc6ufZ9fj4tdoY  
       2016-08-08 12:46:06 +08:00
    感觉结果不太准确啊。。结果感人
    Lime
        17
    Lime  
    OP
       2016-08-08 14:33:34 +08:00 via iPhone
    @mangoim bthub.io 是用 es 来全文检索的
    itopidea
        18
    itopidea  
       2016-08-08 16:23:55 +08:00
    我一直用这个 http://cli.info/
    unique
        19
    unique  
       2016-08-08 16:30:10 +08:00
    刚好在研究这个, mark
    Lime
        20
    Lime  
    OP
       2016-08-08 17:07:52 +08:00
    @itopidea 这个前端框架貌似用的是 weui
    Lime
        21
    Lime  
    OP
       2016-08-08 19:12:54 +08:00
    上 Github Go trend 了,内牛满面
    doomhack
        22
    doomhack  
       2016-08-08 21:14:47 +08:00
    @Lime 小白一个,求怎么使用
    Lime
        23
    Lime  
    OP
       2016-08-08 21:39:03 +08:00
    @doomhack

    # 安装 Go ,设定 GOPATH
    # go get github.com/shiyanhui/dht
    # 进入到 GOPATH/github.com/shiyanhui/dht ,然后执行 go run example/spider/spider.go

    就可以看到效果啦
    doomhack
        24
    doomhack  
       2016-08-08 21:55:28 +08:00
    @Lime 谢谢指点!
    Lime
        25
    Lime  
    OP
       2016-08-08 22:43:12 +08:00
    @doomhack release 了编译好的二进制,你可以下载 https://github.com/shiyanhui/dht/releases
    matrix67
        26
    matrix67  
       2016-08-08 22:46:59 +08:00
    配合这两个图有奇效



    Lime
        28
    Lime  
    OP
       2016-08-09 09:02:06 +08:00
    @matrix67 这个厉害!
    Lime
        29
    Lime  
    OP
       2016-08-09 09:04:10 +08:00
    另外,那个软件是什么?
    isbase
        30
    isbase  
       2016-08-09 13:59:30 +08:00 via Android
    @matrix67 这个软件是什么呢?
    yanyuan2046
        31
    yanyuan2046  
       2016-08-09 15:55:01 +08:00
    实现的相当漂亮,是我见过最好的
    tinyproxy
        32
    tinyproxy  
       2016-08-09 16:10:17 +08:00
    T_T 全是乱码。。。是我打开姿势的问题么

    http://bthub.io/search?key=1024

    Lime
        33
    Lime  
    OP
       2016-08-09 18:32:00 +08:00
    @tinyproxy 改成 GBK 后是这样的

    http://imgur.com/a/Z63wH
    Lime
        34
    Lime  
    OP
       2016-08-09 18:35:53 +08:00
    doomhack
        35
    doomhack  
       2016-08-09 23:12:38 +08:00
    @Lime 感谢!!!!
    bluesky139
        36
    bluesky139  
       2016-08-10 08:34:58 +08:00 via Android
    @Lime 请问内网环境下是否有效,能不能抓到?
    jasondan
        37
    jasondan  
       2016-08-10 17:53:55 +08:00
    楼主威武
    Lime
        38
    Lime  
    OP
       2016-08-10 22:14:38 +08:00
    @bluesky139 在内网还不行,目前还不能穿透 NAT
    Garantion
        39
    Garantion  
       2016-08-11 23:05:43 +08:00
    @Lime burp suite
    yunji3344
        40
    yunji3344  
       2016-08-12 12:19:37 +08:00
    http://www.7tdy.cc 看电影而已
    redmofang
        41
    redmofang  
       2016-08-12 12:32:53 +08:00
    bthub 已经 502 了
    Lime
        42
    Lime  
    OP
       2016-08-12 13:36:54 +08:00
    @redmofang 嗯,刚才在调试,有点问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:29 · PVG 17:29 · LAX 01:29 · JFK 04:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.