استخدام ملف تعريف ارتباط TMPT من Ticketmaster بلغة Go

بقلم solvethreeمدة القراءة: 3 دقيقة

استخدم Solution.Token بوصفه قيمة ملف تعريف ارتباط باسم tmpt. أرسل الطلب إلى الموقع المستهدف عبر الوكيل الناجح باستخدام هوية المتصفح المُعادة. تحصل حزمة SDK على الحل؛ ويرسله عميل HTTP المكتوب بلغة Go لديك.

في هذه الصفحة

اختيار الإجراء وعنوان URL المستهدف الدقيق

أنشئ TaskRequest مع ضبط Type على TicketmasterTmptTask، وتحديد URL مستهدف وAction ومدخل للوكيل.

  • للفعاليات، استخدم 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. لا تستبدل تلك القيم بهوية متصفح غير مرتبطة بها، ولا تبدّل الوكلاء بين الحل والإرسال.

فحص استجابة التطبيق

تجيب القيمتان المطبوعتان عن سؤالين مختلفين: يحدّد معرّف المهمة الجاهزة الحل المُنشأ؛ وتأتي حالة HTTP الخاصة بالتطبيق من الطلب إلى الموقع المستهدف. افحص متن الاستجابة إلى جانب الحالة. جاهزية المهمة لا تثبت نجاح تسجيل الدخول أو الوصول إلى الفعالية أو السماح بالانضمام إلى قائمة الانتظار.

متابعة عمليات إعادة التوجيه معطّلة في المثال، لتتمكن من فحص الاستجابة الأولية والترويسة Location فيها بدلًا من رؤية الوجهة النهائية فقط.

المهمة جاهزة، لكن الموقع المستهدف يرفض الطلب.

افحص ملف تعريف الارتباط الصادر وعنوان URL المستهدف والوكيل وUser-Agent وsec-ch-ua.

جرّب هذا: أرسل قيمة Solution.Token الخام باسم tmpt إلى عنوان URL المقصود، باستخدام SuccessfulProxy والهوية المُعادة مع ذلك الحل.

يفشل الحل قبل طلب GET إلى الموقع المستهدف.

عالج خطأ Solve. إذا كانت المهمة فاشلة وفي حالة نهائية، فافحص errorCode وerror.

جرّب هذا: أوقف استطلاع تلك المهمة وصحّح المشكلة المُبلّغ عنها قبل إعادة المحاولة. لا تفترض أن كل فشل يعني عدم كفاية الرصيد.

شغّل مهمتك الأولى.

ابدأ برصيد قدره $5 في مساحة العمل.

إنشاء مساحة عمل
استخدام ملف تعريف ارتباط TMPT من Ticketmaster بلغة Go · solvethree