uTorrent 自动屏蔽迅雷脚本(uTorrent block xunlei/thunder) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SHF
V2EX    分享发现

uTorrent 自动屏蔽迅雷脚本(uTorrent block xunlei/thunder)

  •  3
     
  •   SHF 2018-11-19 17:10:27 +08:00 15403 次点击
    这是一个创建于 2519 天前的主题,其中的信息可能已经有所发展或是发生改变。

    uTorrent 自动屏蔽迅雷脚本

    GitHub: https://github.com/ShenHongFei/utorrent-block-xunlei

    方法

    1. 根据 uTorrent 的 WebUI API 发送 http request 获取到所有种子的 peers 信息
    2. 按照 client name 筛选出使用迅雷的 peer IP,写入 ipfilter.dat 文件
    3. 发送 http request 让 uTorrent 重新加载 ipfilter.dat

    屏蔽列表

    -XL0012-***

    Xunlei/***

    7.x.x.x

    Xfplay

    效果

    每隔一段时间,已连接用户中使用迅雷客户端的 IP 将会被封锁

    脚本

    utorrent= init: -> @root_url= 'http://127.0.0.1:10000/gui/' @cookies= request.jar() token_html = await request uri: @root_url + 'token.html' auth: user: 'admin' pass: 'xxxxxx' jar: @cookies $ = cheerio.load token_html @token = $('div').text() await @get_torrents() call: ({api='', params, method='GET'}={})-> JSON.parse await request uri: @root_url + api method: method qs:{ token: @token params... } auth: user: 'admin' pass: 'xxxxxx' jar: @cookies get_torrents: -> @torrents = (await @call params: list: 1).torrents @hashes = @torrents.map (x)-> x[0] get_peers: (hash)-> resp = await @call params: action: 'getpeers' hash: hash resp.peers get_all_peers: -> peers = [] for hash in @hashes peers.append((await @get_peers hash)[1]) for peer in peers ip: peer[1] client: peer[5] block_xunlei: -> peers = await @get_all_peers() blocks = peers.filter (x)-> x.client.match /(-XL0012-)|(Xunlei)|(^7\.)|(Xfplay)/i if blocks.isEmpty() log 'no xunlei clients detected' log peers return else log blocks ipfilter = new File 'C:/Users/shf/AppData/Roaming/uTorrent/ipfilter.dat' ipfilter.data += (x.ip for x in blocks).join('\n') + '\n' ipfilter.save() log 'ipfilter.dat updated' await @call params: action: 'setsetting' s: 'ipfilter.enable' v: '1' log 'ipfilter.dat reloaded' run: -> await @init() await @block_xunlei() @task = setInterval => await @block_xunlei() , 3*60*1000 stop: -> @task.clearInterval() 

    日志

    未检测到迅雷时

    no xunlei clients detected 当前已连接 peers [ { ip: '180.94.154.163', client: 'Torrent/3.5.4.0' }, { ip: '223.140.248.38', client: 'BitComet 1.53' }, { ip: '101.88.108.19', client: 'Torrent/2.2.1.0' }, { ip: '39.161.242.50', client: 'Unknown FD/5.1.0.0' }, { ip: '171.88.70.72', client: 'Transmission 2.94' }, { ip: '218.79.69.196', client: '[FAKE] Torrent/3.0.0.0' }, { ip: '123.204.251.13', client: 'BitComet 1.51' }, { ip: '118.150.188.121', client: 'μTorrent 3.5.3' }, { ip: '118.150.188.121', client: 'μTorrent 3.5.3' }, { ip: '118.150.188.121', client: 'μTorrent 3.5.3' } ] [ { ip: '222.164.100.163', client: '7.9.34.4908' } ] 

    检测到迅雷时

    使用迅雷的 peers [ { ip: '183.25.54.216', client: '-XL0012-溶 S #+4 ' } ] reading C:/Users/shf/AppData/Roaming/uTorrent/ipfilter.dat wrote C:/Users/shf/AppData/Roaming/uTorrent/ipfilter.dat ipfilter.dat updated ipfilter.dat reloaded 

    uTorrent Log

    [2018-11-19 16:50:25] Loaded ipfilter.dat (51 entries)

    第 1 条附言    2018-12-24 15:12:23 +08:00
    v1.0 正式发布:
    1. 发布压缩包,解压修改配置后可直接运行。
    2. 修改屏蔽逻辑
    3. 减少 ipfilter.dat 文件的读写

    下载及使用说明见 https://github.com/ShenHongFei/utorrent-block-xunlei
    另有 Python 脚本的实现(见 #34 楼),感谢 @fengyeso
    38 条回复    2019-10-11 03:57:38 +08:00
    zmj1316
        1
    zmj1316  
       2018-11-19 17:32:28 +08:00
    这个好,可惜 utorrent 的 web API 上次爆出漏洞,不太敢开了......
    SHF
        2
    SHF  
    OP
       2018-11-19 17:51:59 +08:00
    @zmj1316 怕危险的话限制来源 IP 为 本机 IP 127.0.0.1 就可以仅本机访问了,uTorrent 设置 > 高级 > 只允许下列 IP 地址 访问。
    kslr
        3
    kslr  
       2018-11-19 19:07:35 +08:00 via Android
    目前有数据分析吗?迅雷比例是多少
    Vanctol
        4
    Vanctol  
       2018-11-19 19:58:13 +08:00 via iPhone
    Nice. 其他下载软件有这个功能吗? 比如 fdm
    SHF
        5
    SHF  
    OP
       2018-11-19 20:10:59 +08:00
    @kslr 不同的种子迅雷的比例不太一样,国外的种子比较少,国内的 60% 都是吸血雷。你可以随便找个种子下载,看看用户列表就有直观感受了。
    xxhjkl
        6
    xxhjkl  
       2018-11-19 20:16:04 +08:00
    这么使用啊 这个脚本
    SHF
        7
    SHF  
    OP
       2018-11-19 20:18:07 +08:00
    @Vanctol FDM 是基于 Aria2 的,我看了看 Aria2 的 repo 里有人体力这个 issue 但是没解决,估计没有这个功能。https://github.com/aria2/aria2/issues/1146
    qBittorrent 有一个 Enhanced Edition 也可以自动屏蔽迅雷,但是试了很多次 qBittorrent 比 uTorrent 慢太多了,跑不满带宽。
    SHF
        8
    SHF  
    OP
       2018-11-19 20:19:10 +08:00
    @xxhjkl 需要一些编程基础,暂时没有那种一键就能用的。
    yanghong502
        9
    yanghong502  
       2018-11-19 22:02:57 +08:00
    ……之前在 pt 站的客户端列表看到一个迅雷。
    Wenpo
        10
    Wenpo  
       2018-11-20 01:30:51 +08:00 via Android
    屏蔽了又怎样呢
    lovestudykid
        11
    lovestudykid  
       2018-11-20 02:03:39 +08:00
    迅雷客户端不给 bt 网络上传吗?
    vB4h3r2AS7wOYkY0
        12
    vB4h3r2AS7wOYkY0  
       2018-11-20 02:18:32 +08:00
    另外还有一个 qBittorrent 的也挺好用
    https://github.com/c0re100/qBittorrent-Enhanced-Edition/releases
    xmtudgzy
        13
    xmtudgzy  
       2018-11-20 06:53:50 +08:00
    就是因为 uTorrent 2.2.1 不能屏蔽渣雷为首的吸血鬼,所以在公网 BT 上不敢用这个客户端 。
    大声的问一句:老师,你这个脚本该怎么用?
    chih758
        14
    chih758  
       2018-11-20 09:18:09 +08:00 via Android
    chih758
        15
    chih758  
       2018-11-20 09:19:27 +08:00 via Android
    好东西,我研究下看能不能移植到 qBittorrent 的 webUI
    Removable
        16
    Removable  
       2018-11-20 09:30:16 +08:00
    @yanghong502 #9 啊?是怎么通过验证的?
    SHF
        17
    SHF  
    OP
       2018-11-20 10:24:18 +08:00
    @lovestudykid 是的,吸血雷只从 BT 网络下载资源,然后只在迅雷用户之间内部分享(也许先分享给开了会员的人),破坏了 P2P 网络的公平性。
    SHF
        18
    SHF  
    OP
       2018-11-20 10:25:57 +08:00
    @MayKiller qBittorrent 比 uTorrent 慢太多了,跑不满带宽,你可以用一个热门的种子比如 ubuntu 镜像的种子试试,我这 qBittorrent 最快只有带宽的 30%,而 utorrent 能到带宽的 80% 以上。
    edsheeran
        19
    edsheeran  
       2018-11-20 10:37:04 +08:00 via iPhone
    @SHF tracker ?
    SHF
        20
    SHF  
    OP
       2018-11-20 10:40:45 +08:00
    @edsheeran 应该是 tracker 没有把迅雷的 client id 检测出来然后屏蔽掉,反而正常把其它做种的 peers 的 IP 给返回了。
    imn1
        21
    imn1  
       2018-11-20 11:14:50 +08:00
    这其实是个哲学话题
    有两个圈子,BT 和 XL,XL 从 BT 获取资源,但没有反向分享
    但不能说 XL 完全没有分享,XL 平台是有向 XL 圈子分享的,否则 BT 无源的老旧资源,XL 也下载不了
    所以说,只是两个圈子打架的事

    其实我自己也在做类似的行为,我从 BT 下载(限速上传),但却扔到 emule 里面上传(下载极少,上传带宽多两倍)
    我这样做是因为 emule 可以一次挂着上千个文件,BT 做不到(或者说机器承受不了),但从 BT 用户角度,我这也是在吸血

    这个事情看立场、角度如何吧

    @SHF
    我 qbt 长期 10+MB/s,不知道你为何会慢
    Cu635
        22
    Cu635  
       2018-11-20 16:21:10 +08:00
    @imn1
    胡扯哲学话题。
    “ XL 平台是有向 XL 圈子分享的”这就叫吸血。
    这就和这件事性质一样:你的朋友管你借钱,借钱完了该还的时候他有钱不还给你,同时他却向他的“朋友们”放贷就算不收利息他也会赢得他朋友们的名声。如果说这件事你也是认为“不能说他完全没有名声,只是他是有向他那个圈子分享”的,再过来说“哲学话题”。
    imn1
        23
    imn1  
       2018-11-20 17:08:40 +08:00
    @Cu635
    和你说的例子相似又不同,相似是生利,就是 XL 自定的规则盖过了 P2P 圈的共享精神
    不同是 XL 也不能完全说无本,能存放更久的资源也需要付出,就看这个本和利是否对称合理了

    如果 XL 完全封杀免费用户,那就没得说了
    免费用户也是能下到一些久远的内容的,单从这点看,它免费分发的量是大于获取的量的,这点不能否认

    如果朋友拿了我的钱,一半放贷,一半资助别人,赚了名声,我什么也没捞着,确实不爽
    但如果我那些钱本来就打算资助别人,就要另外看了
    到底是痛骂这个朋友,还是睁眼闭眼过去,各自衡量
    BT 圈就能保证更多的人分享么?分给谁不是分呢?区别只是分多少,怎么分而已

    10 年前问过别人一个问题:婊子捐的钱收不收?
    问自己没用,问灾民
    精神是否大于物质,理想是否高于现实,说的就是这个哲学问题

    今年刚从 XL 退会了,观察后续情况如何吧,至少这个月还下了两个 bt 拖不动的上世纪的咚咚,只是慢点,挂了一周多
    SHF
        24
    SHF  
    OP
       2018-11-20 18:10:01 +08:00
    @imn1 解决这个问题最好方法是设计一个客户端同时支持这些协议,把所有的 BT, XL, emule 圈子合并在一起,这样整个圈子就扩大了,下载文件的时候从各个来源下载加快速度。
    Cu635
        25
    Cu635  
       2018-12-06 23:22:13 +08:00
    @imn1
    你搞差了,不是“ XL 完全封杀免费用户”的问题,而是说这些 bt 下载软件是有客户端标识的,软件会知道跟它连接的其它客户端是什么软件、版本号是多少,浏览器这个标识叫 user-agent,bt 我不清楚叫啥了,这样的话,XL 在技术是可以从所有类型的客户端下载( deluge、utorrent、其它 XL 等),但是只给 XL 的其它客户端上传,这个区分不是免费不免费用户的问题。然后因为迅雷下载快,用户们都选择使用迅雷,等着资源只有 XL 才有而其它的都没有的时候,再来一个免费用户限速之类的限制,这不就是垄断了么。
    而且由于技术原因,存放的成本几乎可以忽略不计。

    我特意强调“借钱完了该还的时候他有钱不还给你”,这个就是告诉你他故意赖的。

    “如果朋友拿了我的钱,一半放贷,一半资助别人,赚了名声,我什么也没捞着,确实不爽”,我的那个例子还有这他当老赖的情节呢……
    而他得名声,你却什么也没得着,还被人老赖连本金都没有拿回来,你说“问自己没用,问灾民”也对,那要是你这个时候家人(或者干脆就你自己)正要动手术需要医疗费救命呢?他仍然赖着,仍然拿着他老赖的钱去当“及时雨”呢?
    Cu635
        26
    Cu635  
       2018-12-06 23:23:10 +08:00
    @SHF
    那是迅雷故意吸血的,不是技术问题能解决的。
    imn1
        27
    imn1  
       2018-12-07 01:42:29 +08:00
    @Cu635
    我没有搞差,我说的免费用户和你这里说的一样,只是他们是 XL 圈内的免费用户而已
    如果 XL 所有用户都要付费(破解那些不计算),才是我前面说的「 XL 完全封杀免费用户」,但它没有这样做,就是说 XL 也是有免费分发的
    一个现实状况是:XL 免费分发出去要比我个人多得多,所以我只把它视为一个渠道商而已

    如果我的钱本就打算捐出去,例如通过 red cross,rc 收了 10%作为行政费,90%分给其他人
    当我需要手术,估计就不存在捐出去这个打算了
    而且,捐了给 rc 后的话,我要手术救命,难道还去向 rc 讨回来么?捐赠本来就不求回报的,只要不是骗钱给自己享乐,它获取部分利益(美其名「行政费」),我不介意

    我 emule 没有屏蔽什么用户,只要对方是需要的,我不去计较他的本意是什么
    P2P 没问题,P2B2P 我也觉得没问题,多了一层中转而已,如果 P2B2C,后面这个 2C 没有免费途径,我才会介意
    如果哪天 XL 不给钱不让下,我也会屏蔽它的

    其实说到底,我和你看法的区别是,你把 XL 的免费用户没有归入共享圈,我则无视他们头上的 XL 标签,也视为共享圈内有资源需求的人

    @SHF
    我 bt 下完跑,但挂 emule 就是这个原因,10~20TB 挂 bt 我的机器会死的,emule 就没问题
    SHF
        28
    SHF  
    OP
       2018-12-08 12:35:51 +08:00
    @imn1 所以说如果客户端能在遇到对方是迅雷用户的时候伪装成迅雷,这样就好了,从技术上说这个也不难实现啊,根据已有的开源的客户端修改一下逻辑挺简单的吧,不知道为什么没有人去开发这个。
    Maskeney
        29
    Maskeney  
       2018-12-13 21:43:42 +08:00
    @SHF #7 看来 aria2 无望屏蔽了 刚刚还在你的 repo 上提了个 issue sad
    dt743
        30
    dt743  
       2018-12-14 09:16:18 +08:00
    楼主这么一讲我也注意到了,qb 增强版屏蔽迅雷,同时会误杀。
    我就说怎么同个种子,增强版的用户会大量减少
    1265578519
        31
    1265578519  
       2018-12-14 23:20:38 +08:00
    烦死这群 utorrent 吸血鬼了,只下载不上传,特别是老外。
    关于迅雷这方面,是完全遵守 BT 网络的,不会出现评论中说的什么只会上传给迅雷相同客户的问题,这种事情自己抓包测试就行,不用跟风造谣。
    总结,还是看人,特别是老外,尼玛就是喜欢限速 1KB 上行。
    1265578519
        32
    1265578519  
       2018-12-14 23:25:23 +08:00
    关于各大客户端的速度方面,感兴趣的话可以看看: http://bbs.itzmx.com/thread-88860-1-1.html
    具体各位也可以仔细测试下,来探讨下,说实在的 utorrent 基本上没什么存在的必要了,,代码太屎了,要推倒格式化重新用 iocp 模型完全开发一遍才行,这样才能提高性能。
    ???发回复还要铜板?吓得我去充了 200 块才发成功这条回复
    SamClip
        33
    SamClip  
       2018-12-23 16:42:39 +08:00
    几乎被 xl 给把上传都给霸占了,
    还有两个 xl 在给我上传。2.0.4 可以使用这个吗?真小白还是看不明白怎么使用这个脚本。
    [![捕获.JPG]( https://i.loli.net/2018/12/23/5c1f49c0884e4.jpg)]( https://i.loli.net/2018/12/23/5c1f49c0884e4.jpg)
    fengyeso
        34
    fengyeso  
       2018-12-24 04:07:19 +08:00
    撸了个 python 版的,应该可以跑起来。顺便感谢楼主造福人类
    https://github.com/yefengo/utorrent-block-xunlei
    SHF
        35
    SHF  
    OP
       2018-12-24 15:14:55 +08:00
    @xxhjkl @maogang39

    v1.0 正式发布:
    1. 发布压缩包,解压修改配置后可直接运行。
    2. 修改屏蔽逻辑
    3. 减少 ipfilter.dat 文件的读写

    下载及使用说明见 https://github.com/ShenHongFei/utorrent-block-xunlei
    另有 Python 脚本的实现(见 #34 楼),感谢 @fengyeso
    Suzutan
        36
    Suzutan  
       2019-02-14 20:52:06 +08:00
    ![无标题.png]( https://i.loli.net/2019/02/14/5c656423a7c64.png)

    迅雷这个不算吸血算什么?
    pedoer
        37
    pedoer  
       2019-10-10 18:04:37 +08:00
    请问怎么屏蔽 7.8.9.4550 这种无客户端标记的?
    SHF
        38
    SHF  
    OP
       2019-10-11 03:57:38 +08:00 via Android
    @pedoer 类似 7.x.x.xxxx 这样的客户端直接当做迅雷屏蔽
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5990 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 06:19 PVG 14:19 LAX 23:19 JFK 02:19
    Do have faith in what you're doing.
    ubao 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