Aria2在windows10下的配置

1、aria2设置aira2.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#下载文件默认保存路径
<code>dir=F:\MyDownload\Aria2\
### 日志文件保存路径及级别,可选 debug, info, notice, warn, error 。默认:debug
log=E:\Aria2\aria2.log
log-level=error
# 从会话中读取任务
input-file=E:\Aria2\aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=E:\Aria2\aria2.session
#配置dht.dat文件存放位置
dht-file-path=E:\Aria2\dht.dat</code>
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
force-save=true

# 下载选项
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 断点续传
continue=true
# 整体下载速度限制, 运行时可修改, 默认:0
max-overall-download-limit=5M
# 单个任务下载速度限制, 默认:0
max-download-limit=10M
# 整体上传速度限制, 运行时可修改, 默认:0
max-overall-upload-limit=1K
# 单个任务上传速度限制, 默认:0
max-upload-limit=1K

# Http/FTP 选项
# 连接超时,建立链接后失效
connect-timeout=120
# 最小速度限制
# 当下载速度低于此选项设置的值(B/s) 时将会关闭连接. 0 表示不设置最小速度限制.
lowest-speed-limit=1K
# 同一服务器连接数, 添加时可指定, 默认:1,范围1-16
max-connection-per-server=15
# 文件未找到重试次数
# 设置为 0 将会禁用此选项
max-file-not-found=0
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=5
# 检查证书
check-certificate=false
# 禁用缓存
http-no-cache=true
# 磁盘缓存
# 如果设置为 0, 将禁用磁盘缓存. 此功能将下载的数据缓存在内存中
# 最多占用此选项设置的字节数.
disk-cache=32M
# FTP Specific Options

# BT/PT Setting
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
#最大连接节点数
#设置每个BT下载的最大连接节点数. 0 表示不限制.
bt-max-peers=100
# 自动BT任务
follow-torrent=true

# 启用 DHT (IPv6)
# 启用 IPv6 DHT 功能. 如果种子设置为私有, 即使此选项设置为"是", aria2 也不会启用
enable-dht6=true
enable-dht=true
dht-listen-port=6881-6999

# 不检查已经下载的文件
# 不检查之前下载文件中每个分片的哈希值.
bt-seed-unverified=false
# 做种前检查文件哈希
# 如果设置为"是", 当使用 --check-integrity 选项完成哈希检查及文件完成后才继续做种. 如果您希望仅当文件损坏或未完成时检查文件, 请设置为"否". 此选项仅对 BT 下载有效
bt-hash-check-seed=false
# 保存上传的种子文件
rpc-save-upload-metadata=true
# 删除未选择的文件
# 当 BT 任务完成后删除未选择的文件. 要选择需要下载的文件, 请使用 --select-file选项.
# 如果没有选择, 则所有文件都默认为需要下载. 此选项会从磁盘上直接删除文件,
# 请谨慎使用此选项.
bt-remove-unselected-file=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
bt-request-peer-speed-limit=2M
#做种时间
seed-time=0
#优先下载
bt-prioritize-piece=head=10M
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=1.0

# Metalink Specific Options
# RPC Options
# 启用RPC, 默认:false
enable-rpc=true
# 种子文件下载完后暂停
pause-metadata=false

#种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
#保存上传的种子文件
rpc-save-upload-metadata=true
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
rpc-secure=false

# Advanced Options
#启用后台进程
daemon=true
# 禁用IPV6,默认:false
disable-ipv6=true
# 启用 MMap
# 内存中存放映射文件. 当文件空间没有预先分配至, 此选项无效. 参见 --file-allocation.
enable-mmap=true
# 文件分配方法
# "prealloc"会在下载开始前预先分配空间.
# ext4 (带扩展支持), btrfs, xfs 或 NTFS (仅 MinGW 构建), "falloc" 是最好的选择
file-allocation=falloc
#最多下载结果 下载结果包括已完成/错误/已删除的下载
max-download-result=30
# 文件分配限制
# 不对比此参数设置大小小的分配文件. 您可以增加数值的单位 K 或 M
#no-file-allocation-limit=32M
# 强制顺序
force-sequential=true
# 启用参数化 URI 支持
# 您可以指定部分的集合: http://{sv1,sv2,sv3}/foo.iso.
# 同时您也可以使用步进计数器指定数字化的序列: http://host/image[000-100:2].img.
# [需使用 -z 选项]
# 步进计数器可以省略.
parameterized-uri=true
#延迟加载
deferred-input=true

