CTList一款使用go语言挂载天翼云盘的目录程序

关于CTlist

CTlist是萌咖大佬用go语言写的一款专门挂载天翼云盘的目录程序,目前流出来的程序还真是不多啊,所以基本没什么好挑剔的。同类程序有狸猫盘(采用PHP构建)、sharelist,由于语言构建方面,用起来均有一点点遗憾。目前CTlist刚刚发布,作为小白鼠,我先尝试一下,用起来响应速度不错,搭建过程异常简单。程序主要有以下特色:
支持多账户
支持显示文件夹大小
支持每天自动签到
支持异步缓存
支持隐藏指定文件夹和文件
支持整个目录,单层目录或单文件访问加密
支持展示任意目录,自定义根目录

项目地址:https://github.com/MoeClub/CTList/
萌咖大佬的博客(貌似几百年不更新了):https://moeclub.org/
注意程序所有者负责解答一切疑难杂症,本人比较菜,我只能尽量回答

2020年4月23日更新:更新了若干BUG,新版本地址https://github.com/iiiiiii1/CTList/
2020年5月24日更新: 萌咖大佬关闭了捐赠通道,已经有授权的可以继续使用,没有的想办法换其他程序吧,且用且珍惜!

环境准备

准备好VPS,安装好go环境,centos7以上理论上是不用管的,注意:此步非必须,作者已经编译好了程序,我是害怕出岔子才搞下的。

#centos系统,升级源,国内基本必须
yum install epel-release
#安装golang
yum install golang
#查看版本号,建议先运行下这个,说不定系统安装了
go version

获取授权

点击这里获取授权:传送门
《CTList一款使用go语言挂载天翼云盘的目录程序》

申请码Apply Token,失效了去作者博客或者TG要,我这里没有。不过我试了,好像可以反复使用。

咨询了萌咖大佬,得到的授权码不会过期,可以放心使用

0865A300BDEA577497C1C7F583594A2B
896BCE3EF0BB07380B4F1202A00E3D5D
489929D36EE1309D51EDF1FC1585C13A
5B2C57AB496071D8F87F32F52DC2B86C
AC86174F46D1B5153571F107490CDFB4
#4月12日新增
A595886127D5A775788C7C2E4D8DBACA
A2173A1C68959F475F97B2B3AC783604
A13B3098570D975AF0EE9ED9E90C3744
10BEE55D853D68E9D7FC3780BCB44556
37A6CBF7F7920C33F644DAE0AAFCBBCD
D4E7E9B66A26CBFCF8C09E8608CA5CD3
7DD1523FADC5A3D39F6FABD63FC22C8C
F303A2E0A7B8D3E84A57CB7CD0895966
5E1E2DD9A3C596895A1210B660A34E62
666AD7EE2BFB717ECAF2AF6177FBED7D
AA98094B000939024F2DD10DA6D09C20
0DAB6E3A9DC9846EDB6E010CFAF1B595
7AFF98E947C6D282F9E32EBA18163368
D724B2CE6C62C3EBEDB2AE56FCA1B72C
1CD0841E4875F3D7EB6FE5732D912347
A90C503EFA219A1146942B0EE58B730A
ED5D0D2DF72A482902A0F7D69C1E7B5E
8312A49A0BFC2AB2309B839B51A3DEDA
7FA8774534C9F7BCA3F4A3234E525C9C
5A6B4D936C09BC9719285B8E604BC7AA
#4月14日新增
AEA7C2560E1EC59AF09139AE813DB1B0
AB0E6941248B328BAC62964CBCAF9B98
525BFC9745FE12C56824994C40528C60
4F059E96C431F3568FEA2A8B8E5DBD5A
C8DDDB202DD7EECE31EA05F88A56A955
E4ECAC00988E8F3C14A0A5F32F4E6474
89228362876D1F67D19174222483FB1C
42B3F4BC47B4D9B031A37DB5873EDD06
F943F69ECF258E70D2B29D32D42565E1
C1FED5725DAC582918686D565048A620
CD2D8BC56DAC4145633A518A52B661AE
4056A908DE77EFFA4CB6F335C581405B
778B831A1BC9AAD8A37B937926C4C557
353D0E0FF8CE29886DC2A8D6CAB9660C
B1B5228BB65760B338B4B126E5D887F1
E27646819977C06DA6E7934FD8074250
113BA1014657F7F481DD0499CB67028B
155271E38C3FB4906B584F67DD6C7AB6
E1D30F0696D89767D12DE15189A10301
26263CBC82C38771C077E280411A0F3A

