前言

之前一直使用的OneDrive搭建的网盘程序,对我自己个人来说使用挺方便,但是有时候把网盘分享给别人,因为信息获得的不对等性,很多人不会使用IDM多线程下载,或者是由不同的网络环境造成,就有人吐槽我的网盘很慢很慢(无奈.jpg)。好消息是,一次无意间使用自己的手机号登录天翼网盘,发现自己的手机号是拥有10TB永久空间的“老用户”🤣

天翼云在国内速度是真的不错,有电信骨干网络支持,文件的实际存储节点在国内是AWS节点,在萌Rat大佬的博客找到了——CTList:一个可以绑定多个天翼云网盘的目录列表程序,支持视频播放,用来搭建天翼云网盘直链程。(非常感谢大佬给的申请码)

天翼云关闭了很多Api,之前很多能用的目录罗列程序都GG了,还有个ShareList也支持天翼云目录罗列,但似乎是使用账号密码登录(Cookie缓存),但是使用体验不太好……所以CTList且用且珍惜吧~

简介

程序的项目地址:https://github.com/iiiiiii1/CTList

原项目地址:https://github.com/MoeClub/CTList (已404🤐)

功能:

  • 支持多账户
  • 支持显示文件夹大小
  • 支持每天自动签到
  • 支持异步缓存
  • 支持隐藏指定文件夹和文件
  • 支持整个目录,单层目录或单文件访问加密
  • 支持展示任意目录,自定义根目录
  • 支持只读挂载到PotPlayer(WebDAV), nPlayer(WebDAV)

安装

我的环境是CentOS+宝塔面板国际版,其它系统更详细的教程可以查看MoeRat大佬的教程原文

准备

已经有账号的就跳过,没有需要用自己手机号注册个天翼网盘

  • 授权码 [32位小写字母和数字,一个授权码可以绑定多个用户名,用于启动多账户.] [获取授权码]
  • 主程序 (CTList)
  • 配置文件 (config.json)
  • 皮肤文件 (index.html)

开始

1
2
3
4
5
6
7
8
9
10
11
12
# 新建CTList的目录
mkdir /opt/CTList && cd $_
# 64位系统下载
wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/exec/amd64/linux/CTList
# 给CTList目录权限
chmod +x CTList
# 下载配置文件
wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/config.json
# 下载默认主题
wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/index.html
# 支持图片在线浏览/视频在线播放的主题在萌咖大佬的仓库自行下载html放到CTList目录即可
https://github.com/MoeClub/OneList/tree/master/Rewrite/@Theme
主题下载

HaorWu

jackjieYYY

CTListconfig.jsonindex.html放在同一个目录下即可

1
2
3
4
5
6
.
|——opt
|——CTList
|——CTList
|——config.json
|——index.html

编辑配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[
{
"Enable": 1, # 0: 关闭, 1: 打开
"UserName": "", # 天翼云网盘登陆用户名,不需要@189.cn.
"Password": "", # 天翼云网盘登陆密码
"CaptchaMode": "0", # 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.
"ViewMode": 0, # 显示模式. 0: 自动识别. 1: 只使用网页模式. 2:只使用WebDAV模式.
"RefreshToken": "", # 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.
"SubPath": "/CTList", # 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.
"RootPathId": "-11", # 设置展示天翼网盘目录的ID, 根目录为 -11.
"HideItemId": "0|-16", # 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.
"AuthItemId": "", # 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"
"RefreshURL": 189, # 下载直链缓存的秒数. 超时则被动更新.
"RefreshInterval": 1800 # 刷新目录结构,如果不常更新,建议设置更长时间.
}
]

CaptchaMode后面将0改为https://api.moeclub.org/SampleCode用于识别登陆验证码

调整limits

防止Linux下可能由于高并发导致的报错,终端下执行下列命令

1
[ -f /etc/security/limits.conf ] && LIMIT='262144' && sed -i '/^\(\*\|root\)[[:space:]]*\(hard\|soft\)[[:space:]]*\(nofile\|memlock\)/d' /etc/security/limits.conf && echo -ne "*\thard\tmemlock\t${LIMIT}\n*\tsoft\tmemlock\t${LIMIT}\nroot\thard\tmemlock\t${LIMIT}\nroot\tsoft\tmemlock\t${LIMIT}\n*\thard\tnofile\t${LIMIT}\n*\tsoft\tnofile\t${LIMIT}\nroot\thard\tnofile\t${LIMIT}\nroot\tsoft\tnofile\t${LIMIT}\n\n" >>/etc/security/limits.conf

启动CTList

