搭建天翼云盘目录程序 CTList

搭建天翼云盘目录程序 CTList

偶然一次发现我的这个手机号拥有 天翼云盘 老用户 10TB 永久存储空间,又偶然 🤡 在萌鼠大佬的博客看到 CTList:一个可以绑定多个天翼云网盘的目录列表程序,支持视频播放,后来大佬给了个申请码,按照大佬的教程我很快用上了这款『最好用』的天翼云盘目录罗列程序🤤

按照萌鼠大佬的说明,天翼云盘在国内有电信骨干网络支持,文件的实际存储节点为 AWS 国内节点,在国内速度都很不错

🎈题外话:直接使用天翼云分享文件的话,别人获得了文件分享链接能反查到分享者的手机号码,不建议使用天翼云官方的文件分享服务

预览

特性

  • 支持多账户
  • 支持显示文件夹大小
  • 支持每天自动签到
  • 支持异步缓存
  • 支持指定目录或文件的隐藏或加密
  • 支持展示任意目录,自定义根目录
  • 支持只读 WebDAV 挂载到 Potplayer、nPlayer、Kodi 等媒体播放器

安装

首先使用 申请码 ( Apply Token )获取 授权码 ( Auth Token )记录下来备用,👉 传送门

使用 SSH 登录 Linux 服务器,以 Debian 10.9 x64 为例:

# 新建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/MoeClub/OneList/master/Rewrite/@Theme/HaorWu/index.html

该主题特性

  • 支持移动端自适应
  • 支持当页搜索
  • 支持按文件名, 日期, 大小排序
  • 支持在线播放视频

因为 CTList 是已经编译好的 Golang 二进制程序,此时程序目录如下

.
|——opt
    |——CTList
       |——CTList
       |——config.json
       |——index.html

编辑配置文件,按照注释修改

[
    {
        "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"     # 刷新目录结构,如果不常更新,建议设置更长时间
    }
]

天翼云账号登录可能会要验证码,使用 api 打码:将 "CaptchaMode": "0" 中的 0 改为 https://api.moeclub.org/SampleCode

程序在第一次运行的时候缓存会有很大的并发,为了防止 Linux 下高并发可能出现的报错,使用命令调整 limits

[ -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

# 前台运行
$ /opt/CTList/CTList -a ${AUTH_TOKEN} -bind 0.0.0.0 -port ${port}
# 后台运行
$ /opt/CTList/CTList -a ${AUTH_TOKEN} -bind 0.0.0.0 -port ${port} -d
  • ${AUTH_TOKEN} :CTList 授权码
  • ${port} : CTList 监听端口

记得在服务器安全组和服务器系统防火墙放行 CTList 使用的端口, 授权码端口 换成自己的 :

# 前台运行
$ /opt/CTList/CTList -a 1234abc123abc1ab2ab3ab -bind 0.0.0.0 -port 52020
# 后台运行
$ /opt/CTList/CTList -a 1234abc123abc1ab2ab3ab -bind 0.0.0.0 -port 52020 -d

这样的启动方式在 SSH 和服务器断开或者服务器重启后程序就会停止运行,下面使用 systemd 配置程序开机自启任务( 支持 CentOS 7+、Debian 8+、Ubuntu 16+ 版本),编辑 systemd 配置文件

# 配置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

设置 CTList 开机自启

# 重载配置
$ systemctl daemon-reload
# 启动程序
$ systemctl start ctlist
# 开机自启
$ systemctl enable ctlist

管理命令

#启动服务
$ systemctl start ctlist
#停止服务
$ systemctl stop ctlist
#重启服务
$ systemctl restart ctlist
#查看服务状态
$ systemctl status ctlist

如果需要绑定域名:使用 Nginx 反代 http://127.0.0.1:${port} 即可

配置

加密/隐藏

登录天翼云盘网页版 https://cloud.189.cn/ 点击 目录树 在地址栏看到的一串数字即 文件夹ID,单独的 文件ID 需要通过浏览器 F12 获取

# 配置说明
RootPathID:CTList起始目录目录ID,根目录ID为`-11`
HideItemId:隐藏的文件或者目录ID
AuthItemId:想要加密的文件或者目录ID
# 隐藏单个文件或者目录
"HideItemId": "-11"
# 如果是隐藏多个文件或者目录使用“|”隔开
"HideItemId": "-12|-13|-14|-16|-19|-10"
# 加密单个文件或者目录
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>
# 加密多个文件或者目录,同样使用“|”隔开
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>|<文件或者目录的ID>?<加密模式>?<用户名>:<密码>

加密模式

  • 0 :只加密该文件夹,可以直接访问这层文件夹内部的内容
  • 1 :加密该文件夹的及其所有子目录

加密写法示例:

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

修改配置文件后需重启 CTList 以使配置生效

WebDAV

CTList 支持以只读的 WebDAV 协议挂载到一些媒体播放器,WebDAV 配置项说明 👇

  • 通讯协议:WebDAV
  • 协议类型:HTTP 或者 HTTPS ( 启用的情况下 )
  • 主机地址:程序绑定的 域名 或者 IP
  • 用户名/密码:根据实际填写
  • 端口:程序运行的端口

卸载

CTList 是编译好的 Golang 二进制程序,卸载简单无残留:

#删除程序目录
$ rm -rf /opt/CTList

#删除开机自启任务
$ systemctl stop ctlist
$ systemctl disable ctlist
$ rm -rf /opt/CTList /etc/systemd/system/ctlist.service

Q&A

  • 404(Not Found):初次缓存文件目录数据未完成或文件路径配置不正确,在终端里查看缓存是否完成

    缓存完成

  • 400(Not Found URL):未能找到该文件的链接

  • 422(Not Found Real URL):未能生成真实的文件下载链接( 文件被举报,无法下载 )

  • 5XX:服务器内部错误,检查端口、防火墙、反代配置

  • 服务套 CDN 后,文件加密失效:CDN 设置只缓存关键 HTTP 头,设置 HTTP 401 状态码不缓存

搭建天翼云盘目录程序 CTList

https://www.dejavu.moe/posts/ctlist/

作者

Dejavu

发布于

2020-09-17

更新于

2021-10-16

许可协议

评论