跳到主要内容

PDF 下载小工具

· 阅读需 3 分钟

概述

这是一个基于Web的PDF文件下载工具,支持通过代理服务器处理带认证头的文件下载请求。工具包含前端界面和后端代理服务,能够安全地处理需要特殊请求头的文件下载需求。

工具页面

已合并到 https://app.sunimg.top/pdf.js/DownPDF.html

功能特性

  • URL参数自动解析
  • 一键代理下载
  • 文件名自动提取与复制
  • 状态反馈提示(成功/错误)
  • 本地代理服务支持

使用说明

快速使用

  1. 在输入框粘贴包含参数的URL(需包含file和headers参数)
  2. 点击"解析URL"按钮
  3. 自动在新窗口打开下载页面
  4. 点击保存按钮下载文件

附加功能

  • 复制文件名:点击结果框中的"复制文件名"按钮
  • 本地代理:下载提供的exe文件,将服务地址改为http://127.0.0.1:5000/

技术原理

核心组件

  1. URL解析:提取file和headers参数
  2. Header验证:检查X-ND-AUTH字段
  3. 代理构造:生成代理服务请求URL
  4. 文件处理:通过本站的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')

注意事项

  1. URL必须包含有效的file和headers参数
  2. 本地代理运行时需保持exe文件持续运行
  3. 文件下载速度受我方网络上传限制(总之就是你别急

故障排查

现象解决方案
缺少参数错误检查URL是否包含完整的file和headers参数
JSON解析失败验证headers参数的格式有效性
下载失败检查X-ND-AUTH认证头是否有效
连接超时尝试切换本地代理服务
下载缓慢使用下载器/下载工具
提示

本工具适用于需要处理带认证头的PDF下载场景,如果本站服务崩了,推荐使用本地代理方案。