分享一个 Go 写的 BT 种子爬虫 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Lime
V2EX    分享发现

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

  •  
  •   Lime 2016-08-08 00:07:24 +08:00 11201 次点击
    这是一个创建于 3407 天前的主题,其中的信息可能已经有所发展或是发生改变。
    主要实现了 BitTorrent DHT 协议。爬虫的原理主要是利用 DHT 协议监听别人的 announce_peer 消息,然后根据得到的 infoash 利用 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
    ikw
        4
    ikw  
       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:7: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
    strong>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  
    PRO
       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     Solana     2665 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:50 PVG 13:50 LAX 21:50 JFK 00:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86