# bt-tracker=BT服务器(多个服务器之间用,分开)
bt-tracker=udp://tracker.coppersurfer.tk:6969/announc,udp://tracker.leechers-paradise.org:6969/announc,udp://tracker.opentrackr.org:1337/announc,udp://p4p.arenabg.com:1337/announc,udp://9.rarbg.to:2710/announc,udp://9.rarbg.me:2710/announc,udp://exodus.desync.com:6969/announc,udp://tracker.pomf.se:80/announc,udp://tracker.openbittorrent.com:80/announc,udp://tracker.tiny-vps.com:6969/announc,udp://open.stealth.si:80/announc,udp://denis.stalker.upeer.me:6969/announc,udp://tracker.torrent.eu.org:451/announc,udp://tracker.moeking.me:6969/announc,udp://tracker.cyberia.is:6969/announc,udp://ipv4.tracker.harry.lu:80/announc,udp://tracker3.itzmx.com:6961/announc,udp://open.demonii.si:1337/announc,udp://explodie.org:6969/announc,udp://valakas.rollo.dnsabr.com:2710/announe

## 执行额外命令 ##

# 下载停止后执行的命令
# 从 正在下载 到 删除、错误、完成 时触发。暂停被标记为未开始下载,故与此项无关。
on-download-stop=/etc/aria2/delete.sh

# 下载完成后执行的命令
# 此项未定义则执行 下载停止后执行的命令 (on-download-stop)
on-download-complete=/etc/aria2/clean.sh

# 下载错误后执行的命令
# 此项未定义则执行 下载停止后执行的命令 (on-download-stop)
#on-download-error=

# 下载暂停后执行的命令
#on-download-pause=

# 下载开始后执行的命令
#on-download-start=

# BT 下载完成后执行的命令
#on-bt-download-complete=

#注意修改aria2.conf文件中以下选项:
#下载文件保存路径,改为你想要的
#dir=D:\MyDownload\aria2\
# 日志文件,路径D:\aria2\,改为你安装aria2的路径
<code>#log=D:\aria2\aria2.log
#input-file=D:\aria2\aria2.session
#save-session=D:\aria2\aria2.session</code>

一键安装及配置开源项目地址:

2、aria2开机启动设置

创建一个Start.vbs,内容如下,将其快捷方式或者直接复制start.vbs,放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp路径下即可。

1
CreateObject("wscript.shell").Run  "D:\Programs\Aria2\aria2c.exe --conf-path=D:\Programs\Aria2\aria2.conf",0

或者下面的vbs批处理命令
1
2
3
# currentpath = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path
currentpath = createobject("Scripting.FileSystemObject").GetFolder(".").Path
CreateObject("wscript.shell").Run currentpath+"\aria2c.exe --conf-path=aria2.conf",0

3、 更新trackers批处理命令

(1)powershell下运行新建trackersList.psl的批处理文件,输入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'aria2.conf位置、要下载的trackers文件,在这里修改
$ConfigFile = "D:\Programs\Aria2\aria2.conf"
$TrackersFile = "trackers_best.txt"
$DownloadLink = "https://raw.githubusercontent.com/ngosang/trackerslist/master/$TrackersFile"

Invoke-WebRequest -Uri $DownloadLink -OutFile $env:TEMP\$TrackersFile

$TrackersStream = (Get-Content $env:TEMP\$TrackersFile -Raw).Replace("`n`n", ",").Insert(0, "bt-tracker=")
$TrackersStream = $TrackersStream.Substring(0, $TrackersStream.Length - 1)

$ExcludeLineNum=(Select-String -Path $ConfigFile -SimpleMatch "bt-tracker=").LineNumber
$ConfigStream = Get-Content $ConfigFile
$ConfigStream[$ExcludeLineNum-1]=$TrackersStream
Set-Content -Path $ConfigFile -Value $ConfigStream -Encoding Default

Remove-Item -Path $env:TEMP\trackers*

【ps版本运行会出错,待解决】或者 cmd 下运行新建trackersList.bat的批处理文件,trackersList.bat输入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off

:: aria2.conf位置、要下载的trackers文件,在这里修改
::set CONF_FILE=%USERPROFILE%\.aria2\aria2.conf
set CONF_FILE=E:\Aria2\aria2.conf
set TRACKER_FILE=trackers_best.txt
set DOWNLOAD_LINK=https://raw.githubusercontent.com/ngosang/trackerslist/master/%TRACKER_FILE%

::下载 trackerlist
::aria2c --dir=%TEMP% --allow-overwrite=true "%DOWNLOAD_LINK%"
aria2c --dir=%~dp0 --allow-overwrite=true "%DOWNLOAD_LINK%"

::用 sed 整理 trackerlist 格式
sed.exe -i ":a;N;s/\n/ /; ta;" %~dp0%TRACKER_FILE%
sed.exe -i "1s/^/bt-tracker=/g; s/ /,/g; s/ $//;" %~dp0%TRACKER_FILE%

::删除当前 aria2 配置 中的 trackerlist
sed.exe -i "/^bt-tracker=/d" %CONF_FILE%

type %~dp0%TRACKER_FILE% >> %CONF_FILE%

del .\sed*
del .\trackers_best.txt

