Dois downloads, dois proxies e um comando curl
Use os limites de transferência do curl para atribuir proxies e arquivos de saída separados sem ambiguidade na linha de comando.
Colocar duas URLs depois de uma única opção --proxy envia ambas pelo mesmo proxy. Quando cada download precisa da sua própria rota, dê ao curl um limite de transferência:
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/
Os dois endereços de proxy são placeholders; escolha endpoints HTTP do seu serviço ou da lista de proxies HTTP. A opção --next inicia outra transferência com um novo conjunto de opções locais. Declare explicitamente o segundo proxy. Uma opção fornecida antes do limite talvez precise ser fornecida novamente depois.
Este é um exemplo sequencial. Ele facilita inspecionar a associação entre destino, arquivo de saída e proxy. O curl também aceita transferências paralelas, mas o paralelismo muda o agendamento; não escolhe automaticamente um proxy para cada URL.
Cuidado com um arquivo de texto de pares
Uma linha contendo proxy-address destination-url é o formato da sua aplicação. O curl não infere o significado dessas colunas a partir de texto arbitrário. Um loop de shell, uma configuração de curl gerada ou outro pequeno distribuidor deve transformar cada registro em opções explícitas.
Preserve os argumentos como argumentos. Montar um comando concatenando URLs não confiáveis pode permitir que espaços ou caracteres do shell mudem seu significado. Para tarefas repetidas, a sintaxe documentada do arquivo de configuração do curl é mais fácil de revisar do que uma string longa montada à mão.
Registre separadamente o resultado de cada transferência. Um primeiro download bem-sucedido não diz nada sobre a rota ou a resposta do segundo. Mantenha timeouts e tratamento de falhas ligados à transferência que precisa deles e inspecione o limite quando uma configuração parecer ter desaparecido.