C# (.NET SDK) में reCAPTCHA v3 Enterprise कैसे हल करें

recaptcha v3 enterprise in c# - How to Solve reCAPTCHA v3 Enterprise in C# (.NET SDK)

C# में reCAPTCHA v3 Enterprise हल करना हर दूसरे reCAPTCHA टाइप जैसी ही मेथड उपयोग करता है। कोई नहीं है RecaptchaEnterpriseAsync। आप कॉल करते हैं RecaptchaAsync और दो flags पास करें: version इस पर सेट v3, और enterprise इस पर सेट 1। इनमें से किसी एक को भी चूक जाएं और आपको किसी दूसरे product का token मिलता है, जिसे साइट रिजेक्ट कर देगी।

यहाँ पूरी कॉल है, कि क्या action विकल्प असल में क्या करता है, और कैसे बताएँ कि आप कौन-सा वैरिएंट देख रहे’re हैं।

Version और enterprise स्वतंत्र flags हैं

यह पहली बार में लगभग हर किसी को उलझा देता है। Enterprise reCAPTCHA का चौथा वर्शन नहीं है। यह एक अलग Google उत्पाद स्तर है जो v2 और v3 दोनों को चलाता है, इसलिए दोनों सेटिंग्स एक असली 2×2 बनाती हैं।

साइट क्या चलाती हैविकल्प जो आप पास करते हैं
reCAPTCHA v2 checkboxnone
reCAPTCHA v2 Enterpriseenterprise = 1
reCAPTCHA v3version = "v3"
reCAPTCHA v3 Enterpriseversion = "v3" और enterprise = 1

पास करना enterprise = 1 अपने आप में आपको एक v2 Enterprise हल दे देता है, और यह किसी v3 page पर नाकाम होगा। यही सबसे आम वजह है कि कोई token ठीक-ठाक वापस आता है और फिर रिजेक्ट हो जाता है।

कैसे बताएं कि कोई पेज Enterprise है

page source खोलें और देखें कि script किस object को call करती है। मानक reCAPTCHA उपयोग करता है grecaptcha। Enterprise उपयोग करता है grecaptcha.enterprise.

// Enterprise pages call grecaptcha.enterprise, not grecaptcha.
// The action name you need is right here in execute().
grecaptcha.enterprise.ready(function () {
  grecaptcha.enterprise.execute("YOUR_SITEKEY", { action: "login" })
    .then(function (token) {
      // token gets posted with the form
    });
});

दो और संकेत: script tag लोड होता है /recaptcha/enterprise.js के बजाय /recaptcha/api.js, और Enterprise sitekeys आमतौर पर इससे शुरू होती हैं 6L बिल्कुल standard वालों की तरह, इसलिए key खुद आपको कुछ नहीं बताती। script पर भरोसा करें, key पर नहीं।

Setup

CapSkip आपकी अपनी machine पर चलता है, इसलिए इसमें से कुछ भी काम करने से पहले app शुरू करें, फिर NuGet से SDK इंस्टॉल करें:

# .NET Standard 2.0, so .NET Framework 4.6.1+, Core 2.0+
# and every modern .NET release are all supported.
dotnet add package CapSkip

client को ऐप में दिखाए गए port की ओर इंगित करें:

using CapSkip;

var solver = new CapSkipClient(
    apiKey: "capskip",        // any string when key validation is off
    host: "127.0.0.1",
    port: 8080,
    recaptchaTimeout: 300);   // seconds; v3 rarely gets near this

v3 Enterprise कॉल

sitekey और URL के अलावा सब कुछ एक options dictionary में जाता है:

using System.Collections.Generic;
using CapSkip;

var result = await solver.RecaptchaAsync(
    "YOUR_SITEKEY",
    "https://example.com/page-with-recaptcha",
    new Dictionary<string, object?>
    {
        ["version"]    = "v3",
        ["enterprise"] = 1,
        ["action"]     = "login",   // match the page exactly
    });

Console.WriteLine(result.Code);   // g-recaptcha-response token

