cURL로 TMPT 쿠키 요청 및 사용

작성: solvethree읽는 데 3분

TicketmasterTmptTask를 사용해 TMPT 쿠키를 요청하세요. 반환된 solution.token은 원시 쿠키 값입니다. reCAPTCHA 토큰이나 완전한 Set-Cookie 헤더가 아니라 tmpt 쿠키로 보내세요. 대상 요청에는 반환된 브라우저 식별 정보와 동일한 프록시를 사용하세요.

이 페이지의 내용

작업 및 정확한 대상 URL 설정

  • Event의 경우 url을 정확한 이벤트 URL로 설정하세요.
  • Login의 경우 url을 로그인 진입 URL로 설정하세요.
  • 이 스크립트에는 단일 프록시를 제공하세요. 대상에 쿠키를 보낼 때도 해당 프록시를 다시 사용합니다.
  • TMPT 태스크에 site, recaptchaType 또는 session을 포함하지 마세요.

이 예제는 Login과 자리표시자용 Ticketmaster 홈페이지 URL을 사용합니다. 태스크 URL과 마지막 cURL 대상을 지원되는 워크플로의 실제 URL로 바꾸세요. 이벤트 쿠키를 요청한다면 작업도 Event로 변경하세요.

쿠키 생성, 폴링 및 적용

Bash, cURL 7.76 이상, jq 및 openssl을 사용해 서버 측에서 스크립트를 실행하세요. SOLVETHREE_API_KEY를 워크스페이스 API 키로, SOLVETHREE_PROXY를 프록시 URL로 설정하세요. 셸 추적은 끈 상태로 유지하세요. 키, 프록시 자격 증명 및 쿠키가 노출될 수 있습니다.

TMPT · 생성, 폴링 및 결과 적용
#!/usr/bin/env bash
set -euo pipefail
: "${SOLVETHREE_API_KEY:?Set the API key}" "${SOLVETHREE_PROXY:?Set the proxy}"
# Requires bash, curl, jq and openssl. Do not enable shell tracing.
work=$(mktemp -d)
chmod 700 "$work"
trap 'rm -rf "$work"' EXIT
request_id=$(openssl rand -hex 16)
printf 'Recovery requestId=%s\n' "$request_id"
printf 'Authorization: Bearer %s\n' "$SOLVETHREE_API_KEY" > "$work/auth"
jq -n --arg proxy "$SOLVETHREE_PROXY" --arg id "$request_id" '{"type":"TicketmasterTmptTask","url":"https://www.ticketmaster.com/","action":"Login","proxy":$proxy,"requestId":$id}' > "$work/input.json"
api='https://api.solvethree.com/v1'
curl --fail-with-body --silent --show-error --max-time 30 \
  --header @"$work/auth" --header 'Content-Type: application/json' \
  --data-binary @"$work/input.json" --output "$work/result.json" "$api/tasks?waitMs=0"
task_id=$(jq -er '.id' "$work/result.json")
encoded_id=$(jq -nr --arg id "$task_id" '$id|@uri')
printf 'Recovery taskId=%s\n' "$task_id"
deadline=$((SECONDS + 180))
while [[ $(jq -r '.status' "$work/result.json") =~ ^(pending|solving)$ ]]; do
  remaining=$((deadline - SECONDS))
  (( remaining > 0 )) || { echo 'Local deadline reached; resume the saved task ID' >&2; exit 1; }
  timeout=$((remaining < 25 ? remaining : 25))
  curl --fail-with-body --silent --show-error --max-time "$timeout" \
    --header @"$work/auth" --output "$work/result.json" "$api/tasks/$encoded_id?waitMs=15000"
  [[ $(jq -r '.status' "$work/result.json") =~ ^(pending|solving)$ ]] && sleep 1 || true