申请成功如下

《CTList一款使用go语言挂载天翼云盘的目录程序》

程序下载

下载地址:传送门,选择你的操作系统对应的主程序,下载到相应的目录即可。

#liunx 64位
https://raw.githubusercontent.com/MoeClub/CTList/master/exec/amd64/linux/CTList
#liunx 32位
https://raw.githubusercontent.com/MoeClub/CTList/master/exec/i386/win/CTList
#win 64位
https://raw.githubusercontent.com/MoeClub/CTList/master/exec/amd64/win/CTList.exe
#win 32位
https://raw.githubusercontent.com/MoeClub/CTList/master/exec/i386/win/CTList.exe
#支持MAC等等,具体下载地址到这里找
https://github.com/MoeClub/CTList/tree/master/exec

配置文件

程序运行需配置相关的配置文件方可正常运行。

配置文件有两个。分别为config.jsonindex.html

config.json主要用于配置程序启动参数

index.html用于前端显示及风格

以下为config.json文件配置注释。

无特殊需要,只需要填写账号密码即可(前4项)。修改配置后需重新启动CTList。

CaptchaMode填充为”https://api.moeclub.org/SampleCode”用于识别登陆验证码。默认:“ 0”

[
    {
        "Enable": 1,                                    # 0: Disable, 1: Enbale.
                                                        ## 0: 关闭, 1: 打开
                                                        
        "UserName": "",                                 # Input Phone Number.
                                                        ## 天翼云网盘登陆用户名.
                                                        
        "Password": "",                                 # Input Password.
                                                        ## 天翼云网盘登陆密码
                                                        
        "CaptchaMode": "0",                             # Captcha Mode. 0: Auto Reject, 1: Manual Input, other: API URL. 
                                                        ## 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.
                                                        
        "RefreshToken": "",                             # Token. * Do Not Modify It.
                                                        ## 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.
                                                        
        "SubPath": "/CTList",                           # Index Path. * Unique Per Account.
                                                        ## 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.
                                                        
        "RootPathId": "-11",                            # Default Root: -11
                                                        ## 设置展示天翼网盘目录的ID, 根目录为 -11.
                                                        
        "HideItemId": "0|-16",                          # Allow Folder and File.
                                                        ## 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.
                                                        
        "AuthItemId": "",                               # HTTP 401.
                                                        ## 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"
                                                        
        "RefreshURL": 189,                              # Min: 180, Max: 1800; Allow Max: 2329
                                                        ## 下载直链缓存的秒数. 超时则被动更新.
                                                        
        "RefreshInterval": 1800                         # Max: Null, Min: 300
                                                        ## 刷新目录结构,如果不常更新,建议设置更长时间.
    }
]

访问地址

根据配置文件中的SubPath项中参数访问具体网盘

一般 SubPath 的具体值在终端中显示在中括号内. 比如: [/CTList]

例如: "SubPath": "/CTList"
访问: http://127.0.0.1:5189/CTList

例如: "SubPath": "/"
访问: http://127.0.0.1:5189/

安装实例

注意:以下全部在同一目录内操作。

更新系统安装wget

#更新yum
yum update
#安装wget
yum install wget

下载主程序

#创建个目录,也可以不创建,直接用根目录开搞,不利于系统搬移
mkdir /home/ctlist &&cd /home/ctlist
#下载程序文件,具体见上,这里是centos7-64
wget https://raw.githubusercontent.com/MoeClub/CTList/master/exec/amd64/linux/CTList
#授权程序可以运行权限
chmod +x CTList

下载配置文件

编辑保持配置文件

