qBittorrent 配置备忘录
这是以反吸血为目的的 qBittorrent 配置备忘录。
安装
使用:c0re100/qBittorrent-Enhanced-Edition
对于 Windows,安装完成后,在 qbittorrent 的安装文件中,新建一个名为 profile
的文件夹,以便携模式启动 qbittorrent。
日志
在菜单栏的 视图 → 日志 中,勾选全部类型的日志信息。
软件设置
行为
勾选:
- 删除 Torrent 时提示
- 确认 “暂停/继续所有” 操作
- 使用交替的行颜色
- 隐藏为 0 及无穷大的项:总是
- 在 Windows 启动时启动 qBittorrent
- 启动时的窗口状态:隐藏
- 如果退出时由 Torrent 活动则提示确认
勾选:
- 下载完成并自动退出时提示确认
- 在通知区域显示 qBittorrent
- 最小化 qBittorrent 到通知区域
- 关闭 qBittorrent 到通知区域
- 使用 qBittorrent 打开 .torrent 文件
- 使用 qBittorrent 打开磁力链接
- 检查程序更新
由于当前系统不会因为睡眠而断开网络链接,所以不勾选:
- 下载时禁止系统自动睡眠
- 做种时禁止系统自动睡眠
下载
勾选:
- 显示 Torrent 内容和选项
- 前置 torrent 对话框
- 手动添加 torrent 时询问是否合并 trackers
- 为所有文件预分配磁盘空间
- 启用递归下载对话框
连接
- Peer 连接协议:TCP 和 µTP
勾选:
- 使用我的路由器 UPnP / NAT-PMP 端口转发
- 全局最大连接数:1000
- 每个 torrent 最大连接数:500
启用 IP 过滤
速度
勾选:
- 对 µTP 协议进行速度限制
- 对传送总开销进行速度限制
- 对本地网络用户进行速度限制
BitTorret
勾选:
- 启用 DHT(去中心化网络)以找到更多用户
- 启用用户交换(PeX)以找到更多用户
- 启用本地用户发现以找到更多用户
- 加密模式:允许加密
- Automatically update public trackers list
WebUI
勾选:
- Web 用户界面(远程控制)
- 对本地主机上的客户端跳过身份验证
- 启用点击劫持保护
- 启用跨站请求伪造(CSRF)保护
- 启用 Host header 属性验证
高级
修改:
- 保存恢复数据的间隔:60 分钟
- 网络接口设置为无线网卡或者以太网,以避免来自 TUN 模式的网络干扰。
额外勾选:
- Auto Ban Unknown Peer from China
- Auto Ban Bittorrent Media Player Peer
- 当 IP 或端口更改时重新通知所有 Tracker
修改:
- 异步 I/O 线程数:64
- AMD 7840H
- 文件池大小:400
- 校验时内存使用扩增量:1024 MiB
- 磁盘缓存:-1
额外勾选:
- 合并读写
- 发送分块上传建议
修改:
- µTP-TCP 混合模式策略:按用户比重(抑制 TCP)
额外勾选:
- 禁止连接到特权端口上的 peer
附加的反吸血措施
IP 过滤列表
要使用 IP 过滤列表,你需要新建一个名为 ipfilter.dat
的纯文本文件,并在 设置 → 连接 → IP 过滤 中勾选此文件。
IP 过滤列表的示例:
1.180.24.0-1.180.25.255
240e:918:8008:4::0-240e:918:8008:4::ffff
客户端过滤列表
要启用客户端过滤列表,请在 profile/qBittorrent/data
目录下新建名为 peer_blacklist.txt
的文件。
格式为 PeerIP 客户端名
示例:
-DT0001- dt/torrent/v1.00
-DT0001- dt/torrent/v1.01
-DT0001- DT\s0.0.0.1
辅助封禁工具
目前有两个流行的工具:
我使用的是 Ghost-chu/PeerBanHelper
。
PeerBanHelper.jar
启动测试脚本 test-start.sh
:
#!/bin/bash
#启动 PeerBanHelper.jar,同时设置代理
java -jar -Xmx256M -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ShrinkHeapInSteps "-Dhttp.proxyHost=127.0.0.1" "-Dhttp.proxyPort=7890" "-Dhttps.proxyHost=127.0.0.1" "-Dhttps.proxyPort=7890" -jar PeerBanHelper.jar nogui
用于让 PeerBanHelper
开机自启动的 systemd 服务文件:
[Unit]
Description=Start PeerBanHelper jar file
After=multi-user.target
[Service]
ExecStart=/usr/bin/java -jar -Xmx256M -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ShrinkHeapInSteps "-Dhttp.proxyHost=127.0.0.1" "-Dhttp.proxyPort=7890" "-Dhttps.proxyHost=127.0.0.1" "-Dhttps.proxyPort=7890" -jar /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar nogui
Type=simple
WorkingDirectory=/home/poplar/bin/qbee/peerbanhelper
[Install]
WantedBy=multi-user.target
服务文件需要放置到 /etc/systemd/system/
文件夹中,然后重载 systemd 守护进程,再开启服务:
sudo systemctl daemon-reload
sudo systemctl enable pbh --now
初次启动后,在 /data/config
目录下,打开 config.yml
,修改配置:
- 修改 webui 地址
- 启用 IPDB
- 启用并配置 BTN 网络
然后登录 http://127.0.0.1:9898/,添加需要连接的下载器,qBittorrent 一般是:
用于管理 PeerBanHelper 服务的脚本 pbh
:
#!/bin/sh
#本脚本用于 Peerbanhelper 的日常维护
while true; do
printf 'PeerBanHelper Service: Stop(s), Reload(r), Update(u), Degrade(d), Read Log(l), Clear(c), Clear output(o) or Quit(q)'
read answer
if [ "$answer" = "S" ] || [ "$answer" = "s" ]; then
#暂停服务
sudo systemctl status pbh | grep "Active"
#读取状态
sudo systemctl stop pbh
#关闭服务
sudo systemctl status pbh | grep "Active"
#读取状态
elif [ "$answer" = "R" ] || [ "$answer" = "r" ]; then
#重载服务
sudo systemctl restart pbh
#重启服务
sudo systemctl status pbh | grep "Active"
#读取状态
elif [ "$answer" = "U" ] || [ "$answer" = "u" ]; then
#更新服务
echo "Please make sure the update file is in ~/Downloads folder!"
sudo systemctl stop pbh
#关闭服务
sudo systemctl status pbh | grep "Active"
#读取状态
mv -f /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar.old
#强制备份旧文件
echo "Backup files complete!"
cp /home/poplar/Downloads/PeerBanHelper.jar /home/poplar/bin/qbee/peerbanhelper
#拷贝新文件
echo "Update files completed!"
sudo systemctl restart pbh
#重启服务
sudo systemctl status pbh | grep "Active"
#读取状态
elif [ "$answer" = "D" ] || [ "$answer" = "d" ]; then
#降级更新
sudo systemctl stop pbh
#关闭服务
sudo systemctl status pbh | grep "Active"
#读取状态
mv /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar.error
#停用有问题的文件
mv /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar.old /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar
#更换至旧版文件
echo "Changed to old version files"
sudo systemctl restart pbh
#重启服务
sudo systemctl status pbh | grep "Active"
#读取状态
elif [ "$answer" = "L" ] || [ "$answer" = "l" ]; then
#读取日志及状态
sudo systemctl status pbh | grep "Active"
#读取状态
echo
cat /home/poplar/bin/qbee/peerbanhelper/data/logs/latest.log
#读取最新日志
elif [ "$answer" = "C" ] || [ "$answer" = "c" ]; then
#删除有问题的文件
rm /home/poplar/bin/qbee/peerbanhelper/PeerBanHelper.jar.error
echo "Problematic versions of files have been cleaned up."
elif [ "$answer" = "O" ] || [ "$answer" = "o" ]; then
#清理输出
clear
elif [ "$answer" = "Q" ] || [ "$answer" = "q" ]; then
#清理并退出
clear
echo "Process End."
exit
else
#重新开始循环
echo "ERROR! Invalid input."
continue
fi
done