무작위 선택을 작업마다 시작되는 셸 안에 두십시오. 바깥 셸에서 명령 치환을 확장하면 xargs가 작업을 시작하기 전에 값이 이미 정해집니다.

한 줄에 프록시 URL 하나씩 담긴 검증된 proxies.txt가 있으면 공개 후보는 무료 프록시 목록에서 가져올 수 있습니다. 각 항목은 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에 남습니다.

각 자식 셸은 shuf를 독립적으로 실행합니다. 무작위 선택은 같은 프록시를 여러 번 고를 수 있으며, 순환 방식의 스케줄링도 아니고 서로 다른 출구 주소를 보장하지도 않습니다.

명시적인 빈 우회 목록은 상속된 no_proxy 설정이 선택한 중계 서버를 우회하지 못하게 합니다. 예제는 응답 본문을 버립니다. 동시 다운로드를 저장할 때는 출력 경로를 따로 두십시오.

관련 글