Tier 1+2 anti-detection to stop Booking.com throttling page 2: - Run Chromium headful under xvfb (Dockerfile) — headless leaks SwiftShader WebGL, empty plugins, missing chrome.runtime - playwright-stealth patches navigator.webdriver/plugins/WebGL vendor - Single coherent Chrome-121 identity: UA + matching sec-ch-ua client hints + platform (dropped the Firefox/Safari UA strings — a mismatched UA on a Chromium engine is a stronger tell than no rotation) - Homepage warm-up so search requests carry real session cookies + cookie consent dismiss - Paginate by clicking next (offset= deep-link was the page-2 tell), offset URL kept as fallback - Viewport jitter, mouse movement, longer scroll, selector retry on lazy load Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
26 lines
683 B
Docker
26 lines
683 B
Docker
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
libpq-dev \
|
|
postgresql-client \
|
|
curl \
|
|
xvfb \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
# Playwright + Chromium for Booking.com scraper
|
|
RUN playwright install chromium --with-deps
|
|
|
|
COPY . .
|
|
|
|
EXPOSE 8000
|
|
|
|
# Run under a virtual X display so Chromium launches headful (headful fingerprints
|
|
# far cleaner than headless — real GPU strings, plugins, chrome.runtime).
|
|
CMD ["xvfb-run", "-a", "--server-args=-screen 0 1920x1080x24", \
|
|
"uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|