1
2
3
4
# 直接运行
/opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 8000
# 后台运行
/opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 8000 -d

注意:port后面的端口可以自己定义,但是要注意在服务器的安全组和系统防火墙放行;AUTH_TOKEN是你的授权码

启动了后,就可以使用ip:8000/CTList访问程序了,后面为SubPath参数路径,可以配置文件自行修改

开机自启

对于CentOS 7Debian 8以上、Ubuntu 16以上的Linux系统可以通过systemd配置文件来配置CTList的开机自启服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 配置systemed服务
cat > /etc/systemd/system/ctlist.service <<EOF
# 填入配置 ${AUTH_TOKEN} 是授权码: ${port} 是你的访问端口
[Unit]
Description=ctlist
After=network.target

[Service]
Type=simple
ExecStart=/opt/CTList/CTList -a ${AUTH_TOKEN} -bind 0.0.0.0 -port ${port} -l
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 重载配置
systemctl daemon-reload
# 启动并设置开机自启
systemctl start ctlist
systemctl enable ctlist

管理命令

平时管理的基本命令

1
2
3
4
启动服务:systemctl start ctlist
停止服务:systemctl stop ctlist
重启服务:systemctl restart ctlist
查看服务状态:systemctl status ctlist

绑定自定义域名

如果你不想通过IP+端口的方式访问,可以绑定自定义域名,最简单的:宝塔新建个网站,反代以下即可

新建站点

填入你的本地端口

如果你想通过其他方式的请直接看Rat大佬的博客

进阶配置

找文件/目录ID

在配置文件里,有 RootPathId, HideItemId, AuthItemId 三个用到天翼云盘文件或者目录ID的配置项,要想获取文件或者目录的ID,只需要在天翼云盘的web端登录:https://cloud.189.cn/,进入想要操作的文件或者目录下,浏览器地址栏后面的一串数字就是我们想要操作的目录/文件的ID

RootPathID:这是天翼云盘的根目录ID,天翼云盘根目录ID为-11

HideItemId:想要隐藏的文件或者目录ID

AuthItemId:想要加密的文件或者目录ID

隐藏文件目录

找到你想要操作的文件或者目录ID,修改CTList的配置文件中的HideItemId项,按照下列写法写你实际的ID即可:

1
2
3
4
# 隐藏单个文件或者目录
"HideItemId": "-11"
# 如果是隐藏多个文件或者目录使用“|”隔开
"HideItemId": "-12|-13|-14|-16|-19|-10",

加密文件目录

找到你想要操作的文件或者目录ID,修改CTList的配置文件中的AuthItemId项,按照下列写法写你实际的ID即可:

1
2
3
4
# 加密单个文件或者目录
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>
# 加密多个文件或者目录,同样使用“|”隔开
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>|<文件或者目录的ID>?<加密模式>?<用户名>:<密码>

对于加密模式,参数可以写0或者1

0: 只加密这一层文件夹,可以直接访问这层文件夹内部的内容.
1: 加密这个文件夹的所有子项目.
注意: 加密文件选0和1效果相同.

1
2
3
4
# 加密单个文件/目录写法示例
"AuthItemId": "32492392372384545?1?admin:123mima"
# 加密多个文件/目录写法示例
"AuthItemId": "59343485347843475?1?admin:000000|54853475834785?1?admin:000110|99453475837645?1?admin:100110"

客户端WebDAV配置

对于类似支持webDAV的客户端,比如nPlayerInfuse等软件,参考下列配置:

1
2
3
4
5
6
# 通讯协议:WebDAV
# http/https:有https的勾选https
# 主机/地址:填域名,如“xxx.com”
# 路径:按照实际 Subpath 的值写,比如:默认的是"/CTList"
# 用户名/密码:如果有加密文件或者目录按照实际的来写就可以了
# 端口:按照你的实际来写,如果使用域名反代访问并且强制SSL的话就填443端口

利用CTList的webDAV搭配支持使用webDAV的软件可以播放该软件支持的各种编码格式的视频,如果你对这个需求比较高,可以适当的将最小缓存时间调小以提高浏览体验。

webDAV体验

报错问题

400(Not Found URL): 未能找到该文件的链接.
404(Not Found): 未完成初次缓存目录结构或文件路径不正确.
422(Not Found Real URL): 未能生成真实的文件下载链接(一般是文件被举报了,无法下载).
5XX: 一般是服务器端的问题. 部分可能的情况有: 主程序没开, 端口不通, 反代配置不正确.

需要注意的是,如果CTList正在运行,每次修改配置后你都需要手动重启CTList的进程以便配置文件生效!