feat(X13 Tier-1): כיול אחזור נט המשפט — Camoufox python, אומת על עת"מ 46111-12-22 (34 עמ') #114

Merged
chaim merged 1 commits from worktree-court-fetch-tier1 into main 2026-06-07 19:33:01 +00:00
Owner

הישג

הורדה אוטונומית מלאה, נטו קוד-פתוח, של פס"ד מנט המשפט אומתה end-to-end — פסק-הדין בן 34 העמודים של עת"מ 46111-12-22 (יכין-אפק בע"מ נ' הוועדה המחוזית לתכנון ולבניה מחוז מרכז, כב' השופטת יעל טויסטר ישראלי) הורד והורכב ל-PDF (5.95MB), ללא כרטיס-חכם וללא פתרון-CAPTCHA.

ממצאי-הכיול (משנים את הספ)

  1. החיפוש והניווט-לתיק — ללא reCAPTCHA כלל. המסלול: דף-בית → btnExternalSearchCases ("תיקים לפי מס' תיק מקור") → מילוי שדות ה-header-locator הנכונים (BamaCaseNumberTextBoxH=מס'-תיק, BamaMonthYearTextBoxHT="MM-YY") → CaseDetails.aspx → לשונית "פסקי דין"DecisionList.aspx → צופה NGCSViewerPage.aspx.
  2. reCAPTCHA קיים רק בצופה ורק על שמירה/הדפסה מפורשת — לא על הצגת המסמך. הצופה (turn.js) מגיש את העמודים כ-PNG דרך PageMethod GetImages (4 עמ'/batch) ללא CAPTCHA.
  3. המפתח לעקיפת ה-WAF: משיכת ה-batches ב-fetch עם הכותרת X-Requested-With: XMLHttpRequest (בלעדיה ה-F5 מחזיר "זוהתה פעילות בלתי מורשת"). לכידת ה-documentNumber הפנימי מהקריאה הראשונה של הצופה → לולאת batches → decode base64 PNG → הרכבת PDF (Pillow).
  4. דפדפן: Camoufox דרך חבילת-הפייתון (camoufox.async_api, in-process) — לא שרת-Node REST. על שרת ללא-מסך נדרש Xvfb (אחרת Firefox קורס).

שינויים

  • camofox_client.py — שכתוב מלא למסלול המכויל (Camoufox python, GetImages image-API, הרכבת PDF). מחליף את ה-stub שדיבר ל-camofox-browser REST.
  • legal-court-fetch-service.config.cjs — נוסף app legal-court-fetch-xvfb (Xvfb :99) + DISPLAY=:99 בשירות; max_memory_restart 1.5G.
  • pyproject.toml — extra [court-fetch] = camoufox + faster-whisper (host-only; הקונטיינר לא מריץ דפדפן). Pillow כבר בבסיס.
  • X13-court-fetch.md + SCRIPTS.md — עודכנו לממצאים + תיעוד האימות.

הערות

  • reCAPTCHA audio (Whisper) נשמר כ-fallback למסלול-השמירה-המפורש בלבד; המסלול הראשי (image-API) אינו זקוק לו — פישוט משמעותי מול התכנון המקורי.
  • בלוקר-סביבה שהתגלה ותועד: דליפת-זיכרון של task-master-mcp — תהליכי-יתום (ppid=1) שמתנפחים ל~3GB כל אחד ומרווים את השרת (1.6Gi פנוי, swap מוצה) תוך דקות, מסכנים OOM ליד Postgres. נוקו ידנית כדי לאפשר את הכיול; דורש טיפול נפרד (reaper/cron או תיקון מקור-ה-spawn).
  • שאר ה-follow-ups מ-PR #110 (Tier-0 live, הסוד, טריגר-digest) עדיין פתוחים.

אימות

  • verdict_46111-12-22.pdf — 34 עמ', עמוד 1 = כותרת הפס"ד, עמוד 34 = חתימת השופטת. אומת ויזואלית.
  • Camoufox פועל על aarch64 תחת Xvfb; client compiles + imports.

🤖 Generated with Claude Code

## הישג **הורדה אוטונומית מלאה, נטו קוד-פתוח, של פס"ד מנט המשפט אומתה end-to-end** — פסק-הדין בן 34 העמודים של **עת"מ 46111-12-22 (יכין-אפק בע"מ נ' הוועדה המחוזית לתכנון ולבניה מחוז מרכז, כב' השופטת יעל טויסטר ישראלי)** הורד והורכב ל-PDF (5.95MB), **ללא כרטיס-חכם וללא פתרון-CAPTCHA**. ## ממצאי-הכיול (משנים את הספ) 1. **החיפוש והניווט-לתיק — ללא reCAPTCHA כלל.** המסלול: דף-בית → `btnExternalSearchCases` ("תיקים לפי מס' תיק מקור") → מילוי שדות ה-header-locator הנכונים (`BamaCaseNumberTextBoxH`=מס'-תיק, `BamaMonthYearTextBoxHT`="MM-YY") → `CaseDetails.aspx` → לשונית **"פסקי דין"** → `DecisionList.aspx` → צופה `NGCSViewerPage.aspx`. 2. **reCAPTCHA קיים רק בצופה ורק על שמירה/הדפסה מפורשת — לא על הצגת המסמך.** הצופה (turn.js) מגיש את העמודים כ-PNG דרך PageMethod **`GetImages`** (4 עמ'/batch) **ללא CAPTCHA**. 3. **המפתח לעקיפת ה-WAF:** משיכת ה-batches ב-`fetch` עם הכותרת **`X-Requested-With: XMLHttpRequest`** (בלעדיה ה-F5 מחזיר "זוהתה פעילות בלתי מורשת"). לכידת ה-`documentNumber` הפנימי מהקריאה הראשונה של הצופה → לולאת batches → decode base64 PNG → הרכבת PDF (Pillow). 4. **דפדפן:** Camoufox דרך **חבילת-הפייתון** (`camoufox.async_api`, in-process) — לא שרת-Node REST. על שרת ללא-מסך נדרש **Xvfb** (אחרת Firefox קורס). ## שינויים - **`camofox_client.py`** — שכתוב מלא למסלול המכויל (Camoufox python, GetImages image-API, הרכבת PDF). מחליף את ה-stub שדיבר ל-camofox-browser REST. - **`legal-court-fetch-service.config.cjs`** — נוסף app `legal-court-fetch-xvfb` (Xvfb :99) + `DISPLAY=:99` בשירות; `max_memory_restart` 1.5G. - **`pyproject.toml`** — extra `[court-fetch]` = `camoufox` + `faster-whisper` (host-only; הקונטיינר לא מריץ דפדפן). Pillow כבר בבסיס. - **`X13-court-fetch.md` + `SCRIPTS.md`** — עודכנו לממצאים + תיעוד האימות. ## הערות - **reCAPTCHA audio (Whisper)** נשמר כ-fallback למסלול-השמירה-המפורש בלבד; המסלול הראשי (image-API) אינו זקוק לו — פישוט משמעותי מול התכנון המקורי. - **בלוקר-סביבה שהתגלה ותועד:** דליפת-זיכרון של `task-master-mcp` — תהליכי-יתום (`ppid=1`) שמתנפחים ל~3GB כל אחד ומרווים את השרת (1.6Gi פנוי, swap מוצה) תוך דקות, מסכנים OOM ליד Postgres. נוקו ידנית כדי לאפשר את הכיול; **דורש טיפול נפרד** (reaper/cron או תיקון מקור-ה-spawn). - שאר ה-follow-ups מ-PR #110 (Tier-0 live, הסוד, טריגר-digest) עדיין פתוחים. ## אימות - ✅ `verdict_46111-12-22.pdf` — 34 עמ', עמוד 1 = כותרת הפס"ד, עמוד 34 = חתימת השופטת. אומת ויזואלית. - ✅ Camoufox פועל על aarch64 תחת Xvfb; client compiles + imports. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-07 19:32:55 +00:00
אומת end-to-end: פס"ד 34 עמ' של עת"מ 46111-12-22 הורד אוטונומית מלא, נטו
קוד-פתוח, ללא כרטיס-חכם וללא פתרון-CAPTCHA.

ממצאי-כיול עיקריים:
- החיפוש+הניווט-לתיק ללא reCAPTCHA כלל. reCAPTCHA קיים רק בצופה ורק על
  שמירה/הדפסה מפורשת — לא על הצגת המסמך.
- הצופה מגיש עמודים כ-PNG דרך PageMethod GetImages (4/batch); משיכה ב-fetch
  עם הכותרת X-Requested-With: XMLHttpRequest (חובה — F5 WAF חוסם בלעדיה) →
  הרכבת PDF (Pillow).

שינויים:
- camofox_client.py: שכתוב מלא — Camoufox דרך חבילת-הפייתון (in-process,
  לא שרת-Node REST). מסלול מכויל: home→btnExternalSearchCases→Bama fields→
  CaseDetails→פסקי דין→DecisionList→NGCSViewerPage→GetImages→PDF.
- pm2 config: app Xvfb :99 + DISPLAY=:99 (Camoufox קורס headless בלי צג וירטואלי).
- pyproject: extra [court-fetch] = camoufox + faster-whisper (host-only; הקונטיינר
  לא מריץ דפדפן). Pillow כבר בבסיס.
- X13 spec + SCRIPTS.md: עודכנו לממצאים (image-API, Xvfb, אימות).

reCAPTCHA audio (Whisper) נשמר כ-fallback למסלול-השמירה-המפורש בלבד; המסלול
הראשי אינו זקוק לו. Invariants: מקיים INV-CF1/CF4/CF6 (ללא שינוי).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 61b9d72bcf into main 2026-06-07 19:33:01 +00:00
chaim deleted branch worktree-court-fetch-tier1 2026-06-07 19:33:01 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#114