Yasal veritabanları, mahkeme dosyalama sistemleri ve içtihat veri havuzları, verilerini CAPTCHA'larla korur. Hukuk firmaları, hukuk teknolojisi şirketleri ve uyumluluk ekiplerinin içtihat hukukunu araştırmak, başvuruları izlemek ve düzenleyici verileri toplamak için otomatik erişime ihtiyacı var. CaptchaAI bu portallardaki CAPTCHA zorluklarını ele alıyor.
Yasal Veri Kaynakları ve CAPTCHA'lar
| Kaynak | CAPTCHA Türü | Veri | Kullanıcılar |
|---|---|---|---|
| PACER | reCAPTCHA v2 | Federal mahkeme kayıtları | Dava ekipleri |
| Eyalet mahkeme sistemleri | Resim CAPTCHA / reCAPTCHA | Eyalet vaka kayıtları | Avukatlar |
| SEC EDGAR | reCAPTCHA v2 | Kurumsal başvurular | Uyumluluk |
| Patent veritabanları | reCAPTCHA v2 | Patent kayıtları | Fikri mülkiyet araştırmacıları |
| Düzenleyici portallar | Resim CAPTCHA'sı | Kurallar, rehberlik | Uyumluluk |
| Yasal alıntı veritabanları | reCAPTCHA v2 | Vaka alıntıları | Hukuk teknolojisi |
| Barolar Birliği rehberleri | reCAPTCHA v2 | Avukat kayıtları | Durum tespiti |
İçtihat Arama Motoru
import requests
import time
import re
import base64
from bs4 import BeautifulSoup
import csv
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
def solve_recaptcha(sitekey, pageurl):
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY, "method": "userrecaptcha",
"googlekey": sitekey, "pageurl": pageurl, "json": 1,
})
task_id = resp.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = result.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Timeout")
def solve_image_captcha(image_bytes):
img_b64 = base64.b64encode(image_bytes).decode()
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY, "method": "base64",
"body": img_b64, "json": 1,
})
task_id = resp.json()["request"]
for _ in range(20):
time.sleep(3)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = result.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Timeout")
class LegalResearchScraper:
def __init__(self, proxy=None):
self.session = requests.Session()
if proxy:
self.session.proxies = {"http": proxy, "https": proxy}
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
})
def search_cases(self, search_url, query, sitekey=None, max_pages=5):
"""Search case law database."""
all_cases = []
for page in range(max_pages):
url = f"{search_url}?q={query}&page={page + 1}"
resp = self.session.get(url, timeout=30)
if self._has_captcha(resp.text):
if sitekey:
token = solve_recaptcha(sitekey, url)
resp = self.session.post(url, data={
"q": query,
"g-recaptcha-response": token,
})
else:
resp = self._solve_image_and_retry(resp.text, url, query)
cases = self._parse_cases(resp.text)
if not cases:
break
all_cases.extend(cases)
print(f"Page {page + 1}: {len(cases)} cases")
time.sleep(5)
return all_cases
def get_case_details(self, case_url):
"""Fetch full case details."""
resp = self.session.get(case_url, timeout=30)
if self._has_captcha(resp.text):
sitekey = self._extract_sitekey(resp.text)
if sitekey:
token = solve_recaptcha(sitekey, case_url)
resp = self.session.post(case_url, data={
"g-recaptcha-response": token,
})
soup = BeautifulSoup(resp.text, "html.parser")
return {
"title": self._text(soup, "h1, .case-title"),
"citation": self._text(soup, ".citation, .case-cite"),
"court": self._text(soup, ".court, .jurisdiction"),
"date": self._text(soup, ".decision-date, .date-decided"),
"judge": self._text(soup, ".judge, .authored-by"),
"summary": self._text(soup, ".summary, .headnote"),
"url": case_url,
}
def monitor_docket(self, docket_url, case_number, sitekey=None):
"""Monitor a specific case docket for new filings."""
resp = self.session.get(docket_url, timeout=30)
data = {"case_number": case_number}
if sitekey and self._has_captcha(resp.text):
token = solve_recaptcha(sitekey, docket_url)
data["g-recaptcha-response"] = token
resp = self.session.post(docket_url, data=data)
return self._parse_docket(resp.text)
def export_results(self, cases, filename):
"""Export case results to CSV."""
if not cases:
return
with open(filename, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=cases[0].keys())
writer.writeheader()
writer.writerows(cases)
def _has_captcha(self, html):
return any(tag in html.lower() for tag in [
'data-sitekey', 'g-recaptcha', 'captcha',
])
def _extract_sitekey(self, html):
match = re.search(r'data-sitekey="([^"]+)"', html)
return match.group(1) if match else None
def _solve_image_and_retry(self, html, url, query):
match = re.search(r'src="(/captcha[^"]+)"', html)
if match:
img_url = url.split("?")[0].rstrip("/") + match.group(1)
img = self.session.get(img_url)
answer = solve_image_captcha(img.content)
return self.session.post(url, data={
"q": query,
"captcha": answer,
})
return self.session.get(url)
def _parse_cases(self, html):
soup = BeautifulSoup(html, "html.parser")
cases = []
for item in soup.select(".case-result, .search-result, tr.result"):
title_el = item.select_one("a, .case-name")
if title_el:
cases.append({
"title": title_el.get_text(strip=True),
"url": title_el.get("href", ""),
"citation": self._text(item, ".citation, .cite"),
"date": self._text(item, ".date"),
"court": self._text(item, ".court"),
})
return cases
def _parse_docket(self, html):
soup = BeautifulSoup(html, "html.parser")
entries = []
for row in soup.select(".docket-entry, tr.filing"):
entries.append({
"date": self._text(row, ".date, td:first-child"),
"entry": self._text(row, ".description, td:nth-child(2)"),
"filed_by": self._text(row, ".filer, td:nth-child(3)"),
})
return entries
def _text(self, el, selector):
found = el.select_one(selector)
return found.get_text(strip=True) if found else ""
# Usage
scraper = LegalResearchScraper(
proxy="http://user:pass@residential.proxy.com:5000"
)
# Search case law
cases = scraper.search_cases(
search_url="https://caselaw.example.com/search",
query="data privacy GDPR",
max_pages=5,
)
# Get details for relevant cases
for case in cases[:10]:
if case["url"]:
details = scraper.get_case_details(case["url"])
print(f"{details['citation']}: {details['title']}")
time.sleep(3)
# Export results
scraper.export_results(cases, "gdpr_cases.csv")
Düzenleyici İzleme
class RegulatoryMonitor:
def __init__(self, proxy=None):
self.scraper = LegalResearchScraper(proxy=proxy)
self.seen_entries = set()
def check_new_filings(self, feeds):
"""Check regulatory portals for new filings."""
new_filings = []
for feed in feeds:
try:
cases = self.scraper.search_cases(
feed["url"], feed["query"],
sitekey=feed.get("sitekey"),
max_pages=2,
)
for case in cases:
key = case.get("citation") or case.get("title")
if key and key not in self.seen_entries:
self.seen_entries.add(key)
case["source"] = feed["name"]
new_filings.append(case)
except Exception as e:
print(f"Error checking {feed['name']}: {e}")
time.sleep(5)
return new_filings
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
| Resim CAPTCHA tekrar tekrar başarısız oluyor | Bozuk metin | Raporla ve yeniden dene – yeni resim |
| PACER erişimi engelliyor | Oran sınırı aşıldı | 30 dakika bekleyin, istek sıklığını azaltın |
| Vaka ayrıntıları eksik | Ödeme duvarının arkasında | Gerektiğinde sayfa başına ücret ödeyin |
| Arama sonuç vermiyor | Bunun yerine CAPTCHA sayfası geri döndü | Ayrıştırmadan önce CAPTCHA'yı kontrol edin |
| Dosya takibi başvuruları kaçırıyor | Kontrol aralığı çok uzun | Kontrol sıklığını artırın |
SSS
Mahkeme kayıtlarına otomatik erişim yasal mıdır?
Kamu mahkemesi kayıtlarına genel olarak erişilebilir. PACER, erişim yöntemine bakılmaksızın sayfa başına ücret alır. Her zaman sistem hız sınırlarına ve kullanım şartlarına uyun.
PACER ücretlerini nasıl halledeceğim?
PACER sayfa başına ücret alır. Toplu veri toplamayı planlarken ücretler için bütçe ayırın. Zaten indirilmiş belgeler için RECAP'i (ücretsiz arşiv) düşünün.
Hangi yasal veritabanları en fazla CAPTCHA'ya sahip?
Eyalet mahkemesi sistemleri en kötüsüdür; çoğu eski resim CAPTCHA'larını kullanır. Federal mahkemeler (PACER) reCAPTCHA v2 kullanır. Patent veritabanları da sıklıkla CAPTCHA'ları tetikler.
İlgili Kılavuzlar
Yasal araştırmayı kolaylaştırın —”CaptchaAI anahtarınızı alınve içtihat ve dosyalama aramalarını otomatikleştirin.