城通网盘API的链接研究

起因:我有一个项目需要大量的直链空间存储文件,而服务器本身的空间肯定是不够的

就在这时,我想到了城通网盘,存储的问题解决了,但是如何解决直链的问题呢?城通网盘本身的直链有十分严苛的流量限制,而现存的城通解析API普遍失效。我便写出了这篇文章。

1.城通密码API解析

现在的城通网盘都带上了密码,用户使用链接的时候会先被跳转到一个页面输入密码。而这个页面的“确认按钮”绑定了verify_passcode事件。

verify_passcode事件的内部代码很简单:

//文件名:Undertale v1.001 (Edited by Sxxfgh).7z
//文件链接:https://url21.ctfile.com/f/35031121-532806680-924b31 
//访问密码:6290

//以下为当前网页的变量对应
api_server = 'https://webapi.ctfile.com';
file_id = 532806680;
folder_id = 0;
userid = 35031121;
$("#passcode").val() = 6290;
//Math.random()会生成一个随机小数


//让我们在看以下代码
function verify_passcode() {

	$.ajax({
		type: 'GET',
		url: api_server + "/passcode.php?file_id=" + file_id + "&folder_id=" + folder_id + "&userid=" + userid + "&passcode=" + $("#passcode").val() + "&r=" + Math.random(),
		dataType: 'json',
		success: function (res) {
			if (res.code == 200) {
				passcode = res.passcode;
				init_load();
			} else {
				error_code_handler(res);
			}
			
			loadtextad();
		},
	});
}

而上面的代码综合一下就是用"GET"方式访问:

https://webapi.ctfile.com/passcode.php?file_id=532806680&folder_id=0&userid=35031121&passcode=6290&r=0.11188067487366626

--------------------------------------------

也别慢慢研究了,直接给答案

2-1.获取文件信息

fileID = "35031121-532806680-924b31"; //文件ID,网址后的东西
pass = "6290"; //文件密码
r = Math.random(); //随机一个小于1的小数
fileInfoUrl = "https://webapi.ctfile.com/getfile.php?path=f&f=" + fileID + "&passcode=" + pass + "&token=false&r=" + r;

fileInfoUrl 为一个可以获取到Json的网址,获取到Json之后各位可以自己看着做——所有的信息全在Json文件里。

2-2.获取文件直链

直链API需要很多东西——而这些东西在信息API中竟然全有!

fileID = "35031121-532806680-924b31"; //文件ID,网址后的东西
pass = "6290"; //文件密码
r = Math.random(); //随机一个小于1的小数
fileInfoUrl = "https://webapi.ctfile.com/getfile.php?path=f&f=" + fileID + "&passcode=" + pass + "&token=false&r=" + r;

xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    jsonText = JSON.parse(xhr.responseText);
                    }
            };
xhr.open('get', fileInfoUrl);
xhr.send(null);


fileUrl = "https://webapi.ctfile.com/get_file_url.php?uid=" + jsonText.userid + "&fid=" + jsonText.file_id + "&file_chk=" + jsonText.file_chk + "&app=0&acheck=2&rd=" + Math.random()

// fileUrl 也是一个 json 文件的链接,直链就直接在里面了

有事,先溜了,具体发现过程以后讲吧

2022-03-19更新-----------

3-1.获取VIP直链

在上面的一堆接口中我们看到了有一个名为https://webapi.ctfile.com/getfile.php的接口,城通网盘官方是这么描述这个接口的——

查询文件信息及获取VIP下载地址。
通过本接口可以通过用户ID和文件编号的组合查询文件信息,并获取VIP高速下载地址。

请注意,文件查询接口必须提供真实的访问来源 (ref参数),若不提供将被拦截和停止使用接口。

这说明此接口有个【要求】,即为必须提供ref参数,也就是真实的访问来源。

此接口有如下的参数表

参数名是否必须类型说明
fstring文件ID
passcodestring如文件需要访问密码,可在此提供
tokenstring用户登录时获取的登陆密钥
rstring随机数,防止浏览器强制缓存
refstring

访问来源地址,可通过document.referrer获取

这意味着如果我们想要使用此接口就必须要拥有“token”,至于其他的数据我们已经能够知道了——毕竟你肯定知道文件的ID和密码吧!

token涉及到另一个城通API:

怎么使用呢?很简单明了

https://rest.ctfile.com/v1/user/auth/login?email=xxx&password=xxx

email是邮箱,password是密码,至于验证码?抱歉,不存在!

使用GET方式后返回:

{"code":200,"token":"dd4b4fcb445cb1c60e5f682fd39fk3a7"}

token就是我们需要的【令牌】,通过登录接口获取的token有效期为三天。

r为一个随机数,这个随机数是什么都没关系,毕竟它被设置的初衷就是“防止浏览器缓存”

ref为来源网址,即为你使用该API的网站的网址,建议填入,否则可能会出现接口禁用的情况。 

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Eleok是一个可以直接获取网盘下载链接的工具。它提供了一个简单易用的界面,使用户能够轻松地将网盘资源保存到自己的电脑或手机上。通过Eleok,用户只需复制粘贴网盘分享链接,并选择保存位置,即可直接获取到下载链接。 使用Eleok获取网盘下载链接的步骤如下:首先,用户需要登录到网盘服务提供商的网站,找到要下载的文件所在的分享链接。然后,用户将分享链接复制,打开Eleok工具,并将分享链接粘贴到指定的输入框中。接下来,用户需要选择保存位置,可以是本地硬盘或手机存储空间。最后,用户只需点击获取下载链接按钮,Eleok将自动分析分享链接,并生成对应的下载链接。用户可以通过点击生成的链接直接下载文件到选择的保存位置。 Eleok的使用便捷性和高效性受到了很多用户的赞赏。它不需要用户登录网盘账号,也不需要等待下载限制或付费会员资格。通过Eleok,用户可以轻松地获取到网盘资源的下载链接,无需繁琐操作或额外付费。这使得Eleok成为了广大用户在快速获取网盘资源时的首选工具。 总之,Eleok是一个简单易用且高效快捷的工具,能够直接获取网盘下载链接。它的使用过程简单,并且不需要用户登录账号或付费会员资格。通过Eleok,用户能够方便地保存网盘资源到自己的设备上,满足个人或工作需求。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值