pt全名Private Tracker。很简单的说,就是“点”对”点“的文件传输,其中“点”可以理解为个人电脑。点与点的连接那就是pt站上的种子了。玩pt的宗旨是我为人人,人人为我。所以各大pt站的宗旨基本上都是不养闲人,如果你的上传量或者分享率低于一定数值就会封号。而鉴于国内目前家宽上传带宽不对等,最好的解决方法就是通过服务器来刷pt。而我又是个懒人,不想每天添加/删除种子,太麻烦了,所以找了一套完整的全自动刷pt流程,现记录如下。
一、服务器选择
一般优先选择美、欧的服务器,毕竟大家做种的机器一般是德国或者美国,离的近速度快点。配置上独服为佳,刷pt还挺吃服务器性能的,如果是amd锐龙的cpu那一核应该够了,如果是上古e5的那种洋垃圾建议至少2核以上。内存2G左右就足够了,硬盘越大越好,但要保证硬盘io,2tb的石头盘不如40GB的nvme硬盘,切记!
hetzner netcup等德国商家都不错,尤其是hz基本上都成了pt盒子专用服务器供应商了。但要注意某些pt站(比如馒头)会直接标记hz的IP为盒子IP,有不享受免费下载,分享率限制为3倍等限制。毕竟家宽用户抢上传不可能抢的过服务器用户,这也是为了平衡pt环境的无奈之举。如果IP被标记了也不用慌,连个代理就可以了。还有些小众商家也不错,就不一一推荐了。
二、准备工作系统环境 Debian11
1.启用BBR(Debian内核默认编译了bbr,直接启用即可)
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p
2.安装Qbittorrent
apt-get update apt install qbittorrent-nox
3.启用Qbittorrent
qbittorrent-nox -d
到此为止,你可以通过浏览器打开 你的IP:8080 来登陆qb的web面板了,默认账号是admin,密码是adminadmin,请及时更改。
三、配置自动刷流
采用vertex进行管理,项目地址
docker安装见官方wiki页面
安装完成后打开你的IP:3000即可打开控制面板。
基本的刷pt流程为:通过rss获取种子列表=> 根据选种子规则,如果不满足规则删除,如果满足规则即添加至下载器(之前安装的qbittorrent)=> 开始下载,下载过程中判断种子是否满足删种规则,满足则删除,不满足则继续下载=> 下载完成后开始做种,做种至无上传流量则按规则自动删除并释放磁盘空间
下面详细介绍配置流程
1.在pt站获取rss链接
一般在pt站的右上角可以看到rss链接的图标
rss图标
选择你要的种子分类即可获取rss链接。需要注意的是,一般pt站会提供两个链接,这时候选择提示为“你可以在支持RSS訂閱功能的BT客戶端(如uTorrent)使用以下URL:”的这个链接(一般是第二个)。
2.配置Rss选种规则
Rss选种规则是用来判断是否添加种子到客户端,主要选择条件为种子大小和关键词。
在vertex界面选择右边任务栏—规则组件—rss规则
以下为规则举例,可根据需要自行更改
#仅添加10-100G范围内官种
别名: 官种-10-100
类型: 普通
条件:
- 种子大小 - 大于 - 10*1024*1024*1024
- 种子大小 - 小于 - 100*1024*1024*1024
- 种子名称 - 包含 - Hares
3.配置删种规则
这部分是刷流的重要部分,配置好的删种规则可以起到事半功倍的效果。
!!不要在保种客户端运行任何删种规则,删除的种子不可恢复
Vertex自定义删种规则
节选自 殊途
(1)无效做种
无效做种是针对做种超过一个半小时的时候,并且上传小于512kb的种子。如果下载或者做种的种子本身过多,自行修改
(maindata, torrent) => {
const categoryList = ["keep"];
const stateList = ["uploading", "stalledUP"];
const { state, uploadSpeed, category, completedTime } = torrent;
if (categoryList.indexOf(category) !== -1) {
return false;
}
if (
stateList.indexOf(state) !== -1 &&
uploadSpeed <= util.calSize(512, "KiB") &&
moment().unix() - completedTime >= 5400
) {
return true;
}
return false;
};
(2)分享率
(maindata, torrent) => {
const categoryList = [
"keep",
"chdbits",
"ourbits",
"hdhome",
"lemonhd",
"pter",
"audiences",
"hdchina",
"hdsky",
"hddolby",
];
const { uploaded, size, category } = torrent;
if (categoryList.includes(category)) {
return false;
}
if (uploaded / size >= 3) {
return true;
}
return false;
};
分享率达到3删种,更改categoryList参数即可
(3)最长下载时间
最长下载时间到达16小时自动删种
(maindata, torrent) => {
const categoryList = ["keep"];
const stateList = ["downloading", "stalledDL"];
const { state, addedTime, category, uploadSpeed } = torrent;
if (categoryList.includes(category)) {
return false;
}
if (
stateList.includes(state) &&
moment().unix() - addedTime >= 57600 &&
uploadSpeed <= util.calSize(5, "MiB")
) {
return true;
}
return false;
};
(4)慢车,持续40秒
1.在0点-8点这个时间段,种子数量小于10个时跳过,下载人数大于100时跳过,保证夜间不误删,能有足够的种子。
2.进度大于10%,上传速度小于250kb持续40的跳车。
(maindata, torrent) => {
const categoryList = ["keep"];
const stateList = ["downloading", "stalledDL"];
const { state, uploadSpeed, progress, category, leecher } = torrent;
if (categoryList.includes(category)) {
return false;
}
if (
(moment().hour() >= 0 && moment().hour() <= 8) ||
maindata.leechingCount <= 10 ||
leecher >= 100
) {
return false;
}
if (
stateList.includes(state) &&
uploadSpeed <= util.calSize(250, "KiB") &&
progress >= 0.1
) {
return true;
}
return false;
};
(5)长时间未开始
1.删除0-8点这个时间段,超过五小时并且进度小于5%的种子。
2.删除常规时间段,超过四小时并且进度小于5%的种子。
(maindata, torrent) => {
const categoryList = ["keep"];
const { state, category, progress, addedTime } = torrent;
if (categoryList.includes(category)) {
return false;
}
if (
moment().hour() >= 0 &&
moment().hour() <= 8 &&
state === "stalledDL" &&
progress <= 0.05 &&
moment().unix() - addedTime >= 18000
) {
return true;
}
if (
state === "stalledDL" &&
progress <= 0.05 &&
moment().unix() - addedTime >= 14400
) {
return true;
}
return false;
};
(6)空一小时跳车
(maindata, torrent) => {
const categoryList = ["keep"];
const { state, category, progress } = torrent;
const { eta } = torrent.originProp;
if (categoryList.includes(category)) {
return false;
}
if (
state === "downloading" &&
category === "hdsky" &&
progress >= 0.05 &&
progress <= 0.2 &&
(eta / 60) <= 70
) {
return true;
}
return false;
};
4.添加RSS任务
vertex侧边栏 任务配置-rss任务
按要求配置即可。
注意:部分站点有流控,rss链接不能短时间内请求太多次数。比如馒头只能6分钟请求一次,请留意社区规则
四、配置通知工具
以telegram bot为例
1.在@botfather处新建一个bot,记录下token
2.新建一个频道
3.在频道里随便发一条信息,然后转发到 @getmyid_bot 即可获取频道chat ID
4.重复步骤三,给每个下载器创建一个单独的监控频道和一个独立的通知频道。因为telegram api限制,如果多个下载器共用一个监控频道会报错
5.在vertex 下载器配置里填入token和ID即可
五、小结
刷pt比我想象中更吃服务器性能,netcup 4核8G的root serve基本上在上传流量跑到几十mb/s的时候负载就满了,cpu占用基本在60%以上,垃圾小鸡就别干这个了,等会儿别因为长期占用cpu/带宽被清退了...
评论