Go के साथ Ticketmaster TMPT कुकी का उपयोग करें
Solution.Token को tmpt नाम की कुकी के मान के रूप में इस्तेमाल करें। लौटाई गई ब्राउज़र पहचान के साथ लक्ष्य अनुरोध को सफल प्रॉक्सी के ज़रिए भेजें। SDK समाधान प्राप्त करता है; आपका Go HTTP क्लाइंट उसे सबमिट करता है।
इस पेज पर
ऐक्शन और सटीक लक्ष्य 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 को इस्तेमाल करता है।
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 और उस समाधान के साथ लौटाई गई पहचान का इस्तेमाल करके, रॉ Solution.Token को tmpt के रूप में इच्छित URL पर भेजें।
- लक्ष्य GET से पहले सॉल्विंग विफल हो जाती है।
Solve की त्रुटि संभालें। अंतिम रूप से विफल टास्क के लिए errorCode और error की जाँच करें।
यह आज़माएँ: उस टास्क की पोलिंग बंद करें और दोबारा कोशिश करने से पहले बताई गई समस्या ठीक करें। यह न मानें कि हर विफलता का मतलब अपर्याप्त क्रेडिट है।
स्रोत और API संदर्भ
अपना पहला टास्क चलाएँ।
$5 वर्कस्पेस क्रेडिट के साथ शुरुआत करें।