Go ile Ticketmaster TMPT çerezi kullanın
Solution.Token değerini tmpt adlı çerezin değeri olarak kullanın. Hedef isteğini, döndürülen tarayıcı kimliğiyle başarılı proxy üzerinden gönderin. SDK çözümü alır; Go HTTP istemciniz ise bunu gönderir.
Bu sayfada
Eylemi ve tam hedef URL'yi seçin
Type değeri TicketmasterTmptTask olarak ayarlanmış, hedef URL, Action ve proxy girdisi içeren bir TaskRequest oluşturun.
- Bir etkinlik için
Eventve istekte bulunacağınız tam etkinlik URL'sini kullanın. - Oturum açmak için
Loginve oturum açma giriş URL'sini kullanın.
Site, RecaptchaType veya oturum alanı göndermeyin. TMPT, reCAPTCHA token'ı veya Kasada başlıkları nesnesi değil, ham bir çerez değeri döndürür.
Çözün, ardından hedef isteğini gönderin
Go 1.22 veya daha yenisini ve resmî solvethree.com/sdk modülünün v0.1.0 sürümünü kullanın. Kurulum ayrıntıları Go entegrasyon belgelerinde yer alır. SOLVETHREE_API_KEY değerini çalışma alanınızın anahtarı, SOLVETHREE_PROXY değerini ise proxy URL'niz olarak ayarlayın. API anahtarını sunucuda tutun.
Örnek Login kullanır. Bir etkinlik için çözümden önce Action değerini Event olarak değiştirin ve URL yerine tam etkinlik URL'sini kullanın. Oturum açmak için URL değerinin amaçlanan oturum açma giriş URL'si olduğunu doğrulayın. Sonraki GET isteği aynı input.URL değerini kullanır.
package main
import (
"context"
"fmt"
"log"
"os"
"net/http"
"net/url"
"time"
solvethree "solvethree.com/sdk"
)
func main() {
client, err := solvethree.NewClient(os.Getenv("SOLVETHREE_API_KEY"), nil)
if err != nil { log.Fatal(err) }
ctx, cancel := context.WithTimeout(context.Background(), 180*time.Second)
defer cancel()
input := solvethree.TaskRequest{Type: "TicketmasterTmptTask", URL: "https://www.ticketmaster.com/", Action: "Login", Proxy: os.Getenv("SOLVETHREE_PROXY")}
result, err := client.Solve(ctx, input, solvethree.SolveOptions{})
if err != nil { log.Fatal(err) }
fmt.Println("Ready task:", result.ID)
proxy, ok := solvethree.SuccessfulProxy(input, result)
if !ok { log.Fatal("No valid successful proxy") }
proxyURL, err := url.Parse(proxy)
if err != nil { log.Fatal(err) }
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
defer transport.CloseIdleConnections()
targetClient := &http.Client{Transport: transport, Timeout: 30*time.Second,
CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
request, err := http.NewRequestWithContext(ctx, "GET", input.URL, nil)
if err != nil { log.Fatal(err) }
request.Header.Set("User-Agent", result.Solution.UserAgent)
request.Header.Set("sec-ch-ua", result.Solution.SecChUA)
request.AddCookie(&http.Cookie{Name: "tmpt", Value: result.Solution.Token})
response, err := targetClient.Do(request)
if err != nil { log.Fatal(err) }
defer response.Body.Close()
fmt.Println("Application HTTP status:", response.StatusCode)
// Inspect the application response to determine whether submission succeeded.
}SuccessfulProxy, gönderimde kullanılacak proxy'yi seçer. Örnek, bu proxy'yi klonlanmış bir http.Transport üzerinde yapılandırır, Solution.UserAgent ve Solution.SecChUA değerlerini istek başlıklarına kopyalar ve Solution.Token değerini tmpt çerezi olarak ekler. Bu değerleri ilgisiz bir tarayıcı kimliğiyle değiştirmeyin veya çözüm ile gönderim arasında proxy değiştirmeyin.
Uygulama yanıtını inceleyin
Yazdırılan iki değer farklı soruları yanıtlar: hazır görevin kimliği, oluşturulan çözümü tanımlar; uygulamanın HTTP durumu ise hedef isteğinden gelir. Durumun yanı sıra yanıt gövdesini de inceleyin. Hazır bir görev, oturum açıldığını, etkinliğe erişildiğini veya kuyruğa kabul edildiğini kanıtlamaz.
Örnekte yönlendirmeleri takip etme devre dışıdır; böylece yalnızca son hedefi görmek yerine ilk yanıtı ve onun Location başlığını inceleyebilirsiniz.
- Görev hazır, ancak hedef isteği reddediyor.
Giden çerezi, hedef URL'yi, proxy'yi, User-Agent ve sec-ch-ua değerlerini inceleyin.
Şunu deneyin: SuccessfulProxy ve bu çözümle döndürülen kimliği kullanarak ham Solution.Token değerini tmpt olarak amaçlanan URL'ye gönderin.
- Çözüm işlemi, hedef GET isteğinden önce başarısız oluyor.
Solve hatasını ele alın. Son duruma ulaşmış başarısız bir görev için errorCode ve error alanlarını inceleyin.
Şunu deneyin: Bu görevin durumunu sorgulamayı bırakın ve yeniden denemeden önce bildirilen sorunu düzeltin. Her hatanın yetersiz kredi anlamına geldiğini varsaymayın.
Kaynaklar ve API referansı
İlk görevinizi çalıştırın.
$5 çalışma alanı kredisiyle başlayın.