适用于
pikpak-share-helper.user.js v0.6.0。本脚本运行在 PikPak 网页分享页面中,用于扫描分享目录、获取可用下载直链,并通过浏览器或 aria2 下载资源。
脚本提供以下功能:
安装 ScriptCat 浏览器扩展。
打开 ScriptCat,创建一个新用户脚本。
将项目中的 pikpak-share-helper.user.js 全部复制进去并保存。
打开 PikPak 分享页面:
https://mypikpak.com/s/分享ID
页面右下角应出现 PikPak 下载助手 按钮。
脚本只匹配以下页面:
https://mypikpak.com/s/*
视频、音频和图片通常可以通过分享接口获取预签名 CDN 直链。脚本对媒体文件不设置 100 MB 大小拦截,实际下载能力仍可能受到 PikPak、CDN、代理线路和分享策略影响。
常见媒体扩展名包括:
mp4、mkv、avi、mov、webm、ts、m2ts、mp3、flac、wav、jpg、jpeg、png、gif、webp 等
压缩包、文档、安装包和其他非媒体资源的处理规则如下:
localStorage 读取登录凭证,不需要手动复制 token;脚本会读取页面中类似下面的 localStorage 项:
credentials_<client_id>
脚本只在内存中使用 access_token,不会将登录 token 写入日志、导出的 URL 文件或 GM_setValue。页面刷新 token 后,脚本会在后续 API 请求中重新检测。
如果 token 失效:
扫描页面当前正在显示的目录。
由于 PikPak 分享链接中第三段目录引用是内部加密引用,脚本不能仅靠 URL 解析当前目录。进入子目录时,脚本会监听页面自己的 share/detail 请求,以获取真实目录 ID。
建议操作顺序:
如果没有进入过子目录,脚本会从分享根目录开始扫描。
从当前识别到的目录开始,递归扫描所有子文件夹。
分享内容很多时,递归扫描可能需要较长时间。脚本会对目录 API 请求进行节流,以降低触发风控的概率。
可以填写扩展名过滤器,例如:
mkv,mp4,avi
也可以填写:
.zip, .rar
留空表示显示和处理全部文件。
默认下载原画/原始媒体流。
如果原画使用 AV1、HEVC、E-AC-3 等编码,本地播放器无法播放,可以勾选 优先转码。脚本会优先选择 PikPak 已生成的转码流,通常兼容性更好,但清晰度或封装格式可能有所降低。
切换该选项后,脚本会清空已缓存的媒体直链并重新获取。
扫描完成后,每个文件行右侧有:
当前 ScriptCat 版本中,单文件下载使用浏览器直连路径,以避免大文件经过扩展后台 Blob 缓冲。下载失败时脚本会:
file_info;dl-*.mypikpak.com CDN;浏览器扩展下载大文件时,可能受扩展后台、浏览器下载实现或代理线路影响。aria2 可以:
Windows 示例:
aria2c ^
--enable-rpc ^
--rpc-listen-all ^
--rpc-allow-origin-all ^
--rpc-secret=你的密钥
默认 RPC 地址:
http://127.0.0.1:6800/jsonrpc
脚本面板中填写:
--rpc-secret;D:/PikPak;先点击 测试连接,确认脚本能调用 aria2.getVersion。
如果浏览器访问 PikPak 必须使用代理,aria2 通常不会自动继承浏览器代理,必须单独设置。
HTTP 代理示例:
http://127.0.0.1:7890
SOCKS5 代理示例:
socks5://127.0.0.1:7890
也可以在启动 aria2 时配置:
aria2c ^
--enable-rpc ^
--rpc-listen-all ^
--rpc-allow-origin-all ^
--rpc-secret=你的密钥 ^
--all-proxy=http://127.0.0.1:7890
脚本面板中的代理配置会作为 all-proxy 传递给每个 aria2 下载任务。建议浏览器、脚本 API 和 aria2 使用同一个代理出口。
脚本会为每个文件设置:
split=8
max-connection-per-server=8
min-split-size=4M
continue=true
max-tries=5
retry-wait=5
文件会根据分享中的相对路径保存。例如:
分享根目录/
├── 电视剧/
│ └── 第一集.mkv
└── 电影.mp4
如果保存目录为:
D:/PikPak
最终路径类似:
D:/PikPak/电视剧/第一集.mkv
D:/PikPak/电影.mp4
推送后不要只看“推送成功”。“推送成功”只表示 aria2 接受了任务,不代表文件已经下载完成。
面板中的 aria2 任务区会轮询显示:
如果任务显示“排队中”,可能是 aria2 并发槽位不足。如果显示“下载中”但速度为 0,优先检查代理、CDN 直链是否过期以及 aria2 日志。
面板会提示:
普通非会员每日下载额度为 20 GB,媒体文件不计入该项。
这是根据当前产品需求显示的平台规则提示,脚本本身:
如果平台返回额度或权限错误,应以服务端错误为准。
可能是当前目录本身只有文件夹。
处理方法:
这是预期行为。请:
当前脚本不会处理达到或超过 100 MiB 的非媒体文件。该判断在获取下载直链之前完成,因此不会因为重复请求而改变结果。
如果这是你有权限获取的大文件,可考虑:
按顺序检查:
先区分“下载不完整”和“编码不兼容”:
PikPak 直链是带签名和过期时间的临时 CDN URL。不要长期保存直链文本;过期后重新通过脚本获取即可。
access_token、refresh_token、captcha token 或完整签名 URL 发给他人。--rpc-listen-all 只应在可信网络中使用,并设置 RPC 密钥。