直连被限、地区屏蔽?聊聊下载器里的代理与中转
有些资源,你本机直连就是下不动:要么速度被掐到几十 KB,要么直接 403,要么提示"你所在地区不可访问"。这时候在下载器里挂个代理/做个中转,往往立竿见影。这篇文章讲清楚代理在下载场景里怎么用、有哪些坑,以及它和"加 referer"绝不是一回事。
代理解决的是什么
- 限速:单 IP 被限流,换个出口 IP 速度回来;
- 地区限制:资源只在某国可访问,用当地节点"假装"在当地;
- 连接被重置:某些网络环境对直连下载不友好,走代理绕开。
注意:代理管的是"从哪个 IP 发请求",而 referer 管的是"我是谁介绍来的"。上一篇讲 referer 是骗服务端来源的,代理是骗网络层位置的,两件事。
在命令行工具里用代理
yt-dlp、aria2 这类都支持:
# HTTP 代理
yt-dlp --proxy http://127.0.0.1:7890 "url"
# SOCKS5
yt-dlp --proxy socks5://127.0.0.1:1080 "url"
aria2 同理:
aria2c --all-proxy=socks5://127.0.0.1:1080 "url"
在自写下载器里用代理
Python 的 requests 直接传 proxies:
proxies = {
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890',
}
r = requests.get(url, proxies=proxies, timeout=15)
如果是 SOCKS5,装个 requests[socks] 即可。
进阶:按任务轮换出口
下载一大堆文件时,固定一个代理 IP 也会被限。可以让每个任务随机选一个出口:
import random
pool = ['socks5://127.0.0.1:1080', 'socks5://127.0.0.1:1081', ...]
proxies = {'http': random.choice(pool), 'https': random.choice(pool)}
配合失败重试,单 IP 被封也能自动换下一个。
中转服务器
代理是你本地出去绕一圈;中转则是你搭一台有公网 IP 的服务器,把下载任务放到那台机器上跑,下完再回传给你。好处是服务器带宽通常比家宽猛,适合大文件。
常见问题
Q:代理很慢正常吗? 看代理节点质量和距离,绕路必然有点损,但比被限到几十 KB 强。
Q:为什么挂了代理还是 403? 服务端可能还校验 cookie/referer,代理解决不了这些,得一起配。
Q:免费代理能用吗? 能试,但慢且不稳,敏感账号别用不明代理,有泄露风险。