Halaman login adalah tempat paling umum untuk menemukan CAPTCHA. Baik itu reCAPTCHA v2, v3, Turnstile, atau CAPTCHA gambar, CaptchaAI memecahkan tantangan sementara otomatisasi Anda menangani pengisian dan pengiriman formulir.
Jenis CAPTCHA Login Umum
| CAPTCHA | Bagaimana Kelihatannya | Metode CaptchaAI |
|---|---|---|
| reCAPTCHA v2 | Kotak centang atau tantangan sebelum dikirimkan | method=userrecaptcha |
| reCAPTCHA v3 | Penilaian tak terlihat, memblokir pengguna dengan skor rendah | method=userrecaptcha&version=v3 |
| Cloudflare Turnstile | Widget sebelum formulir login | method=turnstile |
| Gambar CAPTCHA | Gambar teks untuk diketik | method=base64 |
Metode 1: Permintaan HTTP (Tanpa Browser)
Untuk formulir login yang menerima permintaan POST standar:
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
Metode 2: Selenium (Python)
Untuk halaman login yang memerlukan eksekusi JavaScript:
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()
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}")
Metode 3: Dalang (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();
})();
Menangani Multi-Faktor + CAPTCHA
Beberapa situs menggabungkan CAPTCHA dengan autentikasi multifaktor:
# 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
Pemecahan Masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
| Login kembali ke halaman CAPTCHA | Token sudah habis masa berlakunya | Selesaikan dan kirimkan dalam waktu 60 detik |
| "Kredensial tidak valid" dengan kata sandi yang benar | Token CSRF hilang | Ekstrak dan sertakan token CSRF dari halaman login |
| Sesi hilang setelah login | Cookie tidak bertahan | Gunakan requests.Session() atau cookie browser |
| reCAPTCHA v3 memblokir meskipun ada token | Skor terlalu rendah | CaptchaAI mengoptimalkan skor tinggi; verifikasi parameter action |
Pertanyaan Umum
Bisakah saya mengotomatiskan login ke situs web mana pun?
CaptchaAI menangani komponen CAPTCHA. Otomatisasi Anda perlu menangani formulir login itu sendiri (mengisi kolom, mengirimkan, mengelola cookie). Legalitasnya tergantung pada otorisasi Anda untuk mengakses akun.
Apakah saya memerlukan browser untuk otomatisasi login?
Tidak selalu. Banyak halaman login menerima permintaan HTTP POST standar. Gunakan browser hanya ketika login memerlukan eksekusi JavaScript atau interaksi kompleks.
Bagaimana cara menangani pemeliharaan sesi setelah login?
Gunakan requests.Session() dengan Python atau pertahankan cookie di browser Anda. Cookie sesi dari login diperlukan untuk semua permintaan terotentikasi berikutnya.
Panduan Terkait
- Penanganan CAPTCHA Selenium dengan Python
- Pemecahan CAPTCHA Puppeteer dengan Node.js
- Penanganan CAPTCHA Playwright