يعمل Chrome بدون رأس بدون نافذة مرئية، فهو سريع وخفيف الوزن ومثالي للخوادم. لكن أنظمة CAPTCHA تكتشف بشكل فعال وضع مقطوعة الرأس. فيما يلي كيفية اختيار الوضع الصحيح وحل اختبارات CAPTCHA في كليهما.
مقارنة سريعة
| عامل | كروم مقطوعة الرأس | ترأس كروم |
|---|---|---|
| السرعة | سريع (لا يوجد عرض إضافي) | أبطأ (يعرض واجهة المستخدم) |
| الذاكرة | ~100-200 ميجابايت | ~300-500 ميجابايت |
| نشر الخادم | أصلي | يتطلب العرض الظاهري |
| ** كشف CAPTCHA ** | عالية (إشارات قابلة للاكتشاف) | منخفض (يشبه المستخدم الحقيقي) |
| ** نقاط reCAPTCHA v3 ** | 0.1-0.3 (نطاق الروبوتات) | 0.7-0.9 (المدى البشري) |
| ** التصحيح ** | أصعب (بدون رؤية) | سهل (انظر الصفحة) |
| ** التحجيم ** | ممتاز (موارد منخفضة) | كثيفة الموارد |
كيف تكتشف اختبارات CAPTCHA Chrome مقطوعة الرأس
إشارات الكشف
// Tests that CAPTCHA systems run
// 1. WebDriver flag (biggest tell)
navigator.webdriver // true in headless, undefined in real browser
// 2. Chrome object completeness
window.chrome // Missing or incomplete in headless
// 3. Plugins
navigator.plugins.length // 0 in headless, 3+ in headed
// 4. WebGL renderer
// Headless: "SwiftShader Renderer"
// Headed: "ANGLE (NVIDIA GeForce GTX 1080...)"
// 5. User-Agent contains "Headless"
navigator.userAgent.includes("Headless") // Old Chrome versions
// 6. Screen dimensions
screen.width === 0 // Some headless configs
// 7. Notification permission
Notification.permission // "denied" in headless without override
نتائج اختبار الكشف
Signal Headed Headless New Headless (v112+)
─────────────────────────────────────────────────────────────
webdriver false true true
chrome object full partial improved
plugins 5 0 0
WebGL renderer ANGLE Swift Swift
screen.width 1920 800 800
UA "HeadlessChrome" no yes no (removed)
وضع "مقطوعة الرأس الجديد" في Chrome (الإصدار 112+)
قدم Chrome 112+ --headless=new، والذي يستخدم نفس قاعدة التعليمات البرمجية مثل Chrome الرئيسي:
from selenium import webdriver
# Old headless (more detectable)
options = webdriver.ChromeOptions()
options.add_argument("--headless") # Legacy mode
# New headless (less detectable)
options = webdriver.ChromeOptions()
options.add_argument("--headless=new") # Shares headed rendering
driver = webdriver.Chrome(options=options)
يعمل وضع مقطوعة الرأس الجديد على إصلاح بعض متجهات الكشف ولكنه لا يزال يكشف navigator.webdriver ولا يحتوي على مكونات إضافية.
مقطوعة الرأس + CaptchaAI (Python)
يعمل CaptchaAI بشكل جيد بنفس القدر في الوضع بدون رأس لأنه يحل جانب خادم اختبار CAPTCHA - ولا يؤثر وضع المتصفح على واجهة برمجة التطبيقات للحل:
import requests
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
API_KEY = "YOUR_API_KEY"
API_URL = "https://ocr.captchaai.com"
def create_headless_driver():
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
options.add_argument("--no-sandbox")
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--window-size=1920,1080")
options.add_argument(
"--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
)
return webdriver.Chrome(options=options)
def solve_captcha(site_url, sitekey):
resp = requests.post(f"{API_URL}/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": site_url,
"json": 1,
})
task_id = resp.json()["request"]
for _ in range(60):
time.sleep(5)
resp = requests.get(f"{API_URL}/res.php", params={
"key": API_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = resp.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Solve timeout")
# Full headless workflow
driver = create_headless_driver()
try:
driver.get("https://example.com/form")
time.sleep(2)
sitekey = driver.execute_script(
"return document.querySelector('[data-sitekey]')?.getAttribute('data-sitekey')"
)
if sitekey:
token = solve_captcha(driver.current_url, sitekey)
driver.execute_script(f"""
document.querySelector('#g-recaptcha-response').value = '{token}';
""")
driver.find_element(By.CSS_SELECTOR, "form").submit()
finally:
driver.quit()
موجه على الخوادم (العرض الظاهري)
قم بتشغيل Chrome ذو الرأس على خوادم بدون رأس باستخدام Xvfb:
لينكس مع Xvfb
# Install
sudo apt-get install xvfb
# Run with virtual display
xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" python script.py
بايثون مع PyVirtualDisplay
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1920, 1080))
display.start()
options = webdriver.ChromeOptions()
# No --headless flag = headed mode in virtual display
options.add_argument("--no-sandbox")
options.add_argument("--window-size=1920,1080")
driver = webdriver.Chrome(options=options)
# Now runs headed Chrome with real rendering, but no physical display
عامل ميناء مع Xvfb
FROM python:3.12-slim
RUN apt-get update && apt-get install -y \
xvfb \
chromium \
chromium-driver \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /app
WORKDIR /app
CMD ["xvfb-run", "--auto-servernum", "python", "main.py"]
تصحيحات مقطوعة الرأس + مخفية (Node.js)
const puppeteer = require("puppeteer-extra");
const StealthPlugin = require("puppeteer-extra-plugin-stealth");
puppeteer.use(StealthPlugin());
async function headlessStealth() {
const browser = await puppeteer.launch({
headless: "new",
args: [
"--no-sandbox",
"--window-size=1920,1080",
"--disable-blink-features=AutomationControlled",
],
});
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080 });
// Additional stealth patches
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, "webdriver", {
get: () => undefined,
});
Object.defineProperty(navigator, "plugins", {
get: () => [1, 2, 3, 4, 5],
});
});
await page.goto("https://example.com/form");
// Detect and solve CAPTCHA with CaptchaAI
const sitekey = await page.evaluate(() =>
document.querySelector("[data-sitekey]")?.getAttribute("data-sitekey")
);
if (sitekey) {
// Call CaptchaAI API (see other guides for full implementation)
const token = await solveCaptchaAI(page.url(), sitekey);
await page.evaluate((t) => {
document.querySelector("#g-recaptcha-response").value = t;
}, token);
}
await browser.close();
}
متى تستخدم كل وضع
استخدم مقطوعة الرأس عندما:
- يعمل على خوادم/CI بدون عرض
- التوسع إلى أكثر من 50 جلسة متزامنة
- الذاكرة محدودة
- يتعامل CaptchaAI مع جميع حلول اختبار CAPTCHA (وضع المتصفح غير ذي صلة)
استخدم العنوان عندما:
- تصحيح أخطاء اختبار CAPTCHA يتدفق بشكل مرئي
- نتائج reCAPTCHA v3 مهمة (أعلى الدرجات في الضربات الرأسية)
- كتل الموقع المستهدفة مقطوعة الرأس على وجه التحديد
- تعمل على الأجهزة مع شاشات العرض
استخدم العرض الرأسي + العرض الظاهري عندما:
- تحتاج إلى مقاومة الكشف على مستوى الرأس على الخوادم
- reCAPTCHA v3 يعطي درجات منخفضة في مقطوعة الرأس
- تسمح الميزانية بالذاكرة الإضافية (حوالي 2x لكل جلسة)
معايير الأداء
| السيناريو | مقطوعة الرأس | ترأس | ترأس + Xvfb |
|---|---|---|---|
| وقت بدء التشغيل | ~1 ثانية | ~ 2 ثانية | ~2.5 ثانية |
| الذاكرة لكل علامة تبويب | 100-200 ميجابايت | 300-500 ميجابايت | 300-500 ميجابايت |
| تحميل الصفحة (متوسط) | 1.5 ثانية | 2.5 ثانية | 2.5 ثانية |
| نقاط reCAPTCHA v3 | 0.1-0.3 | 0.7-0.9 | 0.5-0.8 |
| الحد الأقصى المتزامن (8 جيجابايت) | 30-40 | 10-15 | 10-15 |
| معدل حل اختبار CAPTCHA | نفس (واجهة برمجة التطبيقات) | نفس (واجهة برمجة التطبيقات) | نفس (واجهة برمجة التطبيقات) |
الرؤية الرئيسية: معدلات حل CaptchaAI متطابقة بغض النظر عن وضع المتصفح. يؤثر الوضع فقط على عدد مرات ظهور اختبارات CAPTCHA ونتائج reCAPTCHA v3.
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الإجراء |
|---|---|---|
| تم الكشف عن مقطوعة الرأس | علم navigator.webdriver |
استخدم البرنامج المساعد الخفي أو تصحيحات CDP |
| درجات v3 منخفضة في مقطوعة الرأس | إشارات التقديم مفقودة | قم بالتبديل إلى head + Xvfb |
| تحطم Xvfb | عرض تعارض في الأرقام | استخدم --auto-servernum |
| ذاكرة عالية في الرأس | عملية GPU | إضافة علامة --disable-gpu |
| لقطات فارغة في مقطوعة الرأس | منفذ عرض خاطئ | قم بتعيين --window-size=1920,1080 |
الأسئلة الشائعة
هل يهتم CaptchaAI إذا استخدمت رأسًا أو رأسًا؟
لا، CaptchaAI يحل جانب خادم اختبار CAPTCHA باستخدام مفتاح الموقع وعنوان URL. وضع المتصفح لا يؤثر على الحل.
هل وضع مقطوعة الرأس الجديد (--headless=new) آمن من الاكتشاف؟
إنه أفضل من القديم مقطوع الرأس ولكن لا يزال من الممكن اكتشافه. المواقع التي تتحقق من navigator.webdriver أو عدد المكونات الإضافية ستظل تضع علامة عليها.
هل يمكنني الحصول على درجات reCAPTCHA v3 أعلى من 0.7 بدون رأس؟
نادرا. يُنتج وضع مقطوعة الرأس إشارات تشبه الروبوتات. استخدم head + Xvfb للحصول على درجات أعلى، أو استخدم حل CaptchaAI v3 الذي يُرجع رموزًا عالية الدرجات.
هل يجب أن أستثمر في تصحيحات التخفي أم أستخدم CaptchaAI فقط؟
كلاهما. يقلل التخفي من تكرار اختبار CAPTCHA (حلول أقل = تكلفة أقل). يعالج CaptchaAI اختبارات CAPTCHA التي لا تزال تظهر.
أدلة ذات صلة
- بروتوكول Chrome DevTools + CaptchaAI: أتمتة اختبار CAPTCHA منخفض المستوى
- البدء السريع مع CaptchaAI: حلّ أول كابتشا في 5 دقائق
اختر وضع المتصفح المناسب لسير عمل اختبار CAPTCHA الخاص بك —احصل على مفتاح CaptchaAI الخاص بكوحل اختبارات CAPTCHA بأي تكوين.