Web Scraping بدون اكتشاف: غلاف توضيحي لمقال Clawbrowser

Web Scraping بدون اكتشاف: تقنيات عملية ما زالت تعمل

Clawbrowser Teamweb-scrapinganti-botfingerprintingproxyguide

يعمل scraper في التشغيل الأول. في التشغيل الثالث تظهر 403 أو response فارغ أو CAPTCHA loop. الكود لم يتغير. الموقع لم يتغير. الذي تغير أن نظام anti-bot بنى profile للـ session وبدأ الحظر.

TL;DR: معظم الحظر يأتي من أربع طبقات: network وbrowser identity وbehavior وsession state. ابدأ بـ anti-detect browser يدير fingerprints وproxy routing على مستوى engine، واترك الكود للاستطلاع والاستخراج وpagination والتوسع.

النموذج الكامل للطبقات الأربع في أتمتة browser بدون حظر: طبقات الدفاع الأربع.


استطلاع قبل كتابة الكود

كتابة scraper مباشرة تعني غالبا إعادة بنائه. عشر دقائق استطلاع تكفي لاختيار stack صحيح.

تحديد نظام anti-bot

افتح DevTools على الموقع الهدف وافحص response headers.

Header نظام anti-bot
cf-ray, server: cloudflare Cloudflare Bot Management
x-akamai-transformed Akamai Bot Manager
x-datadome DataDome
x-px-* headers PerimeterX (now HUMAN)
لا يوجد أي مما سبق غالبا لا يوجد anti-bot تجاري، أو يوجد حل مخصص

الموقع غير المحمي يكفيه curl_cffi؛ موقع Cloudflare يحتاج browser حقيقي مع managed fingerprints.

تحقق من وجود API

قبل بناء scraper يعتمد على browser، افتح Network وفلتر XHR/Fetch. كثير من المواقع تحمل البيانات من JSON endpoint.

# If the site loads product data from an API endpoint
from curl_cffi import requests