done
[[ $(jq -r '.status' "$work/result.json") == ready ]] || { echo 'Solver task failed' >&2; exit 1; }
user_agent=$(jq -er '.solution.userAgent' "$work/result.json")
client_hints=$(jq -er '.solution.secChUa' "$work/result.json")
cookie=$(jq -er '.solution.token' "$work/result.json")
curl --silent --show-error --max-time 30 --proxy "$SOLVETHREE_PROXY" \
  --cookie "tmpt=$cookie" --user-agent "$user_agent" \
  --header "sec-ch-ua: $client_hints" --output "$work/target-response" \
  --write-out 'Target HTTP %{http_code}\n' 'https://www.ticketmaster.com/'
# Inspect the application's response before treating the operation as successful.
# Replace the example target path with the actual supported workflow URL.

스크립트는 Bearer 키로 인증하고 POST /v1/tasks로 태스크 하나를 생성한 다음, GET /v1/tasks/:id로 반환된 ID만 폴링합니다. pending과 solving은 모두 폴링을 계속해야 한다는 뜻이며, 사용 가능한 풀이 결과는 ready에서만 제공됩니다.

생성 요청의 타임아웃은 30초입니다. 폴링 루프는 각 폴링 전에 180초의 로컬 제한 시간을 확인하고 개별 폴링 요청을 최대 25초로 제한합니다. 이 제한 시간에 도달하면 스크립트가 중단되지만, 원격 태스크가 실패했다는 뜻은 아닙니다.

대상 요청에서는 cURL의 --cookie 옵션이 원시 토큰으로 Cookie 헤더를 구성합니다. 스크립트는 solution.userAgent, solution.secChUa 및 원래 프록시도 적용합니다. 자동 재시도와 리디렉션 따라가기는 모두 활성화하지 않습니다.

태스크 복구 또는 실패한 요청 수정

태스크 ID가 출력되기 전에 태스크 생성 시간이 초과됩니다.

연결 타임아웃이 발생했다고 해서 API가 태스크를 생성하지 못한 것은 아닙니다.

다음을 시도해 보세요: 출력된 requestId와 원래 태스크 입력을 보관하세요. 새 논리적 태스크를 생성하는 대신, 동일한 입력을 해당 requestId로 다시 제출해 기존 태스크를 복구하세요. ID를 재사용하면서 입력을 변경하면 충돌이 발생합니다.

API 호출이 성공이 아닌 HTTP 응답을 반환합니다.

이는 태스크 상태가 아니라 HTTP 계층의 오류입니다. 스크립트의 --fail-with-body 옵션은 응답 본문을 저장하면서 호출을 실패 처리합니다.

다음을 시도해 보세요: 임시 파일을 정리하기 전에 저장된 API 응답을 검사하세요. 응답을 성공한 태스크로 해석하거나 입력을 그대로 무작정 반복하지 말고 보고된 문제를 수정하세요.

스크립트가 풀이 태스크의 실패를 보고합니다.

스크립트는 일반적인 실패 메시지를 출력하며, 실패한 태스크에는 errorCode와 error가 포함됩니다.

다음을 시도해 보세요: 출력된 태스크 ID로 태스크를 조회하고 해당 필드를 검사하세요. 실패한 태스크의 폴링은 중단하세요. 실패한 풀이 비용은 환불됩니다.

로컬 폴링 제한 시간이 만료됩니다.

태스크가 아직 대기 중이거나 풀이 중일 수 있습니다.

다음을 시도해 보세요: 출력된 태스크 ID를 사용해 조회를 재개하세요. 로컬 스크립트가 대기를 중단했다는 이유만으로 다른 태스크를 생성하지 마세요.

작업이 준비 완료 상태이지만 대상이 요청을 거부합니다.

풀이 상태만 보지 말고 발신 쿠키, 사용자 에이전트, 클라이언트 힌트, 프록시 및 대상 URL을 검사하세요.

다음을 시도해 보세요: tmpt 쿠키에 Set-Cookie 접두사나 속성 없이 solution.token이 포함되어 있는지 확인하세요. 반환된 식별 정보와 원래 프록시를 사용하고, 대상 URL이 의도한 워크플로와 일치하는지 확인하세요.

첫 작업을 실행하세요.

워크스페이스 크레딧 $5로 시작하세요.

워크스페이스 만들기
cURL로 TMPT 쿠키 요청 및 사용 · solvethree