写了一个蓝奏云单文件直链解析下载器
在线文件存储需求
最近有一个文件云存储的需求,希望可以通过链接直接下载文件,并且速度要说得过去,能支持的格式要足够多,容量也够用。
我知道的可以通过GitHub来上传文件,但这比较是国外的网站,主要也是为了存放代码的,国内下载东西比较玄学,所以并不适用。
国内的网盘就别想了。
因为我有使用蓝奏云保存分享文件的习惯,但是他不能直接通过固定的链接来下载文件,需要手动点击文件动态获取下载的链接。
今天突然有了兴致觉得研究一下。
通过bat批处理脚本来获取
具体的分析流程就不赘述了,这里分享一下写的bat脚本。
@echo off & chcp 65001>nul & setlocal enabledelayedexpansion
echo.&echo 蓝奏云文件下载器 &echo.&echo.&echo.
:: 解析蓝奏云文件直链地址,并下载文件
set "base_url=https://wwqn.lanzoul.com/"
set "file_code=i5aSe2u1gspi"
:: 如果有传参,使用传入的参数,并设置使用到的临时文件
if not "%~1"=="" set "file_code=%~1"
set "temp_file=%TEMP%\lanzoul.tmp"
:: 获取文件名和请求参数地址
for /f "tokens=1-10 delims=<> " %%a in ('curl.exe -ks %base_url%%file_code% ^| findstr "title iframe"') do (
if "%%a"=="iframe" set "iframe_src=%%d" & set "iframe_src=!iframe_src:~5,-1!"
if "%%a"=="title" set "file_name=%%b")
:: 获取下载地址请求参数
curl.exe -ks %base_url%!iframe_src! > %temp_file%
for /f "delims=" %%a in ('findstr /C:"wp_sign =" /C:"ajaxdata =" /C:"url :" %temp_file%') do ( set "line=%%a"
echo !line! | findstr /C:"wp_sign =" >nul && for /f "tokens=2 delims='" %%b in ("!line!") do set "wp_sign=%%b"
echo !line! | findstr /C:"ajaxdata =" >nul && for /f "tokens=2 delims='" %%b in ("!line!") do set "ajaxdata=%%b"
echo !line! | findstr /C:"url :" >nul && for /f "tokens=2 delims='" %%b in ("!line!") do set "url=%%b")
:: 获取下载地址josn格式
curl.exe -ks -o %temp_file% "%base_url%%url%" -H "Content-Type: application/x-www-form-urlencoded" -H "Referer: %base_url%!iframe_src!" ^
--data "action=downprocess&websignkey=%ajaxdata%&signs=%ajaxdata%&sign=%wp_sign%&websign=&kd=1&ves=1"
:: 解析拼接下载地址
for /f "usebackq tokens=*" %%i in (`powershell -NoProfile -Command "$json = Get-Content '!temp_file!' ^| ConvertFrom-Json; Write-Output ($json.dom + '/file/' + $json.url)"`) do set "final_url=%%i"
:: 下载文件,需要设置请求头Accept-Language
echo 正在下载!file_name!&echo.
curl.exe -kL -H "Accept-Language: zh-CN,zh;q=0.9" -o !file_name! %final_url%
del %temp_file% &echo.&echo 下载完成。&pause>nul
使用方法
把上面的代码保存到文本编辑器里面,重命名后缀为bat
,编码设置为UTF-8
。
-
可以通过修改脚本里面的链接来获取直链进行下载
-
或者通过调用
.\蓝奏云下载器.bat xxxxxxx
下载,其中xxxxxxx
替换为文件码
演示
修改脚本后直接点击bat文件进行下载
自定义传入文件码下载
目前并不支持密码的下载方式。