Ein Ticketmaster-TMPT-Cookie mit Go verwenden

Von solvethree3 Min. Lesezeit

Verwenden Sie Solution.Token als Wert eines Cookies namens tmpt. Senden Sie die Zielanfrage mit der zurückgegebenen Browseridentität über den erfolgreichen Proxy. Das SDK beschafft die Lösung; Ihr Go-HTTP-Client übermittelt sie.

Auf dieser Seite

Aktion und genaue Ziel-URL auswählen

Erstellen Sie eine TaskRequest mit Type auf TicketmasterTmptTask, einer Ziel-URL, einer Action und einer Proxy-Eingabe.

  • Verwenden Sie für ein Event Event und die genaue Event-URL, die Sie abrufen möchten.
  • Verwenden Sie für die Anmeldung Login und die Einstiegs-URL der Anmeldung.

Senden Sie weder Site noch RecaptchaType noch ein Sitzungsfeld. TMPT gibt einen unveränderten Cookiewert zurück, kein reCAPTCHA-Token oder Kasada-Header-Objekt.

Lösen und anschließend die Zielanfrage senden

Verwenden Sie Go 1.22 oder neuer und das offizielle Modul solvethree.com/sdk in Version v0.1.0. Installationsdetails finden Sie in der Dokumentation zur Go-Integration. Setzen Sie SOLVETHREE_API_KEY auf den Schlüssel Ihres Arbeitsbereichs und SOLVETHREE_PROXY auf Ihre Proxy-URL. Bewahren Sie den API-Schlüssel auf dem Server auf.

Das Beispiel verwendet Login. Ändern Sie für ein Event vor dem Lösen Action in Event und ersetzen Sie URL durch die genaue Event-URL. Stellen Sie bei der Anmeldung sicher, dass URL die gewünschte Einstiegs-URL der Anmeldung ist. Der spätere GET verwendet dieselbe input.URL.

Go · Unverarbeitetes TMPT-Cookie senden
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 wählt den für die Übermittlung zu verwendenden Proxy aus. Das Beispiel konfiguriert diesen Proxy auf einem geklonten http.Transport, kopiert Solution.UserAgent und Solution.SecChUA in die Anfrage-Header und fügt Solution.Token als Cookie tmpt hinzu. Ersetzen Sie diese Werte nicht durch eine andere Browseridentität und wechseln Sie zwischen Lösungsvorgang und Übermittlung nicht den Proxy.

Anwendungsantwort prüfen

Die beiden ausgegebenen Werte beantworten unterschiedliche Fragen: Die ID der bereiten Aufgabe identifiziert die generierte Lösung; der HTTP-Status der Anwendung stammt aus der Zielanfrage. Prüfen Sie sowohl den Antworttext als auch den Status. Eine bereite Aufgabe belegt weder eine Anmeldung noch den Event-Zugriff oder die Aufnahme in die Warteschlange.

Das Folgen von Weiterleitungen ist im Beispiel deaktiviert, sodass Sie die erste Antwort und deren Location-Header prüfen können, statt nur das endgültige Ziel zu sehen.

Die Aufgabe ist bereit, aber das Ziel lehnt die Anfrage ab.

Prüfen Sie das ausgehende Cookie, die Ziel-URL, den Proxy, User-Agent und sec-ch-ua.

Probiere Folgendes: Senden Sie Solution.Token unverändert als tmpt an die vorgesehene URL und verwenden Sie dabei SuccessfulProxy sowie die mit dieser Lösung zurückgegebene Identität.

Der Lösungsvorgang schlägt vor dem GET an das Ziel fehl.

Behandeln Sie den Fehler von Solve. Prüfen Sie bei einer endgültig fehlgeschlagenen Aufgabe errorCode und error.

Probiere Folgendes: Beenden Sie die Statusabfragen für diese Aufgabe und beheben Sie das gemeldete Problem vor einem erneuten Versuch. Gehen Sie nicht davon aus, dass jeder Fehler auf unzureichendes Guthaben hinweist.

Führe deinen ersten Task aus.

Starte mit $5 Workspace-Guthaben.

Workspace erstellen
Ein Ticketmaster-TMPT-Cookie mit Go verwenden · solvethree