Use um cookie TMPT do Ticketmaster com Go

Por solvethree3 min de leitura

Use Solution.Token como o valor de um cookie chamado tmpt. Envie a requisição ao destino pelo proxy bem-sucedido com a identidade do navegador retornada. O SDK obtém a solução; seu cliente HTTP Go a envia.

Nesta página

Escolha a ação e a URL exata de destino

Crie uma TaskRequest com Type definido como TicketmasterTmptTask, uma URL de destino, uma Action e uma entrada de proxy.

  • Para um evento, use Event e a URL exata do evento que você pretende solicitar.
  • Para fazer login, use Login e a URL de entrada do fluxo de login.

Não envie Site, RecaptchaType nem um campo de sessão. TMPT retorna um valor bruto de cookie, não um token reCAPTCHA nem um objeto de cabeçalhos Kasada.

Resolva e depois envie a requisição ao destino

Use Go 1.22 ou posterior e o módulo oficial solvethree.com/sdk na versão v0.1.0. Os detalhes de instalação estão na documentação de integração com Go. Defina SOLVETHREE_API_KEY como a chave do seu espaço de trabalho e SOLVETHREE_PROXY como a URL do seu proxy. Mantenha a chave de API no servidor.

O exemplo usa Login. Para um evento, altere Action para Event e substitua URL pela URL exata do evento antes da resolução. Para login, confirme que URL é a URL de entrada do fluxo de login desejado. O GET posterior usa essa mesma input.URL.

Go · enviar um cookie TMPT bruto
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 seleciona o proxy a usar no envio. O exemplo configura esse proxy em um http.Transport clonado, copia Solution.UserAgent e Solution.SecChUA para os cabeçalhos da requisição e anexa Solution.Token como o cookie tmpt. Não substitua esses valores por uma identidade de navegador sem relação com a solução nem troque de proxy entre a resolução e o envio.

Inspecione a resposta da aplicação

Os dois valores impressos respondem a perguntas diferentes: o ID da tarefa pronta identifica a solução gerada; o status HTTP da aplicação vem da requisição ao destino. Inspecione tanto o corpo da resposta quanto o status. Uma tarefa pronta não comprova login, acesso ao evento ou entrada na fila.

O acompanhamento de redirecionamentos está desativado no exemplo, para que você possa inspecionar a resposta inicial e seu cabeçalho Location em vez de ver apenas o destino final.

A tarefa está pronta, mas o destino rejeita a requisição.

Inspecione o cookie enviado, a URL de destino, o proxy, User-Agent e sec-ch-ua.

Experimente: Envie o valor bruto de Solution.Token como tmpt para a URL desejada, usando SuccessfulProxy e a identidade retornada com essa solução.

A resolução falha antes do GET ao destino.

Trate o erro de Solve. Para uma tarefa com falha terminal, inspecione errorCode e error.

Experimente: Pare de consultar essa tarefa e corrija o problema informado antes de tentar novamente. Não presuma que toda falha significa crédito insuficiente.

Execute sua primeira tarefa.

Comece com $5 em créditos no espaço de trabalho.

Criar um espaço de trabalho
Use um cookie TMPT do Ticketmaster com Go · solvethree