①需要安装sed.exe,安装git,git下载地址后自带sed.exe程序文件,安装完成后(32位路径)如:E:\Program Files\Git\usr\bin
【或者单独下载windows系统下的sed 软件,需要下载以下两个链接的文件,解压到同一文件夹Bin 文件内的 sed.exedll 不能删除。
sed-4.2.1-bin
sed-4.2.1-dep
②将sed.exe加入到环境变量方法:运行sysdm.cpl高级环境变量用户环境变量里面 选中“path”编辑新建E:\Program Files\Git\usr\bin

参考:
Aria2 Tracker 更新脚本
Aria2 bt-tracker自动更新脚本

(2)利用python更新

新建trackerslist.py文件,输入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2021-06-04 15:29:54
# @Author : KY (owenyk@g.com)
# @Link : http://example.org
# @Version : $Id$

# PepTrader & PepCoder
# 一切从兴趣开始...
# It all starts with interests...
# I am PepCoder
# This is a Windows version of BT Trackers Updater via Python 3.6.6
# Original work belongs to @zmr, you can find his original work at
# 最初代码源来自于 @zmr,您可以在以下网址找到其最初的作品版本
# https://gitee.com/Zero_gitee/UpdateTrackers
# Trackers的代码源是来自于: https://github.com/XIU2/TrackersListCollection

#--------- 安装库------------#
# PS E:\Aria2> pip3 install bs4
# PS E:\Aria2> pip install lxml
# PS E:\Aria2> pip install requests
# PS E:\Aria2> pip install html5lib
#---------------------------#

import bs4
import requests
import logging
import os
import time


# 全局配置:
# url_trackers_best = "https://trackerslist.com/all.txt" # 这个是普通版的,可以用在其它BT用户端上
url_trackers_best = "https://trackerslist.com/best.txt" # 这个是aria2友好版,为aria2专门设计的
aria2_config = "D:\\Programs\\Aria2\\aria2.conf" # 设定好您的aira2所在位置,因为每个人放aria2的文件夹都不一样。
logFile = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logger.log')

# 配置日志参数
logging.basicConfig(filename=logFile,
format="%(asctime)s \n%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
filemode='w',
level=40)


def log(level, message):
"写日志"
logging.log(level, message)
return


def getTrackers(url):
"更新Trackers"
t = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
log(logging.DEBUG, "更新Trackers【开始】{0}\n url = {1}".format(t, url))
try:
# 获取最新数据
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/67.0.3396.99 Safari/537.36'
}
response = requests.get(url, headers=headers).content
soup = bs4.BeautifulSoup(response, 'html5lib') # 解析
all_trackers = soup.find(name='body').get_text().replace("\n\n",",") # 复制
print(all_trackers)
log(logging.DEBUG, "更新Trackers【结束】{0}".format(all_trackers))
return all_trackers
except BaseException as e:
log(logging.ERROR, "更新Trackers【异常】{0}".format(e))
return None


def update_config(all_trackers):
"更新aria2.conf文件 bt-tracker=best_tracker"
try:
btTrackerIndex = -1
cfgList = list()
with open(aria2_config, 'r', encoding='utf8') as cfgFile:
lines = cfgFile.readlines()
cfgList = list(lines)
print(cfgList)
for line in cfgList:
if line.startswith("bt-tracker="): # 在.conf里遍历寻找这一行设置
btTrackerIndex = cfgList.index(line)
break
if btTrackerIndex >= 0:
cfgList.pop(btTrackerIndex)
if btTrackerIndex - 1 >= 0 and cfgList[btTrackerIndex - 1].startswith("#更新于"):
cfgList.pop(btTrackerIndex - 1)
btTrackerIndex = btTrackerIndex - 1
else:
btTrackerIndex = 0

cfgList.insert(btTrackerIndex, "bt-tracker="+all_trackers+"\n") # 覆盖写入更新内容
update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
cfgList.insert(btTrackerIndex, "#更新于"+update_time+"\n")

with open("D:\\Programs\\Aria2\\aria2.conf", "w", encoding='utf8') as cfgFile: # 存储
cfgFile.writelines(cfgList)

return True
except BaseException as e:
log(logging.ERROR, "更新aria2.conf文件【异常】{0}".format(e))
return False


def reset_config():
"aria2c --conf-path=D:\Programs\Aria2\aria2.conf"
try:
os.system("aria2c.exe --conf-path=" + aria2_config)
except BaseException as e:
log(logging.ERROR, "重新载入配置文件【异常】{0}".format(e))
return False


# 配置日志输出级别
logger = logging.getLogger()
logger.setLevel(logging.ERROR)

# 开始更新操作
log(logging.DEBUG, "开始更新操作【开始】")
all_trackers = getTrackers(url_trackers_best)
update_config(all_trackers)
reset_config()
log(logging.DEBUG, "开始更新操作【结束】\n")

trackerlist的开源项目:
XIU2/TrackersListCollection