API Eğitimleri

reCAPTCHA Veri-S Parametresinin Açıklaması

data-s parametresi, bazı reCAPTCHA uygulamalarında, özellikle de Google Arama, YouTube ve Google Play gibi Google'a ait mülklerde görünen, oturuma özel bir belirteçtir. Mevcut olduğunda, çözücü API isteğinize dahil edilmelidir - atlanması, çözme hatalarına veya geçersiz belirteçlere neden olur.Bu kılavuz, data-s'nin ne olduğunu, nerede göründüğünü, nasıl çıkarılacağını ve CaptchaAI'ye nasıl aktarılacağını açıklamaktadır.


data-s parametresi nedir?

data-s parametresi, reCAPTCHA widget HTML'sine gömülü, sunucu tarafından oluşturulan bir oturum belirtecidir. CAPTCHA mücadelesini belirli bir sunucu oturumuna bağlayarak farklı oturumlarda belirtecin yeniden kullanılmasını önler.

Göründüğü yer

<!-- reCAPTCHA widget with data-s parameter -->
<div class="g-recaptcha"
     data-sitekey="6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp"
     data-s="AB2grfE8_kyMp3XYRuJo5c..."
     data-callback="onCaptchaSolved">
</div>

data-s özelliği, reCAPTCHA <div> öğesinde standart data-sitekey'nin yanında yer alır.

Temel özellikler

Mülkiyet Değer
Biçim Base64 kodlu dize, 200-500 karakter
ömür boyu Tek kullanımlık, mevcut sayfa yüküne bağlı
Kapsam Oturuma özeldir, sayfa yüklemelerinde yeniden kullanılamaz
gerekli Evet, mevcut olduğunda — onsuz çözüm başarısız olur
Yeniler Her sayfada yeni değer load/refresh

data-s mevcut olduğunda

data-s parametresi çoğu reCAPTCHA uygulamasında mevcut DEĞİLDİR. Öncelikle şuralarda görünür:

sitesi Mevcudiyet Notlar
Google Arama (üzgünüm/unusual trafiği) Her zaman Google Arama CAPTCHA çözümü için gereklidir
YouTube Bazen Belirli doğrulama akışlarında görünür
Google Play Bazen Uygulama listeleme doğrulaması
Google Formları nadiren Sınırlı uygulamalar
reCAPTCHA kullanan üçüncü taraf siteler Neredeyse hiç Standart entegrasyonlar veri kullanmaz

Google'a ait mülklerle ÇALIŞMIYORSANIZ data-s konusunda endişelenmenize gerek yoktur. Çözümleyiciniz Google Arama CAPTCHA'sı için geçersiz jetonlar döndürüyorsa bunun olası nedeni eksik bir data-s'dir.


Veriler teknik olarak nasıl çalışır?

User triggers CAPTCHA (e.g., Google flags unusual search traffic)
    ↓
Google serves a CAPTCHA page with:

  - data-sitekey (site key, same for all Google search CAPTCHAs)
  - data-s (session token, unique per page load)
    ↓
reCAPTCHA widget initializes with both parameters
    ↓
Challenge completion generates a g-recaptcha-response token
    ↓
Token is submitted alongside the session reference
    ↓
Google validates token + session binding
    ↓
If data-s was not used during solving: "invalid-input-response" or silent failure

data-s parametresi esasen bir nonce gibi davranır; CAPTCHA meydan okumasını belirli bir sunucu tarafı oturumuna bağlar. Ortaya çıkan jetonun beklenen oturumla eşleşmesi için çözücünün jetonu oluştururken bu değeri kullanması gerekir.


Sayfadan veri ayıklanıyor

Python çıkarma

import requests
from bs4 import BeautifulSoup
import re

def extract_recaptcha_params(url):
    """Extract reCAPTCHA parameters including data-s from a page."""
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/120.0.0.0 Safari/537.36",
    }

    response = requests.get(url, headers=headers, timeout=15)
    soup = BeautifulSoup(response.text, "html.parser")

    # Find reCAPTCHA widget div
    widget = soup.find("div", class_="g-recaptcha")
    if not widget:
        # Try finding by data-sitekey attribute
        widget = soup.find(attrs={"data-sitekey": True})

    if not widget:
        return {"error": "No reCAPTCHA widget found"}

    params = {
        "sitekey": widget.get("data-sitekey"),
        "data_s": widget.get("data-s"),
        "callback": widget.get("data-callback"),
        "size": widget.get("data-size"),
        "has_data_s": widget.get("data-s") is not None,
    }

    return params