#编辑
vim config.josn
#填入用户名和密码保持
[
  {
    "Enable": 1,
    "UserName": "",
    "Password": "",
    "CaptchaMode": "0",
    "RefreshToken": "",
    "SubPath": "/CTList",
    "RootPathId": "-11",
    "HideItemId": "0",
    "AuthItemId": "",
    "RefreshURL": 198,
    "RefreshInterval": 1800
  }
]

下载前端首页文件

打开端口,程序默认监听5189端口,也可以直接授权80出去

#CentOS 6
iptables -I INPUT -p tcp --dport 5189 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

#CentOS 7
firewall-cmd --zone=public --add-port=5189/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

运行程序

#运行程序,蓝色部分为授权码,授权免费获取可以看上面章节,32位的小写字节
/home/ctlist/CTList -a 5545asd545das5da5as5d4

也可以直接放到80端口上跑起来

/home/ctlist/CTList -a 5545asd545das5da5as5d4 -bind 0.0.0.0 -port 80

程序运行成功提示、仅供参考

[root@xiaolong ~]# /home/ct/CTList -a  2b37ee28a554dcfb3ae4abf0poa7657 -bind 0.0.0.0 -port 80
Config Num: 1
[/CTList]: Login ...
[/CTList]: Cache ...
[/CTList]: 6965 Done!

这时候打开浏览器,你的完整网址为http://ip:端口/CTList

《CTList一款使用go语言挂载天翼云盘的目录程序》

进程守护

后台运行 (Windows操作系统无效),加个-d参数即可

/home/ctlist/CTList -a 5545asd545das5da5as5d4 -bind 0.0.0.0 -port 80 -d

开机自动运行

首先添加个service

vi /usr/lib/systemd/system/ctlist.service

参考代码,我写的可能不标准,编辑完成保存,我用的是centos7的系统

[Unit]
Description=CTList

[Service]
User=root
ExecStart=/home/ctlist/CTList -a 5545asd545das5da5as5d4 -bind 0.0.0.0 -port 80 -d
Restart=on-abort

[Install]
WantedBy=multi-user.target

官方写法,cat > /etc/systemd/system/ctlist.service <<EOF

[Unit]
Description=ctlist
After=network.target

[Service]
Type=simple
ExecStart=/path/to/CTList -a "<AUTH_TOKEN_32>" -bind 0.0.0.0 -port 80 -l
Restart=on-failure

[Install]
WantedBy=multi-user.target

重载配置

systemctl daemon-reload

测试启动

systemctl start ctlist

开机启动

systemctl enable ctlist

关闭服务

systemctl stop ctlist

查看状态

systemctl status rclone

反向代理

如果你的80端口被占用,和其他web环境共存情况下,可以使用反向代理,将5189进程端口反代一下

使用宝塔面板的直接在后台操作

《CTList一款使用go语言挂载天翼云盘的目录程序》

也可以在直接编辑webxxxx.com.nginx.conf文件,重启nginx进程生效

location ^~ /onedrive/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:5288;
    }

程序命令

Usage of CTList:
  -bind string
        Bind Address (default "127.0.0.1")
  -port string
        Port (default "5189")
  -a string
        Auth Token.
  -c string
        Config file. (default "config.json")
  -t string
        Index file. (default "index.html")
  -json
        Output json.
  -d
        Run in the background.
  -l
        Less output.

加密目录

AuthItemId 配置项 采用 HTTP 401 认证方式加密

# 单个写法
"AuthItemId": "-11?0?UserName:Password"
# 多个写法
"AuthItemId": "-11?0?UserName:Password|-16?1?UserName:Password"

# 字段解析
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>

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

刷新策略

# 4个刷新逻辑完全异步,互不影响.
Token(登陆保活): 60 * 60 * 10
Cookie(会话授权): 60 * 30
RefreshURL(真实下载链接): 189 (配置文件可改 <RefreshURL>)
RefreshInterval(刷新目录结构): 60 * 15  (配置文件可改, 全局最小值生效 <RefreshInterval>)

寻找目录ID

