V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lueying
V2EX  ›  分享创造

nodejs 实现 磁力链接资源搜索 前端: vue 后端: koa2 + MongoDB + Elasticsearch

  •  
  •   lueying ·
    ssstk · 2018-06-20 10:12:00 +08:00 · 4194 次点击
    这是一个创建于 2109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目简介

    • 此项目仅用学习交流技术使用 不做商业用途。
    • 前端站点 项目效果预览 http://findcl.com
    • 源码地址 https://github.com/ssstk/findcl
    • 后端脚本 磁力链接获取 磁力链接解析 入库 Mongodb 定时同步 Elasticsearch
    • 源码地址 https://github.com/ssstk/manget2torrent
    • 无意读到 @keenwon 的 node 磁力搜索引擎的文章,感觉非常有意思,同时也谢谢能把项目分享出来 @keenwon 的项目地址antcolony 实现方式 还是有很大的不同 从获取磁力 到解析磁力

    上线

    • 2018-06-01 网站正式上线。域名是 http://findcl.com
    • 两台 VPS (都是某些云做活动买的 配置低)
    • 第一台部署了 FindCl 站点本身( koa2、nginx )和单个节点的 Elasticsearch
    • 第二台部署了磁力链接爬虫
    • Mongodb 数据库在阿里云(目前有 300W 数据库,每日新收录 3W+的数据)

    项目依赖

    • DHT BT 资源爬虫 磁力链接解析 dhtspider
    • 前端站点 torrent-stream
    • Mongodb 数据库
    • 中文搜索 Elasticsearch.js
    • 定时执行 Mongodb 与 Elasticsearch 的数据同步
    • koa2
    • ...

    存在的问题

    • torrent-stream 解析磁力链接缓慢 需要好几秒 P2P 网络没有资源时还有可能解析不到
    • dhtspider 爬虫 由于服务器带宽是 1m 所以跑到时间长就把带宽跑慢了 现在的做法就是搜集一些磁力链接暂停爬虫 解析完毕之后再启动爬虫
    24 条回复    2018-11-04 18:45:46 +08:00
    oska117
        1
    oska117  
       2018-06-20 11:16:54 +08:00 via Android
    不错,谢谢分享,研究一下
    lueying
        2
    lueying  
    OP
       2018-06-20 13:49:06 +08:00
    @oska117 大家一起学习交流
    isevenfox
        3
    isevenfox  
       2018-06-20 14:23:19 +08:00
    star 一波~ 感谢
    lueying
        4
    lueying  
    OP
       2018-06-20 22:28:12 +08:00
    @isevenfox 谢谢大哥支持
    freemagico
        5
    freemagico  
       2018-06-20 22:38:29 +08:00
    已 star,请问爬虫是从哪里爬磁链的?
    lueying
        6
    lueying  
    OP
       2018-06-20 23:29:39 +08:00
    @freemagico 这里是磁链到爬虫脚本 是加入 DHT 网络 获取到 hashinfo 附上 js 脚本地址 可以瞅瞅 跑跑试试
    https://github.com/ssstk/manget2torrent/blob/master/src/spider/index.js
    hezhile
        7
    hezhile  
       2018-06-21 10:03:05 +08:00   ❤️ 1
    搜索结果的排序依据是什么呢?
    可以按照收录日期排序码?
    lueying
        8
    lueying  
    OP
       2018-06-21 10:20:46 +08:00
    @hezhile 现在是 Elasticsearch 的自己查询的排序
    现在正在添加最新收录排序
    有问题欢迎建[issue]( https://github.com/ssstk/findcl/issues)交流。哇哈哈
    lueying
        9
    lueying  
    OP
       2018-06-21 10:22:26 +08:00
    lueying
        10
    lueying  
    OP
       2018-06-21 10:39:54 +08:00   ❤️ 1
    @hezhile 搜索结果 收录日期排序已经添加完成 上线 !谢谢大哥提的建议 😂 哇哈哈
    wanwan
        11
    wanwan  
       2018-06-22 15:50:51 +08:00
    这类网站比较多啊。
    lueying
        12
    lueying  
    OP
       2018-06-22 16:29:22 +08:00
    @wanwan 有什么好的建议或想法可以提出了哦 咱们可以和别人不一样的哦 ~.~
    我们不一样 ~~~
    artandlol
        13
    artandlol  
       2018-06-23 08:27:13 +08:00 via iPhone
    Docker 化的项目更受欢迎
    lueying
        14
    lueying  
    OP
       2018-06-23 09:56:47 +08:00
    @artandlol 谢谢大佬指点 我搞个发布上来就好了 ~
    artandlol
        15
    artandlol  
       2018-06-23 11:35:35 +08:00
    @sstzma #14 过奖了,小菜一枚。 配合 https://www.v2ex.com/t/383801 这个使用 味道更佳
    Desiree
        16
    Desiree  
       2018-06-23 14:54:02 +08:00
    请问这些数据是从哪里来的?
    lueying
        17
    lueying  
    OP
       2018-06-23 17:18:19 +08:00
    @Desiree 是加入 DHT 网络 获取到 hashinfo 再解析 hsahinfo 获取 BT 种子信息 可以了解下 BitTorrent 协议
    这里是磁链到爬虫源码
    https://github.com/ssstk/manget2torrent/blob/master/src/spider/index.js
    duola
        18
    duola  
       2018-06-24 12:13:13 +08:00
    @sstzma 请问一下,为什么要用两个数据库呢?直接用 Elasticsearch 不就行了吗?
    lueying
        19
    lueying  
    OP
       2018-06-24 14:05:30 +08:00
    @duola ES 团队不推荐完全采用 ES 作为主要存储,缺乏访问控制还有一些数据丢失和污染的问题。ES 没有事务,而且是近实时。成本也比数据库高。但是它的优势在于索引后,方便搜索,这是 mongodb 等数据库干不了的。
    所以,搜索的时候使用 Elasticsearch,进入具体的资源页面,就直接从 mongodb 里取数据。
    当然 小项目玩玩 用什么感觉都无所谓了~
    duola
        20
    duola  
       2018-06-24 15:08:49 +08:00
    @sstzma 这么详细回复,非常感谢!
    Desiree
        21
    Desiree  
       2018-06-24 23:13:01 +08:00
    @sstzma 谢谢回复!
    jinzhe
        22
    jinzhe  
       2018-06-26 15:40:56 +08:00
    搜索了下“藏”
    lueying
        23
    lueying  
    OP
       2018-06-26 16:24:45 +08:00
    @jinzhe 网站所有的资源均来自网络收集,且不保存任何种子 。哇哈哈 ~.~
    sinv
        24
    sinv  
       2018-11-04 18:45:46 +08:00
    @lueying findcl 挂了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3008 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:05 · PVG 19:05 · LAX 04:05 · JFK 07:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.