你见过 Web 爬虫, 可是你见过 P2P 爬虫吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
CrazySpiderMan

你见过 Web 爬虫, 可是你见过 P2P 爬虫吗?

  •  5
     
  •   CrazySpiderMan
    Fuck-You-GFW 2016 年 2 月 29 日 5932 次点击
    这是一个创建于 3708 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网络爬虫爱好者为了爬取视频, 图片, 文档, 软件, 可能只想到写一个 Web 爬虫, 从各大网站爬取. 但是你知道吗? 这个世界上, 还有 DHT 协议, BitTorrent 协议.

    想想看, 全世界每天有那么多人通过 BT 种子 & 磁力链接下载资源(有你懂滴的资源), 如果写个爬虫, 从 DHT 网络里"监听"人们正在下载的资源, 然后把这个资源的种子信息给下载并保存下来. 打造成属于自己的海盗湾!

    这几天, 我用 Node.js 重写了我去年用 Python 写出的 DHT 爬虫 + BT 客户端 = P2P 爬虫. 为什么用 Node.js 重写呢? 除了我闲得蛋疼外, 还有个原因是 Node.js 在这个 Network IO 操作频繁的项目上, 性能非常非常牛逼, 占用也非常少! 不过代码难写倒是真的. 我花了好多天才重写出来.

    爬虫运行演示视频: http://v.youku.com/v_show/id_XMTQ4NTIzMDU2MA==.html

    默认参数下, 在最便宜的日本区 Vultr VPS 运行 24 小时, 可”监听"到 50 万 个 BT 种子信息. 我那个 Python 版的爬虫(只开源一部分), 已经爬了 1400 万种子信息, 连续运行了一年多.

    我平常下载资源, 都是从我私人种子数据库里搜索, 然后拿磁力链接去下载. 比如搜索引擎找不到的新电影, 我都能从我数据库找到.

    代码在这里: https://github.com/Fuck-You-GFW/p2pspider

    求 Star !

    如果你对此也有研究, 建议你看看 README.md, 列有这个项目如何发展的计划. 如果你对此感兴趣, 请 fork 它, 贡献你的智慧.

    如果你对 Node.js 比较熟练, 也欢迎你重构我的代码, 我对 Node.js 不是很熟, 代码写得不是很好.

    Star 到 1000 的时候, 我会写个文章, 给感兴趣但看不懂相关协议的人讲讲原理, 让每个人都可以写属于自己的 P2P 爬虫建立私人海盗湾. 包教会!

    如果有兴趣, 可加 QQ 群即时交流: 145234507 (不用微信群是因为很蛋疼)

    @vitovan @iugo (这就是我说的爬虫项目)

    第 1 条附言    2016 年 2 月 29 日
    Star 是程序员的优良美德. 下载了代码都不 Star 下, I am angry. :)
    第 2 条附言    2016 年 2 月 29 日
    看起来我程序得控制 TCP 连接数了, 好多人都把主机跑挂了. 说不定这程序还有内存泄露的问题. 不知有 Node.js 熟手看看呢? 我果真还是太菜了!
    第 3 条附言    2016 年 2 月 29 日
    我邀请了 MinggeJS 的作者来改进改进代码, 不知会不会来. 你们当初可把他喷惨了, 不晓得是不是弃 V2EX 走了. :)
    第 4 条附言    2016 年 3 月 3 日
    内存泄露已解决. 在默认参数情况下, 可随便艹了.
    第 5 条附言    2016 年 3 月 5 日
    QQ 群已解散, 建群真没得意思.
    97 条回复    2016-06-04 00:08:42 +08:00
    AstroProfundis
        1
    AstroProfundis  
       2016 年 2 月 29 日
    弱弱问一下,国外很多版权保护组织用来抓盗版下载者的是不是也是类似的东西
    znoodl
        2
    znoodl  
       2016 年 2 月 29 日 via iPhone
    肯定见过,要不然你以为那些 bt 站哪来的
    irockytan
        3
    irockytan  
       2016 年 2 月 29 日 via iPhone
    好像很有意思
    CupTools
        4
    CupTools  
       2016 年 2 月 29 日   1
    static/img/doge.gif

    数据库: http://url.sc/g
    实时更新: http://url.sc/h

    准备丢到 ElasticSearch static/img/doge.gif
    ericls
        5
    ericls  
       2016 年 2 月 29 日 via iPhone
    磁力站就这么来的啊
    0x2537
        6
    0x2537  
       2016 年 2 月 29 日 via Android
    很酷
    jedyu
        7
    jedyu  
       2016 年 2 月 29 日
    scarlex
        8
    scarlex  
       2016 年 2 月 29 日
    readme 上面由错字, reross -> feross
    CrazySpiderMan
        9
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @jedyu 小虾开源的手撕包菜里的 simdht_worker.py, simMetadata.py 就是我写的. 前者直接从我 github 弄过去的, 后者间接从我这里得到的(没开源). :)
    CrazySpiderMan
        10
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @AstroProfundis 可能噢. 细思极恐!
    CrazySpiderMan
        11
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @znoodl 有些 BT 站是纯 BT 站, 就是靠别人上传的, 不是自己主动到 DHT 网络里抓取的.
    CrazySpiderMan
        12
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @vitovan @iugo 看起来没收到我的 AT ?
    v1024
        13
    v1024  
       2016 年 2 月 29 日
    跑了一下 很快就抓到了 牛逼
    wtbhk
        14
    wtbhk  
       2016 年 2 月 29 日
    Cool!
    zhizhongzhiwai
        15
    zhizhongzhiwai  
       2016 年 2 月 29 日
    你说 python 在网络 io 上不如 nodejs , 这个不太靠谱吧, 你用过 python gevent 吗?
    CrazySpiderMan
        16
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @zhizhongzhiwai 几年前用过. 可能我太笨, 用不太好.
    MyFaith
        17
    MyFaith  
       2016 年 2 月 29 日
    求问, Python 版的是哪个
    CrazySpiderMan
        18
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @MyFaith Python 版的完整代码我没开源. 只开源了其中 DHT 爬虫部分. 地址: https://github.com/Fuck-You-GFW/simDHT

    完整版只有我少数几个朋友有. 我这不把 Python 版的给重写成了 Node.js 嘛, 而且真的比我那 Python 版好多了.
    ELIOTT
        19
    ELIOTT  
       2016 年 2 月 29 日 via Android
    root@eu:~/p2pspider# node example.js

    /root/p2pspider/example.js:7
    btclient.on('complete', (metadata, infohash, rinfo) => {
    ^
    SyntaxError: Unexpected token >
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
    root@eu:~/p2pspider# node -v
    v0.10.22

    要如何解?
    vdo
        20
    vdo  
       2016 年 2 月 29 日
    几年前就玩过了
    CrazySpiderMan
        21
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @ELIOTT 恐怕 Node.js 得升级到 V4.X.X 版本才可以.
    CrazySpiderMan
        22
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @vdo 还望前辈指点指点.
    ELIOTT
        23
    ELIOTT  
       2016 年 2 月 29 日
    @CrazySpiderMan 感,使用 4.1.0 已成功。

    CrazySpiderMan
        24
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @ELIOTT 你用的什么 SSH 连接工具? 看起来是在平板连接过去的.
    ELIOTT
        25
    ELIOTT  
       2016 年 2 月 29 日
    @CrazySpiderMan JuiceSSH, 手接的.
    l0wkey
        26
    l0wkey  
       2016 年 2 月 29 日
    @CrazySpiderMan 看状态栏应该是 juice
    jy02201949
        27
    jy02201949  
       2016 年 2 月 29 日
    视频流媒体播放,冲着这个给 star 了,不知道楼主有没有后续开发的动力
    CrazySpiderMan
        28
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @jy02201949 感谢 Star! 我开发它的另外目的之一就是借由这个项目, 不断增强自己的技术能力, 毕竟这个项目需要很多很多我现目前都没有的知识, 那么就有动力去学习相关知识.

    另外就是, 我时间多得很, 多得平常睡觉都要 12 个小时 :)
    CrazySpiderMan
        29
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @CupTools 果真有人用 RethinkDB. 我关注它好久了, 然而并未用过. :)
    jasontse
        30
    jasontse  
       2016 年 2 月 29 日 via iPad
    忠告:不管你是出于什么目的,***一定不要***在境外主机上跑这段程序。
    ooh
        31
    ooh  
       2016 年 2 月 29 日
    老太太你还在搞这个?
    CrazySpiderMan
        32
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @ooh 换了马甲都还有人活捉我. :(
    ooh
        33
    ooh  
       2016 年 2 月 29 日
    @CrazySpiderMan 主要时你的马甲一般都比较 abnormal
    SlipStupig
        34
    SlipStupig  
       2016 年 2 月 29 日
    smb 爬虫专业爬内网共享
    llhh
        35
    llhh  
       2016 年 2 月 29 日
    见过 web 爬虫,也见过 p2p 爬虫。
    v2014
        36
    v2014  
       2016 年 2 月 29 日
    @CrazySpiderMan 老太太,我下 metadata 时请求本机的 bt 下载软件,每次都可以,但是请求根据 dht 给的地址去下 metadata 时,基本被拒绝,应该是什么问题啊
    CrazySpiderMan
        37
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @v2014 都不详细说说情况. 我又不是算命的.
    CrazySpiderMan
        38
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @ooh @v2014 以后不要叫我老太太了. 太显眼了.
    CrazySpiderMan
        39
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @SlipStupig samba 协议的爬虫?
    SlipStupig
        40
    SlipStupig  
       2016 年 2 月 29 日
    @CrazySpiderMan 是的,为啥要叫你老太太呢?
    imlonghao
        41
    imlonghao  
       2016 年 2 月 29 日
    @CrazySpiderMan 我的博客也在用 RethinkDB ,从 MongoDB 换过去的...
    CrazySpiderMan
        42
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @imlonghao 嘿! 我认识你, 我在你博客留过言的. 是那个支付宝什么的文章.
    shiji
        43
    shiji  
       2016 年 2 月 29 日
    能把番号集齐么?
    CrazySpiderMan
        44
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @SlipStupig 我以前昵称就是老太太. 正巧认识我的人也在 V2EX 混.

    我很好奇, 你在哪里找到特别大的 samba 的网络呢? 以至于能写个爬虫了.
    CupTools
        45
    CupTools  
       2016 年 2 月 29 日
    @CrazySpiderMan 我最近写了个邮件系统,用的就是 RethinkDB
    CrazySpiderMan
        46
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @shiji 能否集齐就不晓得了, 没统计过. 反正特别多. 哈哈.
    CupTools
        47
    CupTools  
       2016 年 2 月 29 日
    用 cluster 跑 4 线程: http://url.sc/k

    我想是不是 CPU 不够快
    AlexaZhou
        48
    AlexaZhou  
       2016 年 2 月 29 日
    感觉楼主这个有点走偏了,满满的求 star 味道,这样求来的 star 是木有意义的

    个人认为开源一个项目,重要的是能给其他人带来价值,这样自然会有 star

    ps :建议先把文档弄好,这样 star 才会多,而不是说到了 1000star 才放文档...
    cha1
        49
    cha1  
       2016 年 2 月 29 日
    @CupTools RethinkDB ,看起来很不错呀!一直想找类似这样的东西,十分感谢~
    lhbc
        50
    lhbc  
       2016 年 2 月 29 日
    运营商那里, P2P 缓存系统都有
    CupTools
        51
    CupTools  
       2016 年 2 月 29 日
    @zqhong 你的用途是什么?我可能可以帮得上
    CupTools
        52
    CupTools  
       2016 年 2 月 29 日
    @CrazySpiderMan 话说内存占用很大。我看了看代码, LRU 不知道是是不是问题, Socket 数太大不知道是不是问题,总之我把这货丢到 32G 的机子都跑满内存

    防火墙上面看到这货开了 2900000+连接, netstat -an 直接 seg fault
    miyuki
        53
    miyuki  
       2016 年 2 月 29 日 via Android
    vitovan
        54
    vitovan  
       2016 年 2 月 29 日
    r#12 @CrazySpiderMan 晚上回去看~
    a342191555
        55
    a342191555  
       2016 年 2 月 29 日
    在 HOSTUS 上成功跑挂了,找了客服向他解释了我在干啥后才恢复- -、、、
    He told me:
    Looks like it was suspended: SUSPENDING VPS xxxx (xxx.xxx.xxx.xxx); it has 65502 conntrack sessions
    CrazySpiderMan
        56
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日   1
    @AlexaZhou 有部分你说得对, 我改正.

    PS: 我之前看到你开发的 VeryNginx. 非常不错! 虽然我业余的, 用不到这个玩意儿, 但是我晓得这个绝对很有前景, 毕竟市场有这个需求, 又是较早出现的. 向你学习你的编程理念!
    SlipStupig
        57
    SlipStupig  
       2016 年 2 月 29 日
    @CrazySpiderMan 以前校内网交换机只要改一下掩码就能过去,还有一些特殊场景,主要目的不在于有多大而是有多少东西
    CrazySpiderMan
        58
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @CupTools 我对 Node.js 不是很熟, 我得排查排查. 不过, 程序自动退出没有?

    @a342191555 论买一个可耐操的 VPS 的重要性. :) 从某种意义来说, 运行这个爬虫, 就是主动对自己造成 DDOS 攻击. 所以要可以控制好 nodesMaxSize 的值.

    也许是 TCP 连接数太大? 我考虑考虑得限制下并发连接数了.
    xlrtx
        59
    xlrtx  
       2016 年 2 月 29 日
    我也想写一个, 然后做个搜索站, 加上 aria2 的功能, 点击下载直接分配到家里的路由器上.
    welsmann
        60
    welsmann  
       2016 年 2 月 29 日
    之前初学 Python 时写过一个,不过当时做了额外的种子文件内容解析,后来数据多到付不起 VPS 费用干脆就关掉了...
    AlexaZhou
        61
    AlexaZhou  
       2016 年 2 月 29 日
    @CrazySpiderMan
    客气啦,我觉得 p2pspider 也很不错,这个想法很棒,再完善完善,可能成为一个超叼的开源项目

    大家一起加油
    msg7086
        62
    msg7086  
       2016 年 2 月 29 日
    @CrazySpiderMan 耐艹请支付对应的价格。低价又耐艹的 VPS 必然是辣鸡。
    jasontse
        63
    jasontse  
       2016 年 2 月 29 日 via iPad
    @CrazySpiderMan
    我刚才 SSH 回家里的 RPi 上运行,现在路由器的连接数全满。
    cnnblike
        64
    cnnblike  
       2016 年 2 月 29 日
    卧槽,这个好强啊!
    PandaSaury
        65
    PandaSaury  
       2016 年 2 月 29 日
    为毛没有 PHP 版本的?
    CupTools
        66
    CupTools  
       2016 年 2 月 29 日
    @CrazySpiderMan
    @jasontse

    机房 G 口,独服+SSD 在跑,仍然掉链。应该是哪里有内存泄漏了
    CupTools
        67
    CupTools  
       2016 年 2 月 29 日
    skylancer
        68
    skylancer  
       2016 年 2 月 29 日
    “这几天, 我用 Node.js 重写了我去年用 Python 写出的 DHT 爬虫 + BT 客户端 = P2P 爬虫. 为什么用 Node.js 重写呢? 除了我闲得蛋疼外, 还有个原因是 Node.js 在这个 Network IO 操作频繁的项目上, 性能非常非常牛逼, 占用也非常少! 不过代码难写倒是真的. 我花了好多天才重写出来”

    老实说我还以为是 MingGe 附体
    CrazySpiderMan
        69
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @skylancer 哈哈. 我喜欢 MingGe 的那狂放的气质. 搞程序就是要这么自大, 在别人的打击下, 成长得更快.
    123s
        70
    123s  
       2016 年 2 月 29 日
    你写构造函数还是用旧的写法啊。
    完全 ES6 化
    第一条就不符合,当然我只是吐槽一下而已,很好的项目。
    CrazySpiderMan
        71
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @123s 所以是待做嘛. 先实现, 再慢慢进化. 因为我一开始就不是很懂 ES6. ES5 + ES6 混着来的.
    hyq
        72
    hyq  
       2016 年 2 月 29 日
    已经运行起来!!!!四国义
    CrazySpiderMan
        73
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @CupTools 我看你 Linux 玩得挺转的. 我都忘了好多 Linux 命令了.
    leon3333
        74
    leon3333  
       2016 年 2 月 29 日
    有意思,已 star ,有时间玩一下
    bearqq
        75
    bearqq  
       2016 年 2 月 29 日 via Android
    有人吐槽连接数的问题,其实你的 python 版一样有,不要问我 vps 怎么被封的
    Garantion
        76
    Garantion  
       2016 年 2 月 29 日
    小心蜜罐。
    CrazySpiderMan
        77
    CrazySpiderMan  
    OP
       2016 年 2 月 29 日
    @Garantion 看样子你研究得还挺深的. 是的, 有蜜罐. 我见过好多次了.
    Garantion
        78
    Garantion  
       2016 年 2 月 29 日
    @CrazySpiderMan 看来老司机还留了一手啊……
    wbsdty331
        79
    wbsdty331  
       2016 年 2 月 29 日
    Ed2k Shareaza 呢
    CupTools
        80
    CupTools  
       2016 年 3 月 1 日 via Android
    @CrazySpiderMan 睡了一觉起来, 13M 。然而线程全部挂了
    julor
        81
    julor  
       2016 年 3 月 1 日 via Android
    @CrazySpiderMan ,我来歪个楼,既然不满意 python 怎么不用 golang ,这个需要用起来也很舒服。
    cha1
        82
    cha1  
       2016 年 3 月 1 日
    @CupTools 谢谢。我有个和楼主类似的项目,数据库用的是 MySQL 。看了下 RethinkDB ,直观的 web 显示界面,还有 Python 客户端接口很人性化呀。而且呢, RethinkDB 存储的是 JSON 数据,以后作 API 接口也很方便。

    不知道这东西有什么坑吗?新手,请指教~
    CupTools
        83
    CupTools  
       2016 年 3 月 1 日   1
    @zqhong 坑就是如果你用 filter 的话 RethinkDB 不会用 index 优化
    123s
        84
    123s  
       2016 年 3 月 1 日
    @CrazySpiderMan 好吧,没看到是 todo
    CrazySpiderMan
        85
    CrazySpiderMan  
    OP
       2016 年 3 月 1 日
    @julor 因为我喜欢全能型的编程语言. Javascript / Node.js 正好. Golang 不能开发 Chrome 扩展. Golang 不能像 Javascript/Node.js 那么方便开发跨平台的 PC 程序.
    hyq
        86
    hyq  
       2016 年 3 月 1 日
    golang 可以开发 chrome 扩展,详情参见 npapi
    iugo
        87
    iugo  
       2016 年 3 月 1 日
    以前没有接触过这样的协议, 也没深入过 Node.js.

    大概看了下代码, 有几个问题:
    1. DHTSpider 作为模块, 但是在模块内部就 `new` 似乎不太好.
    ```
    exports.start = function(options) {
    (new DHTSpider(options)).start();
    };
    ```
    2. 关于 Javascript 的书写风格, 目前我遵从 https://github.com/feross/standard/blob/master/RULES.md .

    关于内存占用问题, 因为不懂 Node.js 也不好说. 不知道是不是因为无用的 UDP 连接没有被杀掉导致的.
    ttbt
        88
    ttbt  
       2016 年 3 月 1 日
    @AstroProfundis 擦擦 可以参考下我站的数据 bt0.com 希望能用上你的 code
    CrazySpiderMan
        89
    CrazySpiderMan  
    OP
       2016 年 3 月 1 日
    @ttbt 你站是个好网站! 我已收藏! 下了一个情色电影. :)
    ttbt
        90
    ttbt  
       2016 年 3 月 1 日
    @CrazySpiderMan 我什么都不知道 就不能下个科幻啥的么 捂脸
    kozora
        91
    kozora  
       2016 年 3 月 2 日
    @jasontse 抗投诉的比如俄罗斯这些可以吧?
    dismonday
        92
    dismonday  
       2016 年 3 月 2 日
    顶一下
    CrazySpiderMan
        93
    CrazySpiderMan  
    OP
       2016 年 3 月 3 日
    @CupTools 现在最新版爬虫已稳定了. 你可以去 github 瞅瞅.
    CupTools
        94
    CupTools  
       2016 年 3 月 4 日 via Android
    @CrazySpiderMan 最近在研究朴素贝尔斯算法
    CupTools
        95
    CupTools  
       2016 年 3 月 4 日 via Android
    @CrazySpiderMan 建议用 Promise , callback 不堪入目
    CrazySpiderMan
        96
    CrazySpiderMan  
    OP
       2016 年 3 月 4 日
    @CupTools 对数据进行分类? Promise 以后再写, 这个目前不是重点. 不过我把这个需求提到 issue 去.
    wico77
        97
    wico77  
       2016 年 6 月 4 日
    作者对程序 bug 崩溃已经不 care 了。也不再维护了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3035 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 134ms UTC 09:16 PVG 17:16 LAX 02:16 JFK 05:16
    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