把两个 URL 放在同一个 --proxy 选项后,会让它们都通过同一个代理。每次下载需要独立路由时,请给 curl 设置传输边界:

curl --proxy http://203.0.113.10:8080 \
  --output first.html https://example.com/ \
  --next \
  --proxy http://203.0.113.20:8080 \
  --output second.html https://example.org/

两个代理地址都是占位符;请从你的服务或HTTP 代理列表中选择 HTTP 端点。--next选项会用一组新的本地选项开始另一次传输。请明确写出第二个代理。边界前提供的某个选项,边界后可能需要再次提供。

这是一个顺序执行的示例,便于检查目标、输出文件和代理之间的对应关系。curl 也支持并行传输,但并行只改变调度方式,不会自动为每个 URL 选择代理。

小心处理包含配对项的文本文件

包含 proxy-address destination-url 的行是你的应用格式。curl 不会从任意文本中推断这些列的含义。Shell 循环、生成的 curl 配置,或其他小型调度器必须把每条记录转换为明确的选项。

保留参数的边界。通过拼接不可信 URL 来构造命令,可能让空格或 Shell 字符改变命令含义。对于重复任务,curl 文档规定的配置文件语法比手工拼接的长字符串更容易审查。

请分别记录每次传输的结果。第一次下载成功,并不能说明第二次的路由或响应。将超时和失败处理附着到需要它们的那次传输,并在设置似乎消失时检查边界。

相关文章