response = requests.get(
    "https://target-site.com/api/v2/products?category=electronics&page=1",

الـ endpoint أسرع، لكن المواقع المحمية قد تتوقع API call من browser session حقيقية. الأفضل تحميل الصفحة في browser واعتراض response.

تقييم نموذج rendering

عطل JavaScript. إذا بقي المحتوى ظاهرا فـ HTTP يكفي. إذا ظهرت صفحة فارغة فأنت تحتاج browser engine.

هل يظهر المحتوى بدون JS؟ الأداة
نعم، يظهر كله curl_cffi or requests with TLS impersonation
جزئيا curl_cffi for static parts, browser for dynamic
لا، صفحة فارغة Full browser (Clawbrowser + Playwright/Puppeteer)

اختيار scraping stack

الأداة تعتمد على مستوى الحماية وطريقة rendering. browser كامل يهدر الموارد إذا كان HTTP يكفي، وHTTP وحده يفشل مع SPA محمية.

شجرة القرار

بدون anti-bot + HTML من السيرفر: استخدم curl_cffi مع TLS impersonation.

from curl_cffi import requests

response = requests.get(
    "https://unprotected-site.com/products",
    impersonate="chrome136"

بدون anti-bot + JavaScript-rendered: استخدم headless browser عادي.

anti-bot + HTML من السيرفر: استخدم curl_cffi مع residential proxy.

anti-bot + JavaScript-rendered: استخدم Clawbrowser مع managed fingerprints وresidential proxy.

from playwright.async_api import async_playwright

async def scrape_protected_site():
    async with async_playwright() as p:
        # Clawbrowser handles fingerprints, TLS and proxy at the engine level

Clawbrowser هو anti-detect browser محلي ومجاني ومبني على Chromium، مع managed fingerprints وproxy routing وnative CDP وMCP server مدمج.


أنماط استخراج البيانات

بعد تجاوز طبقة anti-bot يبدأ العمل الحقيقي: استخراج بيانات منظمة بثبات.

Pagination

غالبا تظهر pagination بثلاثة أشكال.

pagination عبر URL

async def scrape_paginated(page, base_url, max_pages=50):
    all_items = []
    for page_num in range(1, max_pages + 1):
        await page.goto(f"{base_url}?page={page_num}")
        await human_delay(2000, 4000)

Infinite scroll (تحميل المحتوى عند scroll):

async def scrape_infinite_scroll(page, max_scrolls=30):
    all_items = []
    previous_count = 0

    for _ in range(max_scrolls):

"Load more" button:

async def scrape_load_more(page):
    while True:
        load_more = await page.query_selector('[data-testid="load-more"]')
        if not load_more:
            break

التعامل مع المحتوى الديناميكي

بعض البيانات تظهر فقط بعد click أو accordion أو hover.

async def extract_product_details(page, product_url):
    await page.goto(product_url)
    await human_delay(1000, 2000)

    # Click "Specifications" tab to reveal hidden data

الاستخراج من shadow DOM

المكونات داخل shadow DOM تحتاج القراءة عبر shadow root.

# Pierce through shadow DOM to extract data
data = await page.evaluate("""
    () => {
        const host = document.querySelector('product-card');
        const shadow = host.shadowRoot;

إدارة sessions للـ scraping

scraper يزور صفحات أكثر بكثير من المستخدم الحقيقي. لذلك يجب أن تبدو session متسقة.

Session warming

لا تبدأ بالصفحة الهدف: افتح home ثم category ثم cookie banner وبعدها scrape. طبقة behavior مشروحة في أتمتة browser بدون حظر: طبقات الدفاع الأربع.

async def warm_session(page, site_url):
    await page.goto(site_url)
    await human_delay(2000, 4000)

    # Accept cookies if banner appears

تدوير profiles عند التوسع

وزع الحجم على عدة Clawbrowser profiles، ولكل profile fingerprint وcookies وstorage وproxy خاص.

import asyncio
from playwright.async_api import async_playwright

async def scrape_batch(profile_name, urls):
    async with async_playwright() as p:
الحجم النهج المقترح
< 100 pages/day Single profile, residential proxy, 3-5s delays
100-1,000 pages/day 3-5 rotating profiles, sticky residential sessions
1,000-10,000 pages/day 10+ profiles, proxy pool, session warming
10,000+ pages/day Distributed setup, multiple Clawbrowser instances, backoff logic

تشخيص الحظر

العرض غالبا يشير إلى الطبقة التي فشلت.

العرض السبب المحتمل الإصلاح
حظر عند أول request IP reputation أو browser fingerprint استخدم residential proxy وanti-detect browser
يعمل 5-10 صفحات ثم يحظر behavior detection أو session limits أبطئ، أضف delays، وسخن sessions
CAPTCHA on every page Fingerprint leak Browser is leaking automation signals, switch to managed fingerprints
403 after proxy rotation Browser fingerprint unchanged New IP but same broken fingerprint, fix the browser layer
يعمل محليا ويفشل في production Datacenter IP أضف residential proxy في production
صفحة فارغة / spinner لا ينتهي JavaScript challenge failed Browser can't pass Cloudflare/Akamai JS check, needs real engine
البيانات مختلفة عن الزيارة اليدوية Geo or locale mismatch Proxy location doesn't match fingerprint timezone/language

سكريبت تشخيص سريع

import asyncio
from playwright.async_api import async_playwright

async def diagnose_blocking(target_url):
    async with async_playwright() as p:

Scraping لمواقع محمية بـ Cloudflare

Cloudflare يجمع TLS وJavaScript وbehavior وIP reputation في وقت واحد.

ماذا تفحص Cloudflare

  1. TLS fingerprint (JA3/JA4): إذا كان ClientHello غير متطابق يظهر challenge قبل HTML.
  2. JavaScript execution: Turnstile يحتاج بيئة rendering حقيقية.
  3. IP reputation: IP reputation تقيم عبر ملايين المواقع.
  4. Request patterns: request patterns المتكررة من نفس session يتم وسمها.

Workflow

كل الطبقات يجب أن تكون نظيفة معا: anti-detect browser لـ TLS/JS، وresidential proxy للـ IP، وtiming في الكود.

async def scrape_cloudflare_site(target_url, profile="cf-scraper"):
    async with async_playwright() as p:
        browser = await p.chromium.connect_over_cdp(
            f"http://127.0.0.1:9222?profile={profile}"
        )

تفصيل Cloudflare في لماذا تحظر Cloudflare سكربتات Playwright.


Scraping مع وكلاء AI

MCP server في Clawbrowser يسمح لوكيل AI بالتحكم في browser sessions حقيقية عبر CDP مع نفس fingerprints وproxy routing.

دليل التكامل الكامل في CDP Browser لوكلاء AI: دليل للمطورين.


FAQ

لماذا يعمل scraper محليا ويفشل في production؟

الجهاز المحلي يستخدم غالبا residential IP، بينما production يستخدم datacenter IP. أضف residential proxy وتأكد من managed fingerprints.

هل أستخدم HTTP client أم browser؟

HTTP يكفي مع HTML من السيرفر وبدون anti-bot. مع JavaScript rendering أو challenges استخدم browser كامل.

كيف أعرف أن الموقع يستخدم Cloudflare؟

ابحث عن cf-ray أو server: cloudflare في response headers داخل DevTools.

هل يمكن scraping بدون proxies؟

نعم في المواقع غير المحمية. خلف Cloudflare أو Akamai وعلى نطاق كبير ستحتاج غالبا residential proxies.


ابدأ Web Scraping بدون اكتشاف

scraping الموثوق يبدأ باستطلاع الموقع، اختيار الأداة المناسبة، وبنية browser نظيفة.

Install Clawbrowser لإدارة browser identity وnetwork layers: انسخ prompt التثبيت من clawbrowser.ai والصقه في وكيل AI. يستغرق setup أقل من دقيقتين.

نموذج detection في أتمتة browser بدون حظر: طبقات الدفاع الأربع. تفاصيل fingerprinting في Browser Fingerprinting: أكثر من 20 إشارة تستخدمها أنظمة anti-bot.

Continue exploring

Ask AI how Clawbrowser helps

تابع القراءة

عرض كل المقالات →