# Example: Google "unusual traffic" page
params = extract_recaptcha_params("https://www.google.com/sorry/index")
print(params)
# {
#   "sitekey": "6LfwuyUT...",
#   "data_s": "AB2grfE8_kyMp3...",
#   "has_data_s": True
# }

Node.js çıkarma

const axios = require("axios");
const cheerio = require("cheerio");

async function extractRecaptchaParams(url) {
    const { data: html } = await axios.get(url, {
        headers: {
            "User-Agent":
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
                "AppleWebKit/537.36 (KHTML, like Gecko) " +
                "Chrome/120.0.0.0 Safari/537.36",
        },
        timeout: 15000,
    });

    const $ = cheerio.load(html);
    const widget = $(".g-recaptcha, [data-sitekey]").first();

    if (widget.length === 0) {
        return { error: "No reCAPTCHA widget found" };
    }

    return {
        sitekey: widget.attr("data-sitekey"),
        dataS: widget.attr("data-s") || null,
        callback: widget.attr("data-callback") || null,
        hasDataS: !!widget.attr("data-s"),
    };
}

extractRecaptchaParams("https://www.google.com/sorry/index")
    .then(console.log);

Selenyum ekstraksiyonu (dinamik sayfalar için)

from selenium import webdriver
from selenium.webdriver.common.by import By

def extract_data_s_selenium(driver, url):
    """Extract data-s from a dynamically loaded reCAPTCHA page."""
    driver.get(url)

    # Wait for reCAPTCHA widget to load
    import time
    time.sleep(3)

    try:
        widget = driver.find_element(By.CSS_SELECTOR, ".g-recaptcha, [data-sitekey]")
        return {
            "sitekey": widget.get_attribute("data-sitekey"),
            "data_s": widget.get_attribute("data-s"),
        }
    except Exception:
        return {"error": "Widget not found"}

CaptchaAI kullanarak veri-ler ile çözme

data-s mevcut olduğunda, bunu CaptchaAI API isteğinize ekleyin:

Python

import requests
import time

API_KEY = "YOUR_API_KEY"

# Step 1: Extract parameters from the CAPTCHA page
sitekey = "6LfwuyUTAAAAAOAmoS0fdqijC2PbbdH4kjq62Y1b"
data_s = "AB2grfE8_kyMp3XYRuJo5c..."  # Extracted from data-s attribute
page_url = "https://www.google.com/sorry/index?continue=..."

# Step 2: Submit to CaptchaAI WITH data-s
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url,
    "data-s": data_s,  # Include data-s parameter
    "json": 1,
})

task_id = submit.json()["request"]

# Step 3: Poll for result
for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    }).json()

    if result.get("status") == 1:
        token = result["request"]
        print(f"Token: {token[:60]}...")
        # Submit this token to the Google CAPTCHA form
        break

Node.js

const axios = require("axios");

async function solveWithDataS(sitekey, dataS, pageUrl) {
    const API_KEY = "YOUR_API_KEY";

    // Submit with data-s
    const { data: submit } = await axios.post(
        "https://ocr.captchaai.com/in.php",
        new URLSearchParams({
            key: API_KEY,
            method: "userrecaptcha",
            googlekey: sitekey,
            pageurl: pageUrl,
            "data-s": dataS,
            json: 1,
        })
    );

    const taskId = submit.request;

    // Poll
    for (let i = 0; i < 60; i++) {
        await new Promise((r) => setTimeout(r, 5000));
        const { data: result } = await axios.get(
            "https://ocr.captchaai.com/res.php",
            {
                params: {
                    key: API_KEY,
                    action: "get",
                    id: taskId,
                    json: 1,
                },
            }
        );

        if (result.status === 1) {
            return result.request;
        }
    }

    throw new Error("Timeout");
}

Yaygın veri hataları

hata Belirti Düzeltme
Mevcut olduğunda veri-leri atlamak Belirteç doğrulaması sessizce başarısız oluyor Göndermeden önce daima data-s özelliğini kontrol edin
Mevcut olmadığında verileri dahil etme Hatayı veya reddedilen isteği çözme Yalnızca öznitelik widget'ta mevcutsa data-s'yi ekleyin
Verileri sayfa yüklemelerinde yeniden kullanma Geçersiz jeton Her sayfa yüklemesinde yeni bir veri ayıklayın
URL kodlama verileri hatalı Bozuk parametre Ham base64 değerini ek kodlama olmadan iletin
Eski veri-ler kullanılıyor (sayfa birkaç dakika önce yüklendi) Belirteç uyuşmazlığı Çözücüye göndermeden hemen önce verileri çıkarın

