تحليل عميق لأكاماي بوت مانجر v2: البصمة التقنية وكيفية التعامل معها
تنبيه قانوني: المعلومات الواردة في هذا المقال مخصصة للبحث الأمني المرخص ومراقبة الأنظمة المصرح بها فقط. استخدام هذه التقنيات لانتهاك شروط خدمة أي موقع قد يعرضك لمساءلة قانونية بموجب قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA) في الولايات المتحدة أو اللائحة العامة لحماية البيانات (GDPR) في الاتحاد الأوروبي. احصل دائماً على إذن صريح قبل اختبار أي بنية تحتية.
إذا كنت مهندس scraping محترف أو باحث أمني، فمن المرجح أنك واجهت أكاماي بوت مانجر v2 — أحد أكثر أنظمة مكافحة البوتات تطوراً في السوق. هذا التحليل العميق يفكك طبقات الكشف التي يستخدمها النظام في 2026، من _abck cookie إلى sensor_data وبصمات TLS الحديثة، ثم يقدم نهجاً عملياً لاجتياز هذه الفحوصات بشكل نظيف باستخدام بروكسي سكني حقيقي. سواء كنت تعمل على تتبع نتائج محركات البحث أو مراقبة أسعار منتجات بتصريح من العميل، فإن فهم هذه الطبقات أمر حتمي.
طبقة الإشارات: كيف يبني أكاماي صورة الثقة
أكاماي بوت مانجر v2 لا يعتمد على إشارة واحدة للحكم على الزائر. بدلاً من ذلك، يجمع بيانات سلوكية وتقنية وشبكية في درجة ثقة مستمرة من جهة الخادم (continuous server-side trust score). هذه الدراسة تتطور مع كل طلب وتُحدَّث بناءً على تفاعل المستخدم عبر الصفحة. النظام يصدر ثلاث إشارات رئيسية:
ملف تعريف الارتباط _abck
ملف الارتباط _abck هو العمود الفقري لنظام أكاماي. يُوضع في المتصفح عند أول زيارة ويُتحقق منه مع كل طلب لاحق. القيمة تبدأ بحالة "معلق" (pending) وتتطور إلى "مقبول" (valid) فقط بعد أن يُرسل المتصفح حمولة sensor_data صحيحة وكاملة. إذا كانت قيمة _abck تحتوي على ~-1~-1~-1، فهذا يعني أن النظام صنف الزائر كمحتمل أن يكون بوت. إذا احتوت على ~0~ أو ~1~ في المواضع المناسبة، فهذا يعني أن الزائر اجتاز الفحص.
النقطة الحرجة: _abck لا يُتحقق منه مرة واحدة فقط. أكاماي يعيد التحقق بشكل مستمر — إذا تغيرت بصمة المتصفح بين الطلبات (مثل تغير User-Agent أو دقة الشاشة)، يُبطَل _abck فوراً ويُطلب تجديده.
ملف تعريف الارتباط ak_bmsc
ملف ak_bmsc هو ملف تعريف ارتباط مؤقت يُستخدم لتتبع الجلسة قبل اكتمال تحقق _abck. يعمل كجسر بين الطلب الأول واكتمال تشغيل sensor.js. مدة صلاحيته عادة قصيرة (حوالي 15 دقيقة) ويُستبدل بـ _abck بمجرد اكتمال الفحص السلوكي.
محرك القياس sensor.js / bmak
أكاماي يحقن نصاً برمجياً مشفراً يُعرف باسم sensor.js (أو bmak في الكود الداخلي) في كل صفحة محمية. هذا النص هو المسؤول عن جمع كل الإشارات السلوكية والتقنية وتجميعها في حمولة مشفرة تُرسل إلى خادم أكامي عبر طلب POST إلى مسار مثل /_bm/... أو عبر تحديث قيمة _abck مباشرة.
النص البرمجي مضبوط بشدة ويُحدَّث بانتظام — غالباً كل 2-4 أسابيع — مما يعني أن أي مكتبة تحاول محاكاته ثابتة ستفشل بسرعة. هذا هو السبب الأساسي الذي يجعل النهج الديناميكي (تشغيل متصفح حقيقي) أفضل بكثير من محاولة عكس هندسة sensor.js يدوياً.
تجميع sensor_data: لماذا يُبطل حقل واحد كل شيء
حمولة sensor_data هي سلسلة مشفرة (عادة base64 أو تشفير مخصص) تحتوي على عشرات الحقول التي تصف حالة المتصفح وسلوك المستخدم. فهم بنيتها أساسي لأي مهندس يتعامل مع اكتشاف بوتات أكاماي 2026.
إشارات الفأرة والتمرير واللمس
أكاماي يجمع أحداث الفأرة بدقة عالية: الإحداثيات X/Y، الطوابع الزمنية (timestamps) بدقة ميلي ثانية، السرعة بين النقرات، وانحناءات الحركة. النظام يبحث عن أنماط "بشرية" — مثل التباطؤ الطبيعي عند الاقتراب من رابط، والحركات العشوائية الصغيرة، وفترات التوقف الواقعية.
المثير للانتباه أن أكاماي يكتشف البيانات المثالية جداً بنفس فعالية اكتشاف الغياب التام. إذا كانت حركات الفأرة خطية تماماً أو تأتي بفواصل زمنية منتظمة بدقة، فهذا إشارة قوية على أن السلوك مولّد آلياً.
خصائص الشاشة ومعالج الرسومات (GPU)
يُجمع sensor.js معلومات مثل:
- دقة الشاشة الفعلية (
window.screen.widthوwindow.screen.height) - عمق الألوان (
window.screen.colorDepth) - نسبة وحدات البكسل للجهاز (
window.devicePixelRatio) - سلسلة بائع WebGL ومعالج الرسومات (من
WEBGL_debug_renderer_info) - عدد وحدات المعالجة المنطقية في المعالج (
navigator.hardwareConcurrency) - الذاكرة المتاحة للجهاز (
navigator.deviceMemory)
إذا ادعى User-Agent أن الزائر يستخدم Chrome 131 على Windows 11 بينما تُظهر خصائص GPU معالج رسومات خاص بـ macOS، فإن sensor_data يُبطل فوراً ويتحول _abck إلى حالة الفشل. هذا التطابق بين كل الحقول هو ما يجعل المحاكاة الجزئية عديمة الفائدة.
بيانات التوقيت
أكاماي يقيس:
- الوقت بين تحميل الصفحة وتفاعل المستخدم الأول
- الوقت بين أحداث الفأرة المتتالية
performance.now()ودقته (بعض المتصفحات تقيد دقة هذا المؤقت لأسباب أمنية)Date.now()مقارنة بوقت الخادم- اختلافات المنطقة الزمنية بين ما يدّعيه المتصفح و عنوان IP
تخيل أن عنوان IP يقع في فرانكفورت (توقيت CET) بينما Intl.DateTimeFormat().resolvedOptions().timeZone يُرجع "America/New_York". هذا التناقض يُسجل كإشارة سلبية قوية ويُخفض درجة الثقة بشكل كبير.
القاعدة الذهبية: لا يمكنك محاكاة نصف البصمة. أكاماي يتحقق من الاتساق عبر 50+ حقلاً، وحقل واحد غير متطابق يُسقط درجة الثقة بأكملها.
إشارات البروتوكول في 2026: ما بعد الكم وبصمات JA4
في 2026، لا يكتفي أكاماي بالفحص السلوكي. النظام الآن يفحص بصمة TLS وبصمة HTTP/2 ويتحقق من تطابقهما مع User-Agent المُعلن. هذه طبقة كشف جديدة نسبياً وهي ما يُميّز v2 عن الإصدارات السابقة.
مشاركة مفتاح X25519MLKEM768 ما بعد الكم
بدءاً من Chrome 131، أصبحت مشاركة مفتاح X25519MLKEM768 (خوارزمية التشفير ما بعد الكم بـ 768-bit) مفعلة بشكل افتراضي في ClientHello. هذا يعني أن بصمة TLS لمتصفح Chrome حقيقي في 2026 تحتوي على هذه المجموعة في قائمة key_share — وحتى مواصفة TLS 1.3 تفرض ترتيباً معيناً.
إذا كنت تستخدم مكتبة HTTP مثل requests أو httpx في Python، فإن بصمة TLS الناتجة لا تحتوي على X25519MLKEM768 لأن هذه المكتبات تستخدم OpenSSL أو BoringSSL بترتيب cipher suites مختلف. أكاماي يرى هذا ويُسجل تناقضاً فوراً: User-Agent يقول Chrome 131+ لكن ClientHello لا يحتوي على مشاركة مفتاح ما بعد الكم. النتيجة: تصنيف كـ "محتمل أن يكون بوت".
بصمة JA4 TLS
JA4 هي بصمة TLS مفتوحة المصدر طورتها FoxIO وتكتسب اعتماداً واسعاً في أنظمة مكافحة البوتات. بصمة JA4 تجمع:
- إصدار TLS (مثل
t13لـ TLS 1.3) - ترتيب cipher suites (مثل
d170) - ترتيب extensions
- نوع SNI وALPN
النتيجة سلسلة مثل t13d1706h2_8daaf6152771_b0da82dd1658. كل إصدار متصفح يُنتج بصمة JA4 محددة وقابلة للتصنيف. أكاماي يحتفظ بقاعدة بيانات من بصمات JA4 المعروفة ويربطها بإصدارات المتصفح. إذا كانت بصمة JA4 لا تتطابق مع أي متصفح معروف، أو تتطابق مع مكتبة برمجية معروفة (مثل Python-requests أو Go-http-client)، فالتصنيف فوري: بوت.
يمكنك الاطلاع على المواصفة الكاملة لـ JA4 على مستودع FoxIO على GitHub.
بصمة إعدادات HTTP/2
أكاماي يفحص أيضاً إعدادات HTTP/2 (SETTINGS frame) التي يرسلها العميل. هذه تشمل:
HEADER_TABLE_SIZEENABLE_PUSHMAX_CONCURRENT_STREAMSINITIAL_WINDOW_SIZEMAX_FRAME_SIZEMAX_HEADER_LIST_SIZE
كل متصفح يرسل هذه القيم بترتيب وقيم محددة. Chrome 131 يرسلها بترتيب يختلف عن Firefox وSafari. إذا كان User-Agent يقول Chrome لكن إعدادات HTTP/2 تتطابق مع Firefox، فهذا تناقض واضح.
الخلاصة: التطابق الكامل مطلوب. User-Agent + JA4 + HTTP/2 SETTINGS + X25519MLKEM768 يجب أن تكون كلها متسقة مع متصفح وإصدار ونظام تشغيل محدد. أي تعارض = فشل.
لماذا البروكسي السكني إلزامي: وزن سمعة IP
حتى لو كانت كل بصمات المتصفح مثالية، فإن أكاماي يُعطي وزناً كبيراً لـ سمعة عنوان IP. هذا هو المكان الذي يفشل فيه معظم المهندسين.
أكاماي يحتفظ بقاعدة بيانات تصنف كل نطاق نظام مستقل (ASN) حسب نوعه:
| نوع ASN | تصنيف أكاماي الافتراضي | احتمالية اجتياز الفحص | الاستخدام المناسب |
|---|---|---|---|
| سكني (Residential ISP) | إنسان محتمل | عالية (85-95%) | Scraping ومراقبة وأبحاث أمنية |
| مركز بيانات (Datacenter) | بوت افتراضي | منخفضة جداً (5-15%) | اختبار أداء داخلي فقط |
| جوال (Mobile Carrier) | إنسان محتمل (وزن أعلى) | عالية جداً (90-98%) | الحالات التي تتطلب أعلى ثقة |
| VPN تجاري | محتمل أن يكون بوت | منخفضة (10-25%) | غير موصى به |
عناوين مراكز البيانات (مثل AWS أو DigitalOcean أو Hetzner) مُصنَّفة مسبقاً كـ بوت في قاعدة بيانات أكامي. هذا يعني أن درجة الثقة الابتدائية لعنوان IP من مركز بيانات تبدأ من نقطة سلبية، و即使 لو كانت كل بصمات المتصفح مثالية، فإن النظام يطلب مستوى أعلى من التحقق السلوكي وقد يفشل الطلب بشكل صامت.
البروكسي السكني، من ناحية أخرى، يستخدم عناوين IP مخصصة من مزودي خدمة الإنترنت المنزليين الحقيقيين (مثل Comcast أو AT&T أو Deutsche Telekom). هذه العناوين لها سمعة طبيعية لأنها مُستخدمة من قبل بشر فعليين. أكاماي يمنحها درجة ثقة ابتدائية أعلى، مما يقلل من شدة الفحص السلوقي المطلوب.
يمكنك الاطلاع على قائمة المواقع المتاحة من ProxyHat لاختيار البلد والمدينة المناسبة لهدفك.
نهج عملي: استخدام ProxyHat مع متصفح stealth حقيقي
النهج الصحيح لاجتياز أكاماي بوت مانجر v2 هو عدم محاولة محاكاته، بل استخدام متصفح حقيقي (Chromium أو Firefox) مع بروكسي سكني حقيقي. هذا يضمن أن:
- sensor.js يُشغَّل في بيئة JavaScript حقيقية ويُجمع بيانات صحيحة
- بصمة TLS وJA4 تتطابق مع المتصفح المُستخدم فعلياً
- عنوان IP له سمعة سكنية حقيقية
- التوقيت والمنطقة الزمنية متسقة مع موقع IP
مثال باستخدام Playwright وProxyHat
إليك مثال عملي باستخدام Playwright مع بروكسي سكني من ProxyHat:
from playwright.sync_api import sync_playwright
import time
# إعدادات البروكسي السكني من ProxyHat
# استخدم جلسة ثابتة (sticky session) للحفاظ على نفس IP
proxy_config = {
"server": "http://gate.proxyhat.com:8080",
"username": "user-country-US-session-research01",
"password": "YOUR_PASSWORD"
}
with sync_playwright() as p:
# إطلاق Chromium حقيقي — وليس headless
# headless=True قد يُكتشف في بعض الإصدارات
browser = p.chromium.launch(
headless=False,
proxy=proxy_config,
args=[
"--disable-blink-features=AutomationControlled",
"--no-sandbox"
]
)
context = browser.new_context(
user_agent=(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/131.0.0.0 Safari/537.36"
),
viewport={"width": 1920, "height": 1080},
locale="en-US",
timezone_id="America/New_York"
)
page = context.new_page()
page.goto("https://target-site.com", wait_until="networkidle")
# انتظر اكتمال sensor.js وتحديث _abck
time.sleep(3)
cookies = context.cookies()
abck_cookie = [c for c in cookies if c["name"] == "_abck"]
if abck_cookie:
value = abck_cookie[0]["value"]
# تحقق من حالة _abck
if "~-1~-1~-1" in value:
print("⚠️ _abck يشير إلى تصنيف بوت")
else:
print(f"✅ _abck سليم: {value[:30]}...")
else:
print("❌ لا يوجد _abck — الموقع قد لا يستخدم أكاماي")
# تنفيذ تفاعل بشري بسيط قبل الطلبات الحقيقية
page.mouse.move(500, 300)
page.mouse.move(520, 310)
time.sleep(0.5)
page.mouse.click(520, 310)
# الآن يمكنك تنفيذ طلباتك المرخصة
browser.close()مثال باستخدام curl للاختبار السريع
للتحقق من أن البروكسي يعمل بشكل صحيح قبل بناء خط أنابيب كامل:
# اختبار الاتصال عبر بروكسي ProxyHat السكني
curl -x http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
-s https://httpbin.org/ip
# اختبار SOCKS5 (استخدم المنفذ 1080)
curl -x socks5://user-country-DE:YOUR_PASSWORD@gate.proxyhat.com:1080 \
-s https://httpbin.org/ipمثال Node.js للتكامل في خط أنابيب
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({
headless: false,
proxy: {
server: 'http://gate.proxyhat.com:8080',
username: 'user-country-US-session-node01',
password: 'YOUR_PASSWORD'
},
args: ['--disable-blink-features=AutomationControlled']
});
const context = await browser.newContext({
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
viewport: { width: 1920, height: 1080 },
locale: 'en-US',
timezoneId: 'America/New_York'
});
const page = await context.newPage();
await page.goto('https://target-site.com', { waitUntil: 'networkidle' });
// انتظر اكتمال تحقق _abck
await page.waitForTimeout(3000);
const cookies = await context.cookies();
const abck = cookies.find(c => c.name === '_abck');
console.log('_abck:', abck ? abck.value.substring(0, 30) + '...' : 'غير موجود');
await browser.close();
})();للحصول على بيانات اعتمادك وتفاصيل الباقات، تفضل بزيارة صفحة أسعار ProxyHat. ولمزيد من التفاصيل التقنية حول التهيئة، راجع وثائق ProxyHat.
الأخطاء الشائعة والحالات الحدية
1. استخدام headless بدون تعديلات
Chromium في وضع headless يُضيف إشارات كشف متعددة: navigator.webdriver يكون true، وخصائص معينة في WebGL تختلف. استخدم دائماً إما headless=False أو أداة مثل playwright-stealth التي تُصلح هذه الإشارات.
2. عدم تطابق المنطقة الزمنية مع IP
إذا كان البروكسي في ألمانيا لكن المتصفح يُظهر توقيت America/Los_Angeles، فإن أكاماي يُسجل هذا كتناقض. استخدم دائماً timezone_id المتطابق مع موقع IP. مع ProxyHat، إذا حددت country-DE-city-berlin، فاستخدم timezone_id="Europe/Berlin".
3. إعادة استخدام نفس الجلسة لفترة طويلة
أكاماي يراقب النشاط عبر الجلسة. إذا قمت بإرسال 1000 طلب من نفس _abck خلال 10 دقائق، فالنظام يُعيد تصنيف الجلسة كـ بوت حتى لو كانت كل البصمات صحيحة. استخدم تدوير الجلسات: غيّر معرف الجلسة كل 50-100 طلب أو كل 15 دقيقة.
4. تجاهل robots.txt
من الناحية الأخلاقية والقانونية، احترم دائماً robots.txt. إذا منع الموقع crawling لمسار معين، فلا تتجاوزه. هذا ليس فقط مسألة أخلاقية بل أيضاً مسألة قانونية قد تؤثر على مشروعك.
5. الاعتماد على مكتبات محاكاة sensor.js الثابتة
بعض المكتبات التجارية تبيع "حلولاً" لمحاكاة sensor.js يدوياً. هذه الحلول تنجح لفترة قصيرة (أيام إلى أسابيع) ثم تتعطل عندما يُحدِّث أكامي نص sensor.js. النهج المستدام هو استخدام متصفح حقيقي.
أين يكون هذا الاستخدام مناسباً؟
التقنيات المذكورة هنا مناسبة لـ:
- مراقبة الأسعار المرخصة: تتبع أسعار المنافسين بتفويض من العميل ووفقاً لشروط الخدمة
- البحث الأمني: اختبار أنظمة الحماية بتفويض صريح من مالك البنية التحتية
- جمع البيانات العامة: استخراج بيانات متاحة للعامة بطريقة تحترم شروط الاستخدام
- ضمان الجودة: اختبار أداء تطبيقاتك الخاصة المحمية بأكاماي
غير مناسباً لـ: الاحتيال، شراء تذاكر بكميات كبيرة لبيعها بأرباح، إنشاء حسابات وهمية، أو أي نشاط ينتهك شروط خدمة الموقع المستهدف.
النقاط الرئيسية
الخلاصة العملية:
- أكاماي بوت مانجر v2 يجمع 50+ إشارة عبر sensor.js ويبني درجة ثقة مستمرة من جهة الخادم
- _abck cookie يتطلب sensor_data صحيحة وكاملة — حقل واحد غير متطابق يُبطل الجلسة
- في 2026، بصمة JA4 وHTTP/2 SETTINGS وX25519MLKEM768 يجب أن تتطابق مع User-Agent المُعلن
- عناوين مراكز البيانات مُصنَّفة مسبقاً كـ بوت — البروكسي السكني إلزامي
- النهج الصحيح: متصفح حقيقي + بروكسي سكني حقيقي + تطابق المنطقة الزمنية + تدوير الجلسات
- استخدم ProxyHat عبر
gate.proxyhat.com:8080(HTTP) أو:1080(SOCKS5)- احترم دائماً CFAA وGDPR وrobots.txt — الأذن الصريح مطلوب
الأسئلة الشائعة
ما هو تحليل عميق لأكاماي بوت مانجر v2؟
هو دراسة تقنية لآلية عمل نظام أكاماي المضاد للبوتات في إصداره الثاني، تشمل فحص طبقات الكشف السلوكية (sensor.js و_abck) والبروتوكولية (JA4 وHTTP/2) والشبكية (سمعة IP). الهدف هو فهم كيف يبني النظام درجة الثقة وكيف يمكن للأتمتة الشرعية اجتياز هذه الفحوصات بشكل نظيف باستخدام متصفح حقيقي وبروكسي سكني.
لماذا يهم تحليل عميق لأكاماي بوت مانجر v2 مستخدمي البروكسي؟
لأن أكاماي يُعطي وزناً كبيراً لسمعة عنوان IP. عناوين مراكز البيانات مُصنَّفة مسبقاً كـ بوت، مما يعني أن درجة الثقة الابتدائية تكون سلبية. البروكسي السكني يوفر عنوان IP بسمعة طبيعية من مزود إنترنت منزلي، مما يرفع درجة الثقة الابتدائية ويقلل من شدة الفحص السلوكي المطلوب. بدون بروكسي سكني، حتى البصمات المثالية قد لا تكفي.
أي نوع بروكسي يعمل بشكل أفضل مع أكاماي بوت مانجر v2؟
البروكسي السكني هو الخيار الأمثل لأنه يستخدم عناوين IP من مزودي خدمة الإنترنت المنزليين، مما يمنحها سمعة طبيعية. البروكسي الجوال يعمل بشكل ممتاز أيضاً لأن شركات الاتصالات لها وزن ثقة أعلى. البروكسي من مراكز البيانات غير مناسب لأن هذه العناوين مُصنَّفة مسبقاً كـ بوت في قاعدة بيانات أكاماي. مع ProxyHat، استخدم gate.proxyhat.com:8080 مع علم country- لتحديد الموقع الجغرافي المناسب.
كيف تتجنب الحظر عند تنفيذ أتمتة ضد أكاماي بوت مانجر v2؟
استخدم متصفحاً حقيقياً (Playwright أو Puppeteer) بدلاً من محاكاة sensor.js يدوياً. تأكد من تطابق المنطقة الزمنية مع موقع IP، واستخدم بروكسي سكني، وطبّق تدوير الجلسات كل 50-100 طلب. أضف تأخيراً عشوائياً بين الطلبات (1-3 ثوانٍ)، واحترم robots.txt وشروط الخدمة. تجنب الوضع headless بدون تعديلات، وتأكد من أن User-Agent وJA4 وHTTP/2 SETTINGS كلها متسقة مع متصفح وإصدار محدد.






