城通网盘API的链接研究

您所在的位置:网站首页 下载外盘 城通网盘API的链接研究

城通网盘API的链接研究

2024-01-08 03:11| 来源: 网络整理| 查看: 265

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

就在这时,我想到了城通网盘,存储的问题解决了,但是如何解决直链的问题呢?城通网盘本身的直链有十分严苛的流量限制,而现存的城通解析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参数,也就是真实的访问来源。

此接口有如下的参数表

参数名是否必须类型说明f是string文件IDpasscode否string如文件需要访问密码,可在此提供token否string用户登录时获取的登陆密钥r否string随机数,防止浏览器强制缓存ref是string

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

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

token涉及到另一个城通API:

https://rest.ctfile.com/v1/user/auth/login

怎么使用呢?很简单明了

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

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

使用GET方式后返回:

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

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3