把随机选择放在为每个作业启动的 shell 内部。若在外层 shell 中展开命令替换,取值会在 xargs 开始工作之前就确定下来。

使用经过校验的 proxies.txt(每行一个代理 URL),公开候选可来自免费代理列表;每一项都要写成 curl 支持的协议格式:

printf '%s\0' 'https://a.example/one' 'https://b.example/two' |
  xargs -0 -n 1 -P 4 sh -c '
    proxy=$(shuf -n 1 proxies.txt) || exit 1
    [ -n "$proxy" ] || exit 1
    curl --fail --silent --show-error --max-time 30 \
      --proxy "$proxy" --noproxy "" --output /dev/null "$1"
  ' _

-n 1 为每条命令提供一个 URL,-P 4 允许同时最多四条命令。以空字符分隔的输入会把 URL 保留为单个参数。下划线占用 sh 的 $0 位置,URL 则留在 $1 中。

每个子 shell 各自独立运行 shuf。随机选择可能多次选中同一个代理;它既不是轮询调度,也不保证得到不同的出口地址。

显式的空绕过列表可以避免继承来的 no_proxy 设置绕过所选中间人。示例会丢弃响应正文;保存并发下载时请使用各自独立的输出路径。

相关文章