Использование cookie TMPT Ticketmaster с Go

Автор: solvethree3 мин на чтение

Используйте Solution.Token как значение cookie с именем tmpt. Отправьте запрос к целевому сайту через успешный прокси с возвращёнными идентификационными данными браузера. SDK получает решение; ваш HTTP-клиент на Go отправляет его.

На этой странице

Выберите действие и точный целевой URL

Создайте TaskRequest, указав для Type значение TicketmasterTmptTask, целевой URL, Action и входные данные прокси.

  • Для события используйте Event и точный URL события, который собираетесь запросить.
  • Для входа используйте Login и URL начальной страницы входа.

Не отправляйте Site, RecaptchaType или поле сессии. TMPT возвращает исходное значение cookie, а не токен reCAPTCHA или объект заголовков Kasada.

Получите решение, затем отправьте запрос к целевому сайту

Используйте Go 1.22 или новее и официальный модуль solvethree.com/sdk версии v0.1.0. Подробности установки приведены в документации по интеграции с Go. Задайте в SOLVETHREE_API_KEY ключ рабочего пространства, а в SOLVETHREE_PROXY — URL прокси. Храните API-ключ на сервере.

В примере используется Login. Для события перед решением измените Action на Event и замените URL на точный URL события. Для входа убедитесь, что URL — это нужный URL начальной страницы входа. Последующий GET использует тот же input.URL.

Go · отправка необработанного cookie TMPT
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 выбирает прокси для отправки. Пример настраивает этот прокси в клонированном http.Transport, копирует Solution.UserAgent и Solution.SecChUA в заголовки запроса и добавляет Solution.Token как cookie tmpt. Не заменяйте эти значения посторонними идентификационными данными браузера и не меняйте прокси между решением и отправкой.

Проверьте ответ приложения

Два выводимых значения отвечают на разные вопросы: ID готовой задачи идентифицирует сгенерированное решение, а HTTP-статус приложения получен из запроса к целевому сайту. Проверяйте не только статус, но и тело ответа. Готовая задача не подтверждает вход, доступ к событию или допуск в очередь.

В примере переход по перенаправлениям отключён, чтобы вы могли проверить первоначальный ответ и его заголовок Location, а не видеть только конечный адрес.

Задача готова, но целевой сайт отклоняет запрос.

Проверьте отправляемый cookie, целевой URL, прокси, User-Agent и sec-ch-ua.

Попробуйте: Отправьте исходное значение Solution.Token как tmpt на нужный URL, используя SuccessfulProxy и идентификационные данные, возвращённые вместе с этим решением.

Решение завершается с ошибкой до GET-запроса к целевому сайту.

Обработайте ошибку Solve. При окончательном завершении задачи с ошибкой проверьте errorCode и error.

Попробуйте: Прекратите опрос этой задачи и устраните указанную проблему перед повторной попыткой. Не считайте, что любой сбой означает недостаточный баланс.

Запустите первую задачу.

Начните с $5 на балансе рабочего пространства.

Создать рабочее пространство
Использование cookie TMPT Ticketmaster с Go · solvethree