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.