Devlet portallarındaki BLS CAPTCHA'ları CaptchaAI API'si ile çözebilir; vize randevusu, belge yükleme ve başvuru formu akışlarınızı oturum süresi dolmadan tamamlayabilirsiniz. Türkiye'den Schengen vize randevusu işleyen ekiplerin çoğu için asıl zorluk CAPTCHA'nın kendisi değil, onu doğru anda çözüp doğru form alanına yerleştirmektir. BLS, CaptchaAI'nin genel kullanıma açık (GA) çözdüğü tiplerden biridir; görsel türünü doğru tanımladığınız sürece çözüm katmanı güvenilir çalışır ve geriye kalan iş, portalın oturum ile form davranışını yönetmektir.
Bu otomasyonları yalnızca işlemeye yetkili olduğunuz başvurular ve kendi QA test akışlarınız için kullanın; topladığınız kişisel veriler KVKK kapsamına girer ve buna göre saklanmalıdır.
BLS CAPTCHA nerede karşınıza çıkar
BLS CAPTCHA'lar ağırlıklı olarak devlet hizmet portallarında, neredeyse her zaman kritik adımın hemen önünde belirir. Nerede çıkacağını önceden bilmek, çözüm mantığını iş akışının doğru yerine — genellikle gönderimden hemen önceye — koymanızı sağlar.
| Portal türü | CAPTCHA'nın konumu | Amacı |
|---|---|---|
| Vize randevu rezervasyonu | Slot seçiminden önce | Otomatik randevu kapmayı engellemek |
| Belge yükleme formları | Gönderimden önce | İnsan etkileşimini doğrulamak |
| Randevu durumu sorgulama | Durum görüntülenmeden önce | Otomatik sorguları hız sınırına tabi tutmak |
| Başvuru formları | Form gönderiminden önce | Otomatik gönderimleri engellemek |
Karşınıza çıkan zorluk türleri
Portala göre farklı biçimler görürsünüz ve her biri, CaptchaAI'ye görseli nasıl işleyeceğini bildiren ayrı bir instructions kodu bekler. Doğru talimatı vermek çözüm oranını ve çözüm süresini doğrudan etkiler:
- Bozulmuş metin içeren görsel tabanlı zorluklar
- Matematiksel ifade soruları
- Özel görsel seçme görevleri
- Metin tabanlı bulmacalar
Oturum ve zamanlama kuralları
Deneyimli ekiplerin darboğazı çözüm hızı değil, oturum disiplinidir. Devlet portalları oturum durumu konusunda katıdır; kodu yazmadan önce şu kuralları netleştirin:
- Çerezleri olduğu gibi koruyun —
requests.Session()veya tarayıcının kalıcı içeriğini kullanın. - Hız sınırlarına takılmamak için sayfa yüklemeleri arasına 2–5 saniyelik gecikme koyun.
- Her POST için CSRF token'ını çıkarıp isteğe ekleyin ve formdaki gizli input alanlarını koruyun.
- İş akışını oturum zaman aşımı penceresi içinde tamamlayın; otomatik yönlendirmelere izin verin.
En kritik kural zamanlamadır: CAPTCHA'yı gönderimden hemen önce çözün. Erken çözüp geç göndermek, bu portallarda gördüğünüz "oturum süresi doldu" hatasının en yaygın nedenidir.
Maliyet planlaması: neden USD ve thread tabanlı
BLS iş akışları Türkiye'de en çok Schengen vize randevusu bağlamında konuşulur ve genelde düşük ama düzenli hacimli çalışır. CaptchaAI thread tabanlı fiyatlandırır: her planda thread başına sınırsız çözüm alırsınız ve günlük bir üst sınır yoktur. TL kurundaki oynaklığa rağmen aylık maliyetiniz sabit USD olarak kalır; düşük hacimli bir BLS akışı için BASIC ($15/ay, 5 thread) başlangıç noktası olarak yeterlidir, eşzamanlı iş arttıkça thread sayısını yükseltirsiniz. Fiyatlar USD üzerindendir.
Kod yazmadan önce bilinmesi gereken tuzaklar
Bu başarısızlık senaryolarını önceden tanımak, akışınızı baştan sağlam kurmanızı sağlar:
| Sorun | Sebep | Çözüm |
|---|---|---|
| Çözümden sonra "oturum süresi doldu" | Çözme ve gönderme çok uzun sürdü | CAPTCHA'yı gönderimden hemen önce çözün |
| CAPTCHA görseli yüklenmiyor | Belirli bir Referer başlığı gerekiyor | Referer başlığını portal sayfasının URL'sine ayarlayın |
| Yanıt doğru ama form reddediliyor | Eksik CSRF token'ı veya gizli alanlar | Formdaki tüm hidden input alanlarını çıkarın |
| Birkaç denemeden sonra portal engelliyor | Hız sınırlaması | Denemeler arasına gecikme ekleyin ve istek hacmini düşürün |
| Her seferinde farklı CAPTCHA | Portal her istekte yeni CAPTCHA üretiyor | Her denemede taze görsel alıp yeniden çözün |
CaptchaAI ile adım adım çözme
Aşağıdaki üç adım, HTTP tabanlı en yalın akışı gösterir: görseli al, çöz, formu gönder.
Adım 1: CAPTCHA görselini ve talimatları alın
import requests
from bs4 import BeautifulSoup
import base64
session = requests.Session()
# Load the portal page
page = session.get("https://portal.example.gov/appointment")
soup = BeautifulSoup(page.text, "html.parser")
# Find the CAPTCHA image
captcha_img = soup.select_one("img#captcha-image, img.captcha")
captcha_url = captcha_img["src"]
# Download the CAPTCHA image
if captcha_url.startswith("data:"):
# Base64 encoded inline image
img_data = captcha_url.split(",")[1]
else:
# URL-referenced image
img_response = session.get(captcha_url)
img_data = base64.b64encode(img_response.content).decode()
Görsel sayfaya
data:URI'si olarak gömülü de gelebilir, ayrı bir URL üzerinden de. İkisini de tek oturum içinde ele almak çerezleri korur.
Adım 2: CaptchaAI'ye gönderin
import time
def solve_bls_captcha(image_base64, instructions=""):
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "base64",
"body": image_base64,
"instructions": instructions,
"json": 1
})
task_id = resp.json()["request"]
for _ in range(30):
time.sleep(3)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "get",
"id": task_id,
"json": 1
})
data = result.json()
if data["status"] == 1:
return data["request"]
raise TimeoutError("BLS solve timed out")
# Solve
captcha_answer = solve_bls_captcha(img_data)
Görevi
in.php'ye gönderdikten sonra sonucures.phpüzerinden 3 saniye aralıklarla sorgularsınız; çözüm hazır olduğunda kullanacağınız metin yanıtı döner.
Adım 3: Formu gönderin
# Find form fields
form_data = {
"captcha_response": captcha_answer,
"appointment_type": "visa",
"location": "embassy-city",
# ... other form fields
}
# Submit with the same session (cookies preserved)
result = session.post(
"https://portal.example.gov/appointment/submit",
data=form_data
)
if "success" in result.text.lower():
print("Form submitted successfully")
Çözülen yanıtı, portalın beklediği alan adıyla aynı oturumdan gönderin. Çerezleri koruyan bu son POST, çözümü gerçek bir gönderime dönüştüren adımdır.
Devlet portallarında sık görülen desenler
Desen 1: Çok adımlı formlar
Devlet portalları çoğu zaman CAPTCHA'nın yalnızca son adımda göründüğü çok adımlı formlar kullanır:
# Step 1: Select service type
session.post(url, data={"service": "passport"})
# Step 2: Fill personal details
session.post(url, data={"name": "...", "dob": "..."})
# Step 3: Select appointment slot
session.post(url, data={"slot": "2026-04-10-09:00"})
# Step 4: Solve CAPTCHA and confirm
captcha_answer = solve_bls_captcha(get_captcha_image(session))
session.post(url, data={"captcha": captcha_answer, "confirm": "true"})
Desen 2: Hatada CAPTCHA'nın yenilenmesi
Yanıt yanlışsa portal yeni bir CAPTCHA üretir; bu yüzden her denemede taze görsel almanız gerekir:
max_attempts = 3
for attempt in range(max_attempts):
# Get fresh CAPTCHA for each attempt
captcha_image = get_captcha_image(session)
answer = solve_bls_captcha(captcha_image)
result = session.post(submit_url, data={"captcha": answer})
if "incorrect" not in result.text.lower():
break
print(f"Attempt {attempt + 1} — CAPTCHA refreshed, retrying")
Desen 3: Süre sınırlı oturumlar
Devlet portallarının oturumları genellikle belirli bir sürenin sonunda kapanır. Zaman aşımına yaklaşınca oturumu tazelemek, akışın ortasında kesintiye uğramanızı önler:
import time
session_start = time.time()
SESSION_TIMEOUT = 600 # 10 minutes typical
def check_session_valid():
elapsed = time.time() - session_start
if elapsed > SESSION_TIMEOUT - 60: # 1 min safety margin
print("Session expiring — refresh needed")
return False
return True
# Before CAPTCHA submission
if not check_session_valid():
# Start a fresh session
session = requests.Session()
session.get(portal_url)
session_start = time.time()
JavaScript ile tarayıcı otomasyonu
Bazı portallar sayfayı yalnızca JavaScript çalıştıktan sonra oluşturur. Bu durumda HTTP istekleri yerine Puppeteer ile bir headless tarayıcı (gerektiğinde görünür pencere) kullanmak gerekir:
const puppeteer = require('puppeteer');
async function handleBLSPortal() {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://portal.example.gov/appointment');
// Wait for CAPTCHA to load
await page.waitForSelector('img#captcha-image');
// Get CAPTCHA image as base64
const imgBase64 = await page.evaluate(() => {
const img = document.querySelector('img#captcha-image');
const canvas = document.createElement('canvas');
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
return canvas.toDataURL('image/png').split(',')[1];
});
// Solve with CaptchaAI
const answer = await solveBLSCaptcha(imgBase64);
// Type the answer
await page.type('#captcha-input', answer);
// Submit
await page.click('#submit-button');
// Wait for result
await page.waitForNavigation();
}
Tarayıcı yaklaşımı daha ağırdır; yalnızca sayfa JavaScript oluşturma gerektiriyorsa veya karmaşık istemci tarafı doğrulama varsa tercih edin.
Sık sorulan sorular
BLS CAPTCHA çözümü ne kadar sürer?
BLS CAPTCHA'lar genellikle 5–15 saniye içinde çözülür. Bu süreyi oturum zaman aşımı hesabınıza dahil edin: portal oturumu kapanmadan önce hem çözme hem gönderme için yeterli payınız olduğundan emin olun.
instructions kodu ne işe yarar?
instructions, CaptchaAI'ye görseldeki zorluk tipini (bozulmuş metin, matematik işlemi, görsel seçme vb.) bildirir. Portalın gösterdiği tipe göre doğru talimatı vermek çözüm oranını doğrudan etkiler; bu yüzden akışa başlamadan önce tipi belirleyip talimatı sabitleyin.
HTTP istekleri mi yoksa tarayıcı otomasyonu mu kullanmalıyım?
requests.Session() ile HTTP istekleri daha hızlı ve daha hafiftir; çoğu BLS portalı bu şekilde çalışır. Tarayıcı otomasyonunu yalnızca sayfa JavaScript oluşturma gerektiriyorsa veya karmaşık istemci tarafı doğrulama varsa devreye alın.
Oturum, çözümden hemen sonra kapanırsa ne yapmalıyım?
Çözme adımını mümkün olduğunca gönderime yaklaştırın ve zaman aşımına yaklaşınca oturumu tazeleyin (Desen 3). Çözümü erken alıp formu geç göndermek, "oturum süresi doldu" hatasının en yaygın sebebidir.
İlgili makaleler
Daha derine inmek için şu rehberlere bakabilirsiniz: adım adım BLS CAPTCHA çözme rehberi, BLS CAPTCHA'yı Node.js ile çözme ve BLS CAPTCHA'nın ızgara mantığı nasıl çalışır.
Sonraki adımlar
BLS CAPTCHA'ları devlet portallarında çözmeye bugün başlayın — CaptchaAI API anahtarınızı alın ve ilk oturumunuzu yüksek başarı oranıyla tamamlayın.