cURL ile TMPT çerezi isteyin ve kullanın

solvethree tarafından3 dk okuma

TMPT çerezi istemek için TicketmasterTmptTask kullanın. Döndürülen solution.token, ham çerez değeridir: bunu reCAPTCHA token'ı veya tam bir Set-Cookie başlığı olarak değil, tmpt çerezi olarak gönderin. Hedef isteği için döndürülen tarayıcı kimliğini ve aynı proxy'yi kullanın.

Bu sayfada

Eylemi ve tam hedef URL'yi ayarlayın

  • Event için url değerini etkinliğin tam URL'sine ayarlayın.
  • Login için url değerini oturum açma giriş URL'sine ayarlayın.
  • Bu betik için tek bir proxy sağlayın. Betik, çerezi hedefe gönderirken aynı proxy'yi tekrar kullanır.
  • TMPT görevine site, recaptchaType veya session eklemeyin.

Örnek, Login ve yer tutucu olarak bir Ticketmaster ana sayfa URL'si kullanır. Görev URL'sini ve son cURL hedefini, desteklenen iş akışınızın gerçek URL'leriyle değiştirin. Etkinlik çerezi istiyorsanız eylemi de Event olarak değiştirin.

Çerezi oluşturun, durumu sorgulayın ve uygulayın

Betiği sunucu tarafında Bash, cURL 7.76 veya üzeri, jq ve openssl ile çalıştırın. SOLVETHREE_API_KEY değerini çalışma alanınızın API anahtarı, SOLVETHREE_PROXY değerini ise proxy URL'niz olarak ayarlayın. Kabuk komut izlemeyi kapalı tutun: anahtarı, proxy kimlik bilgilerini ve çerezi açığa çıkarabilir.

TMPT · oluşturma, durum sorgulama ve sonucu uygulama
#!/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.

Betik, Bearer anahtarıyla kimlik doğrular, POST /v1/tasks ile tek bir görev oluşturur, ardından yalnızca döndürülen görev kimliğini GET /v1/tasks/:id ile sorgular. Hem pending hem de solving, durum sorgulamaya devam edilmesi gerektiğini belirtir; yalnızca ready kullanılabilir bir çözüm sağlar.

Oluşturma isteğinin zaman aşımı 30 saniyedir. Durum sorgulama döngüsü, her sorgudan önce 180 saniyelik yerel süre sınırını kontrol eder ve tekil sorgulama isteklerini en fazla 25 saniyeyle sınırlar. Bu süre sınırına ulaşılması betiği durdurur; uzaktaki görevin başarısız olduğunu göstermez.

Hedef isteğinde cURL'ün --cookie seçeneği, ham token'dan Cookie başlığını oluşturur. Betik ayrıca solution.userAgent, solution.secChUa ve ilk proxy'yi uygular. Ne otomatik yeniden denemeyi ne de yönlendirme takibini etkinleştirir.

Görevi kurtarın veya başarısız olan isteği düzeltin

Görev oluşturma işlemi, görev kimliği yazdırılmadan zaman aşımına uğruyor.

Bağlantı zaman aşımı, API'nin görevi oluşturamadığını kanıtlamaz.

Şunu deneyin: Yazdırılan requestId değerini ve ilk görev girdilerini saklayın. Yeni bir mantıksal görev oluşturmak yerine mevcut görevi kurtarmak için aynı girdileri bu requestId ile yeniden gönderin. Aynı kimliği yeniden kullanırken girdileri değiştirmek çakışmaya yol açar.

Bir API çağrısı, başarısız bir HTTP yanıtı döndürüyor.

Bu bir görev durumu değil, HTTP katmanı hatasıdır. Betiğin --fail-with-body seçeneği, yanıt gövdesini kaydederken çağrının başarısız olmasını sağlar.

Şunu deneyin: Geçici dosyalar temizlenmeden önce kaydedilen API yanıtını inceleyin. Yanıtı başarılı bir görev olarak ayrıştırmak veya değişmemiş girdileri körü körüne tekrarlamak yerine bildirilen sorunu düzeltin.

Betik, çözüm görevinin başarısız olduğunu bildiriyor.

Betik, genel bir hata mesajı yazdırır; başarısız görev errorCode ve error alanlarını içerir.

Şunu deneyin: Yazdırılan görev kimliğiyle görevi alın ve bu alanları inceleyin. Başarısız bir görevi sorgulamayı bırakın. Başarısız çözümlerin ücreti iade edilir.

Yerel durum sorgulama süresi doluyor.

Görev hâlâ beklemede veya çözülüyor durumunda olabilir.

Şunu deneyin: Yazdırılan görev kimliğini kullanarak görevi sorgulamaya devam edin. Sırf yerel betik beklemeyi bıraktı diye başka bir görev oluşturmayın.

Görev hazır, ancak hedef isteği reddediyor.

Yalnızca çözücü durumunu değil, giden çerezi, kullanıcı aracısını, istemci ipuçlarını, proxy'yi ve hedef URL'yi inceleyin.

Şunu deneyin: tmpt çerezinin, Set-Cookie öneki veya öznitelikleri olmadan solution.token değerini içerdiğini doğrulayın. Döndürülen kimliği ve ilk proxy'yi kullanın; hedef URL'nin amaçlanan iş akışıyla eşleştiğini kontrol edin.

İlk görevinizi çalıştırın.

$5 çalışma alanı kredisiyle başlayın.

Çalışma alanı oluşturun
cURL ile TMPT çerezi isteyin ve kullanın · solvethree