两个下载、两个代理、一个 curl 命令
使用 curl 的传输边界,为不同下载分配独立代理和输出文件,避免命令行含义不明确。
把两个 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 文档规定的配置文件语法比手工拼接的长字符串更容易审查。
请分别记录每次传输的结果。第一次下载成功,并不能说明第二次的路由或响应。将超时和失败处理附着到需要它们的那次传输,并在设置似乎消失时检查边界。