Usa una cookie TMPT de Ticketmaster con Go
Usa Solution.Token como valor de una cookie llamada tmpt. Envía la solicitud al destino a través del proxy que tuvo éxito con la identidad de navegador devuelta. El SDK obtiene la solución; tu cliente HTTP de Go la envía.
En esta página
Elige la acción y la URL de destino exacta
Crea una TaskRequest con Type establecido en TicketmasterTmptTask, una URL de destino, una Action y un parámetro de proxy.
- Para un evento, usa
Eventy la URL exacta del evento que quieras solicitar. - Para iniciar sesión, usa
Loginy la URL de entrada al inicio de sesión.
No envíes Site, RecaptchaType ni un campo de sesión. TMPT devuelve un valor de cookie sin procesar, no un token de reCAPTCHA ni un objeto de cabeceras Kasada.
Resuelve y después envía la solicitud al destino
Usa Go 1.22 o posterior y el módulo oficial solvethree.com/sdk en la versión v0.1.0. Los detalles de instalación están en la documentación de integración de Go. Establece SOLVETHREE_API_KEY con la clave de tu espacio de trabajo y SOLVETHREE_PROXY con la URL de tu proxy. Mantén la clave de API en el servidor.
El ejemplo usa Login. Para un evento, cambia Action a Event y sustituye URL por la URL exacta del evento antes de resolver. Para iniciar sesión, confirma que URL es la URL de entrada al inicio de sesión prevista. El GET posterior usa ese mismo input.URL.
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 selecciona el proxy que se usará para el envío. El ejemplo configura ese proxy en un http.Transport clonado, copia Solution.UserAgent y Solution.SecChUA en las cabeceras de la solicitud y adjunta Solution.Token como cookie tmpt. No sustituyas esos valores por una identidad de navegador no relacionada ni cambies de proxy entre la resolución y el envío.
Revisa la respuesta de la aplicación
Los dos valores impresos responden a preguntas distintas: el ID de la tarea lista identifica la solución generada; el estado HTTP de la aplicación procede de la solicitud al destino. Revisa tanto el cuerpo de la respuesta como el estado. Una tarea lista no demuestra que se haya iniciado sesión, accedido al evento o entrado en la cola.
El seguimiento de redirecciones está desactivado en el ejemplo, por lo que puedes revisar la respuesta inicial y su cabecera Location en lugar de ver solo el destino final.
- La tarea está lista, pero el destino rechaza la solicitud.
Revisa la cookie enviada, la URL de destino, el proxy, User-Agent y sec-ch-ua.
Prueba esto: Envía el valor sin procesar de Solution.Token como tmpt a la URL prevista, usando SuccessfulProxy y la identidad devuelta con esa solución.
- La resolución falla antes del GET al destino.
Gestiona el error de Solve. Si una tarea falla y queda en estado terminal, revisa errorCode y error.
Prueba esto: Deja de consultar esa tarea y corrige el problema indicado antes de volver a intentarlo. No supongas que todos los fallos significan que no hay crédito suficiente.
Fuentes y referencia de la API
Ejecuta tu primera tarea.
Empieza con $5 de crédito en tu espacio de trabajo.