signature है RecaptchaAsync(string sitekey, string url, Dictionary<string, object?>? options = null)। dictionary nullable-valued है, इसलिए object? मायने रखता है अगर आपके project में nullable reference types चालू हैं।

action विकल्प वास्तव में क्या करता है

action केवल-v3 है। एक v2 पेज पर यह कुछ नहीं करता।

यह वह label है जो पेज इसे पास करता है grecaptcha.enterprise.execute(). Google हर action को अलग-अलग score करता है, और साइट का backend आमतौर पर जाँचता है कि verification response में मौजूद action उसकी अपेक्षा से मेल खाता है। अगर पेज कहता है login और आप डिफ़ॉल्ट के साथ हल करते हैं, तो आपका token वैध होता है फिर भी अस्वीकार कर दिया जाता है। स्ट्रिंग को अक्षरशः कॉपी करें, केस समेत। Google actions को alphanumerics, slashes और underscores तक सीमित रखता है, इसलिए escape करने के लिए कुछ भी असामान्य नहीं है।

इसे गलत करना ख़ामोश होता है। कुछ भी error नहीं देता, क्योंकि हल करने वाली तरफ़ कुछ भी गलत नहीं हुआ। आपको बस एक token मिलता है जिसे endpoint अस्वीकार कर देता है।

कोई minimum-score विकल्प नहीं है

साफ़-साफ़ कहना ज़रूरी है, क्योंकि कुछ solving API ऐसा दावा करते हैं: आप CapSkip से किसी खास score पर token नहीं माँगते। score तो Google का फ़ैसला है, जो तब बनता है जब आपकी टारगेट साइट token को सत्यापित करती है, और solve request पर कोई parameter इसके लिए न्यूनतम सीमा तय नहीं करता। अगर आपने कोई ऐसा देखा हो min_score field कहीं और देखा है और यहाँ उसका समकक्ष ढूँढने आए हैं, तो इसीलिए आप इसे नहीं ढूँढ पा रहे।

token सबमिट करना

token उस field में जाता है जिसे पेज पोस्ट करता है, जो आमतौर पर होता है g-recaptcha-response:

using System.Net.Http;

using var http = new HttpClient();

var form = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>(
        "g-recaptcha-response", result.Code),
    new KeyValuePair<string, string>("username", "demo"),
});

var response = await http.PostAsync(
    "https://example.com/login", form);

एक चीज़ जिसकी आपको यहाँ ज़रूरत नहीं’t: result.UserAgent। यह केवल Turnstile के लिए भरा जाता है, और यह हर reCAPTCHA solve के लिए null होता है। अगर आपने Turnstile कोड से कोई helper कॉपी किया है, तो null भेजने के बजाय उस header को हटा दें।

reCAPTCHA tokens भी अल्पकालिक होते हैं। Google उन्हें दो मिनट बाद समाप्त कर देता है, इसलिए उसी पल हल करें जब आप सबमिट करने के लिए तैयार हों, न कि किसी लंबे workflow की शुरुआत में।

v2 Enterprise के बारे में क्या?

वही method, अलग options। Drop version और action, और जोड़ें datas अगर Google ने पेज को एक दिया data-s वैल्यू:

var v2 = await solver.RecaptchaAsync(sitekey, pageUrl,
    new Dictionary<string, object?>
    {
        ["enterprise"] = 1,
        ["datas"]      = "YOUR_DATA_S_VALUE",
    });

data-s Google’s की अपनी properties पर दिखता है और लगभग कहीं और नहीं। अगर आप इसे पेज में नहीं ढूँढ पाते, तो आपको इसकी ज़रूरत नहीं है।

विफलताएं संभालना

हर SDK exception इससे व्युत्पन्न होता है CapSkipError। catch blocks लिखने से पहले जानने लायक एक .NET जाल है।

using System;
using CapSkip;

