PDF 下载小工具
· 阅读需 3 分钟
概述
这是一个基于Web的PDF文件下载工具,支持通过代理服务器处理带认证头的文件下载请求。工具包含前端界面和后端代理服务,能够安全地处理需要特殊请求头的文件下载需求。
工具页面
已合并到 https://app.sunimg.top/pdf.js/DownPDF.html
功能特性
- URL参数自动解析
- 一键代理下载
- 文件名自动提取与复制
- 状态反馈提示(成功/错误)
- 本地代理服务支持
使用说明
快速使用
- 在输入框粘贴包含参数的URL(需包含file和headers参数)
- 点击"解析URL"按钮
- 自动在新窗口打开下载页面
- 点击保存按钮下载文件
附加功能
- 复制文件名:点击结果框中的"复制文件名"按钮
- 本地代理:下载提供的exe文件,将服务地址改为
http://127.0.0.1:5000/
技术原理
核心组件
- URL解析:提取file和headers参数
- Header验证:检查X-ND-AUTH字段
- 代理构造:生成代理服务请求URL
- 文件处理:通过本站的Flask代理处理下载
代码说明
前端关键代码
<input type="text" id="urlInput" placeholder="请输入包含file和headers参数的URL">
<button onclick="processURL()">解析URL</button>
<script>
function processURL() {
// URL解码和参数解析逻辑
const decodedURL = decodeURIComponent(rawURL);
const urlObj = new URL(decodedURL);
// 代理请求构造
const proxyUrl = `https://ppdf.sunimg.top/prpr?file_url=${encodeURIComponent(fileURL)}&auth_header=${encodeURIComponent(authHeader)}`;
window.open(proxyUrl);
}
</script>
后端服务代码(Flask)
@app.route('/prpr', methods=['GET'])
def proxy_download():
file_url = request.args.get('file_url')
auth_header = request.args.get('auth_header')
headers = {'X-ND-AUTH': auth_header}
response = requests.get(file_url, headers=headers)
pdf_file = io.BytesIO(response.content)
return send_file(pdf_file, mimetype='application/pdf')
注意事项
- URL必须包含有效的file和headers参数
- 本地代理运行时需保持exe文件持续运行
- 文件下载速度受我方网络上传限制(总之就是你别急
故障排查
| 现象 | 解决方案 |
|---|---|
| 缺少参数错误 | 检查URL是否包含完整的file和headers参数 |
| JSON解析失败 | 验证headers参数的格式有效性 |
| 下载失败 | 检查X-ND-AUTH认证头是否有效 |
| 连接超时 | 尝试切换本地代理服务 |
| 下载缓慢 | 使用下载器/下载工具 |
提示
本工具适用于需要处理带认证头的PDF下载场景,如果本站服务崩了,推荐使用本地代理方案。