Veri çıkarma yardımcısı

Hem veri hem de veri olmayan reCAPTCHA sayfalarını işleyen yeniden kullanılabilir bir yardımcı program:

import requests
from bs4 import BeautifulSoup

class RecaptchaExtractor:
    """Extract reCAPTCHA parameters from any page."""

    def __init__(self, url, session=None):
        self.url = url
        self.session = session or requests.Session()
        self.params = None

    def extract(self):
        """Extract sitekey, data-s, and other parameters."""
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/120.0.0.0 Safari/537.36",
        }

        response = self.session.get(self.url, headers=headers, timeout=15)
        soup = BeautifulSoup(response.text, "html.parser")

        widget = soup.find(attrs={"data-sitekey": True})
        if not widget:
            raise ValueError("No reCAPTCHA widget found on page")

        self.params = {
            "sitekey": widget["data-sitekey"],
            "pageurl": self.url,
        }

        # Include data-s only if present
        data_s = widget.get("data-s")
        if data_s:
            self.params["data-s"] = data_s

        return self.params

    def build_solver_payload(self, api_key):
        """Build CaptchaAI submission payload with correct parameters."""
        if not self.params:
            self.extract()

        payload = {
            "key": api_key,
            "method": "userrecaptcha",
            "googlekey": self.params["sitekey"],
            "pageurl": self.params["pageurl"],
            "json": 1,
        }

        # Only include data-s when it exists
        if "data-s" in self.params:
            payload["data-s"] = self.params["data-s"]

        return payload


# Usage
extractor = RecaptchaExtractor("https://www.google.com/sorry/index?continue=...")
payload = extractor.build_solver_payload("YOUR_API_KEY")
# payload includes data-s only when present on the page

Sık sorulan sorular

ReCAPTCHA çözümü için her zaman veriye ihtiyacım var mı?

Hayır. data-s parametresi, reCAPTCHA uygulamalarının yalnızca küçük bir alt kümesinde, özellikle de Google'a ait mülklerde görünür. reCAPTCHA kullanan standart üçüncü taraf web siteleri için yalnızca sitekey ve pageurl'ye ihtiyacınız vardır. Ekleyip eklememeye karar vermeden önce daima widget üzerinde data-s'nin varlığını kontrol edin.

İhtiyaç duyulmadığı halde data-s'yi eklersem ne olur?

Bazı çözücüler ekstra parametreyi göz ardı edebilir. Diğerleri hata döndürebilir. data-s'yi yalnızca hedef sayfanın reCAPTCHA widget'ında gerçekten mevcut olduğunda eklemek en iyi uygulamadır.

Verileri birden fazla çözümde önbelleğe alabilir miyim?

Hayır. data-s değeri oturuma özeldir ve tek bir sayfa yüklemesine bağlıdır. CAPTCHA sayfasını her yüklediğinizde yeni bir data-s değeri oluşturulur. Her çözüm isteğinden önce yeni bir değer çıkarmalısınız.

Google Arama CAPTCHA çözümüm neden doğru site anahtarıyla bile başarısız oluyor?

Google Arama'da "olağandışı trafik" CAPTCHA'sını çözüyorsanız en yaygın hata nedeni eksik data-s parametresidir. Google Arama CAPTCHA'ları her zaman data-s'yi içerir ve bu olmadan çözüm başarısız olur. data-s niteliğini reCAPTCHA widget'ı <div> öğesinden çıkarın.


Özet

data-s parametresi, başta Google'a ait mülkler olmak üzere belirli reCAPTCHA uygulamalarında bulunan bir oturum bağlama jetonudur. Mevcut olduğunda, onu reCAPTCHA widget'ının HTML'sinden çıkarmalı veCaptchaAIAPI isteği. Göndermeden önce her zaman data-s'yi kontrol edin; varsa ekleyin, yokken çıkarın. Özellikle Google Arama CAPTCHA'ları için data-s her zaman gereklidir.

İlgili Makaleler

Bu makale için yorumlar devre dışı bırakılmıştır.