try
{
    var result = await solver.RecaptchaAsync(sitekey, pageUrl, options);
}
catch (CapSkip.ValidationException) { /* bad parameters */ }
catch (NetworkException)            { /* CapSkip is not running */ }
catch (ApiException)                { /* API returned an error */ }
catch (CapSkip.TimeoutException)    { /* exceeded recaptchaTimeout */ }
catch (CapSkipError)                { /* anything else from the SDK */ }

TimeoutException और ValidationException दोनों में मौजूद हैं System और CapSkip। दोनों namespace इम्पोर्ट होने पर, एक बिना योग्यता वाला catch इससे हल होता है System type और चुपचाप कभी fire नहीं होता। इन्हें qualify करें, या catch करें CapSkipError और इसका निरीक्षण करें।

आम errors

कोडकारणफिक्स
ERROR_GOOGLEKEYSitekey खाली या ख़राब हैइसे live पेज से दोबारा पढ़ें, न कि किसी cached कॉपी से
ERROR_PAGEURLURL गायब है या पूरा absolute URL नहीं हैस्कीम शामिल करें, और उस पेज का उपयोग करें जिस पर विजेट है
ERROR_BAD_PARAMETERSकिसी विकल्प का मान गलत प्रकार का हैजाँचें enterprise संख्या 1 है, string “1” नहीं
ERROR_CAPTCHA_UNSOLVABLEहल पूरा नहीं किया जा सकापुष्टि करें कि version flags पेज से मेल खाते हैं, फिर उसी नेटवर्क पथ पर एक प्रॉक्सी जोड़ें

हर प्रकार के लिए पूरी parameter सूची इसमें है API डॉक्युमेंटेशन.

अक्सर पूछे जाने वाले सवाल

क्या Enterprise के लिए कोई अलग method है?

नहीं। RecaptchaAsync चारों संयोजनों को संभालता है। Enterprise options dictionary में एक flag है, और यह साथ-साथ काम करता है version इसे बदलने के बजाय।

अगर मैं action का नाम गलत कर दूँ तो क्या होता है?

आपको एक पूरी तरह वैध टोकन मिलता है जिसे साइट अस्वीकार कर देती है। Google वेरिफिकेशन के दौरान स्कोर के साथ action भी लौटाता है, और अधिकांश बैकएंड इसकी तुलना अपनी अपेक्षा से करते हैं। सॉल्वर से कोई एरर नहीं आता, क्योंकि हल करने वाली तरफ कुछ भी गलत नहीं हुआ।

क्या v3 Enterprise के लिए मुझे प्रॉक्सी चाहिए?

केवल तब जब साइट geo-sensitive हो या score request करने वाले IP पर निर्भर करता हो। Pass ["proxy"] = new Proxy("HTTPS", "user:[email protected]:3128") उसी options dictionary में। प्रॉक्सी reCAPTCHA, Turnstile और GeeTest के लिए समर्थित हैं, लेकिन image कैप्चा के लिए नहीं।

क्या मैं एक साथ कई पेज हल कर सकता हूँ?

हाँ। हर मेथड एक लौटाता है Task, इसलिए await Task.WhenAll(...) बस इतना ही चाहिए। SDK export करता है AsyncCapSkip भी, लेकिन .NET में यह बस इसका alias है CapSkipClient, इसलिए रखा गया ताकि Python SDK से port किया गया कोड फिर भी compile हो जाए। यह कुछ नहीं जोड़ता।

सारांश

एक method, दो flags। सेट करें version को v3 और enterprise को 1, कॉपी करें action पेज से बिल्कुल सही, फिर सबमिट करें result.Code दो मिनट के भीतर। ट्यून करने के लिए कोई स्कोर नहीं होता, इसलिए अगर कोई टोकन अस्वीकार होता है, तो पहले action और फ्लैग्स जाँचें।

.NET सरफेस का बाकी हिस्सा यहाँ है C# कैप्चा सॉल्वर पेज, Enterprise सपोर्ट अन्य भाषाओं को शामिल करता है, और reCAPTCHA v3 हल scoring पर गहराई से जाता है। CapSkip एक लोकल captcha सॉल्वर, ताकि इनमें से हर एक हल आपकी अपनी मशीन पर होता है।