加速PT上传,脚本获取更多Transmission Peers

背景

  pt早有耳闻,一直没有玩过,前几天hdhome开放了注册,有幸拿到了注册码,开始入坑。
为何要如此努力地增加PT分享率
很简单,30天的期限,需要过新手考核。。。

Transmission

  Transmission是Linux上很不错的BT下载器,PT资源也支持,它还支持一个Web客户端,Web客户端使用Http与Transmission服务部通信,这对我们这类玩鸡人士来说很方便了,同时结合rss订阅插件可实现全自动下载,安装问题以后再说,今天说加速上传。

解决方案

  Transmission的Peers通常是由Tracker来提供的,默认每半个小时才会去询问一次有没有更多Peers,所以本文的机理就是缩短这个时间,获取更多的上传机会。

  通过查看Web客户端是如何请求Transmission服务器,每隔一段时间强制刷新Peers列表就可以了。在此我用的是chrome浏览器。

  • 打开网页客户端
  • 然后通过Chrome Dev Tools分析一波。


发现torrent-get获取任务ID和详情信息,torrent-reannounce向Tracker发出刷新Peers列表的请求。

通过Copy as cURL直接复制Chrome发出的请求,方便进行实验。

通过脚本自动化刷新Peers列表的过程
最终整理Shell脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
while true; do
# 取Transmission的Session ID
TSID=`curl -sI 'http://localhost:9091/transmission/rpc' |grep -Fi "X-Transmission-Session-Id" | tr -d '\r'`
echo $TSID
# jq解析Json
TDATA=`curl -s 'http://localhost:9091/transmission/rpc' -H 'Origin: http://localhost:9091' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4' -H "$TSID" -H 'Content-Type: json' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://localhost:9091/transmission/web/' -H 'X-Requested-With: XMLHttpRequest' -H 'DNT: 1' --data-binary '{"method":"torrent-get","arguments":{"fields":["id"],"ids":"recently-active"}}' --compressed | jq -c '{"method":"torrent-reannounce","arguments":{ids: [.arguments.torrents[].id]}}' | tr -d '\r'`
echo $TDATA
# 发刷新Peers列表请求
curl 'http://localhost:9091/transmission/rpc' -H 'Origin: http://localhost:9091' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4' -H "$TSID" -H 'Content-Type: json' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://localhost:9091/transmission/web/' -H 'X-Requested-With: XMLHttpRequest' -H 'DNT: 1' --data-binary "$TDATA" --compressed
# 每隔一分钟刷新一次
sleep 60
done

最后

我这边略有效果,至于真正可不可行,还请亲自试验,至于最后的刷新时间 自己调试吧。

aria2下载完后自动上传至谷歌云盘

  1. 1. 背景
  2. 2. Transmission
  3. 3. 解决方案
  4. 4. 最后