清雨影的Blog
搜索文档…
干掉吸血雷,重塑和谐P2P环境
在我不懂技术的时候,经常使用迅雷下载各种电影,软件,迅雷很好的解决了死链之类的问题,现在来看,在那个带宽不充足的年代,缓解了一部分服务器的下载压力。 但是迅雷对于整个P2P环境的破坏是极大的,你经常可以在peer里面看到很多客户端名字为XL00+一堆乱码,或者Xunlei,7.x.xx之类的,永远只从你这里下载,而不给你上传。
说实话,我不是个吝啬带宽的人,我自己用的是光纤,而下载速度上传最快都是可以突破百兆的,我还有公网IP。所有的下载资源,我都会等待分享比率为2.0或者等了很久没人来下载我才会撤。 P2P要能玩下去,平均每个人的分享比率需要大于1.0才可以。
而迅雷,则是这样做的:
  1. 1.
    如果对方不是迅雷的客户端,那我就只下载,而不给他上传数据。
  2. 2.
    如果对方是迅雷的客户端,则优先给会员数据。
除此之外还有百度的离线下载,Xfplayer等等等等。
最后导致大家开发了反吸血的qBittorrent。

qBittorrent 反吸血增强版

如果你是Win或者Mac的客户端,可以尝试下载这位大神Fork的反吸血增强版:
Mac用户可以直接用Brew安装:
1
brew cask install c0re100-qbittorrent
Copied!
Linux的用户可以自己编译,下载软件源的编译好的结果,或者使用Docker版:

关于反吸血的一点畅想

P2P的协议的缺陷在于,假定每个人,尤其是软件制作者都是善良的,这个假设非常脆弱。
我猜想以后迅雷这样的软件可能会冒充其它软件来获取数据,对于这种方式,我们需要其它的屏蔽手段:
比如,我们可以每个人在下载的时候尝试探测对方。
  1. 1.
    你还没数据,对方已经下载了85%,但是拒绝给你提供任何数据。
  2. 2.
    或者你已经给对方提供了某个block的数据,但是和对方请求这个block的数据的时候却无法下载
这样的例子多次出现,可以BAN了对方。
对方有可能在给别人上传而顾不到你,这个时候,不能运用这些准则百分百判断对方就一定是吸血,但是我们可以设定行为权重,如果出现次数较多,那我建议自动BAN掉这个IP一周再释放。 而P2P协议应该也允许你获取其他人的黑名单,而你可以设置参考权重,选择参考或者不参考。
甚至可以用最优化的理论来调节这些权重,在不影响下载和分享的前提下,尽可能屏蔽掉多的IP,这样不好好分享的人就很难捞到好处,而又不至于对P2P生态破坏太大。
有些人可能说,我上行带宽吃紧(比如电信,下行和上行差距就非常大),那照我说,上行带宽吃紧就不要参与这个P2P了,连100k都贡献不出来就算了。