Go에서 Ticketmaster TMPT 쿠키 사용하기

작성: solvethree읽는 데 2분

Solution.Token을 tmpt라는 이름의 쿠키 값으로 사용하세요. 반환된 브라우저 식별 정보를 사용해 성공한 프록시를 통해 대상 요청을 전송하세요. SDK는 해결 결과를 가져오고, Go HTTP 클라이언트는 이를 제출합니다.

이 페이지의 내용

액션과 정확한 대상 URL 선택하기

Type이 TicketmasterTmptTask로 설정되고 대상 URL, Action, 프록시 입력이 포함된 TaskRequest를 생성하세요.

  • 이벤트에는 Event와 요청하려는 정확한 이벤트 URL을 사용하세요.
  • 로그인에는 Login과 로그인 진입 URL을 사용하세요.

Site, RecaptchaType 또는 세션 필드를 전송하지 마세요. TMPT는 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 · 원시 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을 tmpt 쿠키로 첨부합니다. 해당 값을 관련 없는 브라우저 식별 정보로 교체하거나 해결과 제출 사이에 프록시를 변경하지 마세요.

애플리케이션 응답 확인하기

출력되는 두 값은 서로 다른 정보를 제공합니다. 준비 완료된 작업 ID는 생성된 해결 결과를 식별하고, 애플리케이션 HTTP 상태는 대상 요청에서 반환됩니다. 상태뿐 아니라 응답 본문도 확인하세요. 준비 완료 상태의 작업이 로그인, 이벤트 접근 또는 대기열 진입을 입증하지는 않습니다.

이 예제는 리디렉션 자동 이동을 비활성화하므로 최종 목적지만 보는 대신 최초 응답과 Location 헤더를 확인할 수 있습니다.

작업이 준비 완료 상태이지만 대상이 요청을 거부합니다.

전송되는 쿠키, 대상 URL, 프록시, User-Agent, sec-ch-ua를 확인하세요.

다음을 시도해 보세요: SuccessfulProxy와 해당 해결 결과에 함께 반환된 식별 정보를 사용해, 의도한 URL로 원시 Solution.Token을 tmpt 쿠키로 전송하세요.

대상 GET 전에 해결 작업이 실패합니다.

Solve 오류를 처리하세요. 최종 상태인 실패 작업은 errorCode와 error를 확인하세요.

다음을 시도해 보세요: 해당 작업의 폴링을 중단하고 보고된 문제를 수정한 후 다시 시도하세요. 모든 실패가 크레딧 부족을 의미한다고 가정하지 마세요.

첫 작업을 실행하세요.

워크스페이스 크레딧 $5로 시작하세요.

워크스페이스 만들기
Go에서 Ticketmaster TMPT 쿠키 사용하기 · solvethree