Giriş sayfaları CAPTCHA'larla en sık karşılaşılan yerdir. reCAPTCHA v2, v3, Turnstile veya resim CAPTCHA olsun, CaptchaAI, otomasyonunuz form doldurma ve gönderme işlemlerini gerçekleştirirken bu zorluğu çözer.
Ortak Giriş CAPTCHA Türleri
| CAPTCHA | Nasıl Görünüyor? | CaptchaAI Yöntemi |
|---|---|---|
| reCAPTCHA v2 | Göndermeden önce onay kutusu veya meydan okuma | method=userrecaptcha |
| reCAPTCHA v3 | Görünmez puanlama, düşük puanlı kullanıcıları engeller | method=userrecaptcha&version=v3 |
| Cloudflare Turnstile | Giriş formundan önceki widget | method=turnstile |
| Resim CAPTCHA'sı | Yazılacak metin resmi | method=base64 |
Yöntem 1: HTTP İstekleri (Tarayıcı Yok)
Standart POST isteklerini kabul eden giriş formları için:
import requests
import time
API_KEY = "YOUR_API_KEY"
def solve_recaptcha(site_key, page_url):
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": site_key, "pageurl": page_url
})
task_id = resp.text.split("|")[1]
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
})
if result.text == "CAPCHA_NOT_READY": continue
if result.text.startswith("OK|"): return result.text.split("|")[1]
raise Exception(result.text)
raise TimeoutError()
# Login flow
session = requests.Session()
login_url = "https://staging.example.com/qa-login"
# Load login page to get cookies and site key
page = session.get(login_url)
# Extract site_key from the page HTML...
site_key = "6Le-wvkS..."
# Solve CAPTCHA
token = solve_recaptcha(site_key, login_url)
# Submit login form
resp = session.post(login_url, data={
"username": "user@example.com",
"password": "your_password",
"g-recaptcha-response": token
})
if resp.url != login_url:
print("Login successful!")
# session now has auth cookies for subsequent requests
Yöntem 2: Selenyum (Python)
JavaScript yürütülmesini gerektiren oturum açma sayfaları için:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests
import time
API_KEY = "YOUR_API_KEY"
options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(options=options)
# Navigate to login page
driver.get("https://staging.example.com/qa-login")
wait = WebDriverWait(driver, 10)
# Fill in credentials
username_field = wait.until(EC.presence_of_element_located((By.NAME, "username")))
username_field.send_keys("user@example.com")
driver.find_element(By.NAME, "password").send_keys("your_password")
# Extract site key and solve
recaptcha = driver.find_element(By.CLASS_NAME, "g-recaptcha")
site_key = recaptcha.get_attribute("data-sitekey")
token = solve_recaptcha(site_key, driver.current_url)
# Inject token
driver.execute_script(
f"document.getElementById('g-recaptcha-response').innerHTML = '{token}';"
)
# Submit
driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()
wait.until(EC.url_changes(driver.current_url))
print(f"Logged in! Now at: {driver.current_url}")
Yöntem 3: Puppeteer (Node.js)
const puppeteer = require("puppeteer");
const axios = require("axios");
const API_KEY = "YOUR_API_KEY";
async function solveRecaptcha(siteKey, pageUrl) {
const submit = await axios.get("https://ocr.captchaai.com/in.php", {
params: {
key: API_KEY,
method: "userrecaptcha",
googlekey: siteKey,
pageurl: pageUrl,
},
});
const taskId = submit.data.split("|")[1];
while (true) {
await new Promise((r) => setTimeout(r, 5000));
const result = await axios.get("https://ocr.captchaai.com/res.php", {
params: { key: API_KEY, action: "get", id: taskId },
});
if (result.data === "CAPCHA_NOT_READY") continue;
if (result.data.startsWith("OK|")) return result.data.split("|")[1];
throw new Error(result.data);
}
}
(async () => {
const browser = await puppeteer.launch({ headless: "new" });
const page = await browser.newPage();
await page.goto("https://staging.example.com/qa-login");
// Fill credentials
await page.type("#username", "user@example.com");
await page.type("#password", "your_password");
// Get site key and solve
const siteKey = await page.$eval(".g-recaptcha", (el) =>
el.getAttribute("data-sitekey")
);
const token = await solveRecaptcha(siteKey, page.url());
// Inject and submit
await page.evaluate(
(t) => (document.getElementById("g-recaptcha-response").innerHTML = t),
token
);
await page.click('button[type="submit"]');
await page.waitForNavigation();
console.log("Logged in:", page.url());
await browser.close();
})();
Çok Faktörlü + CAPTCHA'yı Kullanma
Bazı siteler CAPTCHA'ları çok faktörlü kimlik doğrulamayla birleştirir:
# Step 1: Solve CAPTCHA and submit login
token = solve_recaptcha(site_key, login_url)
resp = session.post(login_url, data={
"username": "user@example.com",
"password": "your_password",
"g-recaptcha-response": token
})
# Step 2: Handle MFA page (if redirected)
if "verify" in resp.url or "mfa" in resp.url:
# Your MFA code logic here
mfa_code = get_mfa_code()
resp = session.post(resp.url, data={"code": mfa_code})
# Step 3: Verify logged in
assert "dashboard" in resp.url
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
| Giriş CAPTCHA sayfasına döner | Jetonun süresi doldu | 60 saniye içinde çözün ve gönderin |
| Doğru şifreyle "Geçersiz kimlik bilgileri" | CSRF jetonu eksik | Giriş sayfasından CSRF jetonunu çıkarın ve ekleyin |
| Oturum açıldıktan sonra oturum kaybedildi | Çerezler kalıcı değil | requests.Session() veya tarayıcı çerezlerini kullanın |
| reCAPTCHA v3 jetona rağmen engelleniyor | Puan çok düşük | CaptchaAI yüksek puanlar için optimize eder; eylem parametresini doğrula |
SSS
Herhangi bir web sitesine girişleri otomatikleştirebilir miyim?
CaptchaAI CAPTCHA bileşenini yönetir. Otomasyonunuzun oturum açma formunu kendisinin yönetmesi gerekir (alanların doldurulması, gönderilmesi, çerezlerin yönetilmesi). Yasallık, hesaba erişim yetkinize bağlıdır.
Oturum açma otomasyonu için bir tarayıcıya ihtiyacım var mı?
Her zaman değil. Birçok oturum açma sayfası standart HTTP POST isteklerini kabul eder. Bir tarayıcıyı yalnızca oturum açma işlemi JavaScript yürütülmesini veya karmaşık etkileşimleri gerektirdiğinde kullanın.
Giriş yaptıktan sonra oturum bakımını nasıl halledebilirim?
Python'da requests.Session() kullanın veya tarayıcı örneğinizde çerezleri koruyun. Oturum açma sırasındaki oturum çerezleri, sonraki tüm kimlik doğrulamalı istekler için gereklidir.