cURL로 TMPT 쿠키 요청 및 사용
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로 설정하세요. 셸 추적은 끈 상태로 유지하세요. 키, 프록시 자격 증명 및 쿠키가 노출될 수 있습니다.
#!/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이 의도한 워크플로와 일치하는지 확인하세요.
출처 및 API 레퍼런스
첫 작업을 실행하세요.
워크스페이스 크레딧 $5로 시작하세요.