用于 RootPathId, HideItemId, AuthItemId 配置项

登陆 https://cloud.189.cn ;进入需要操作的目录,查看地址栏最后的数字就是这个目录的ID.

文件ID需要浏览器F12查看请求项.

RootPathId: 列表展示的根目录对应的天翼网盘文件夹ID, 天翼网盘根目录ID为 -11 
HideItemId: 在展示目录中隐藏天翼网盘内的文件或文件夹,填写其ID,使用 "|" 分隔
AuthItemId: 在展示目录中加密天翼网盘内的文件或文件夹,使用 "|" 分隔

登录验证

天翼云网盘登陆验证码识别API(基于开源OCR识别)

# 目前去噪算法只支持天翼云网盘登陆的验证码(其他类型根本识别不出来)
# 使用时可多次尝试下载不同的验证图片进行提交(目前准确率不算高,但可用.)
# 下载天翼云验证码需要添加请求头 "Referer: https://open.e.189.cn/"

# 接口: https://api.moeclub.org/SampleCode
# 方式: POST
# 参数: Base64=<IMAGE_BASE64_CODE>&Type=CTCloud
# 返回: 状态码:200, 显示识别结果. 状态码:404, 识别错误或结果不符合预设规则, 显示为空.

风格下载

与onelist风格完全兼容,可以实现在线播放等等功能。

下载地址:传送门

程序下载

官方停止了githup的开发及公开,所以目前补档一下

本地下载

  1. 小宇说道:

    提示Error! No Valid User.
    是Apply Token问题吗

    1. 山涧小石说道:

      是的兄弟,目前授权码不太好搞了,萌咖大佬也不卖了,以前有的可以继续使用,没有的只能想其他法子了

      1. 小宇说道:

        现在还有其它能用的天翼云挂载吗?
        tcshare好像也用不了

        1. 山涧小石说道:

          1、TCshare中官方API好像还可以用,我没测试,
          2、狸猫盘作者已经停止授权:演示地址d2.shikey.com,没路子就不要尝试了
          3、TClist作者停止授权,不要尝试了
          4、sharelist是唯一一个可以试试的

          1. 小宇说道:

            sharelist挂载完直接报错 :lol:
            tcshare的官方api哪里可以找吗

  2. mini说道:

    是不是 必须要用 centos
    WIN10 可以搭建吗?如果可以希望出个教材 :smile:

    1. 山涧小石说道:

      应该可以。回头更新下

      1. mini说道:

        别回头呀!
        :evil:

        我怕你忘了
        :exclaim:

        1. 山涧小石说道:

          明天来就有了

          1. mini说道:

            是不是来早了 :cool:

            1. 山涧小石说道:

              没有,昨天的授权码不能用了。不敢乱发,影响他人思路啊

          2. mini说道:

            那能不能 单独 和我说说呢

            1. 山涧小石说道:

              https://shikey.com/2020/05/07/win-ctlist-cloudreve-onelist.html
              兄弟。加班写了一节,将就看吧哈,不是在VPS上搭建的,就是在我的电脑上。所以还没写端口映射、域名绑定之类的

  3. Evcue说道:

    这个和TCShare哪个好? :redface:

    1. 山涧小石说道:

      孰好孰坏别人说的都不一定适用,要考自己试试。我用国内某云搭建速度上CTLIST速度要快点。而且CTlist是go语言打包,可以支持win等平台安装配置要方便许多

  4. bly说道:

    挖槽,写的好详细。。感谢,见过太多太多项目哪怕是收费项目教程写的跟个屎一样,什么地方报错是因为什么原因导致,怎么解决啥都没,博主这个教程可让我眼前一亮。。点个赞

    1. 山涧小石说道:

      受宠若惊

  5. YUCCI说道:

    大佬,现在如何申请Apply Token

    1. 山涧小石说道:

      找萌咖大佬要,TG地址https://t.me/MoeClub_SHOP

  6. Kyle说道:

    大佬有这个备份文件嘛,没办法下载喽

    1. 山涧小石说道:

      已经补了地址,在文章末尾处

发表回复