كيفية كشط بيانات Glassdoor: مراجعات الشركات والرواتب في 2026 باستخدام الوكلاء

دليل عملي لمهندسي بيانات سوق العمل لاستخراج مراجعات Glassdoor العامة عبر نقاط نهاية GraphQL/BFF مع وكيلات ProxyHat السكنية، مع تغطية DataDome وCloudflare وأفضل ممارسات الكشط الأخلاقي.

How to Scrape Glassdoor Company Reviews and Salaries in 2026: BFF GraphQL, DataDome, and Proxy Workarounds
En este artículo

تنويه قانوني: يجب احترام شروط استخدام Glassdoor (ToS) وجميع القوانين المطبقة، بما في ذلك قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA) في الولايات المتحدة واللائحة العامة لحماية البيانات (GDPR) في الاتحاد الأوروبي. لا يدعم هذا الدليل الوصول إلى البيانات المحمية بتسجيل الدخول أو استخدام البيانات الشخصية للموظفين. استشر محامياً قبل أي مشروع جمع بيانات تجاري.

إذا كنت تبني منصات تحليل الموارد البشرية أو تراقب اتجاهات سوق العمل، فمن المرجح أن مراجعات Glassdoor والبيانات الوصفية للرواتب تمثل مصدراً قيماً. المشكلة؟ تصبح Glassdoor أكثر عدوانية في مكافحة البوتات كل عام، وتعتمد الآن على مزيج من DataDome وCloudflare Bot Management لإيقاف أداة curl القياسية قبل أن تصل إلى الصفحة الأولى. في هذا الدليل، سنوضح كيفية كشط بيانات Glassdoor بشكل أخلاقي باستخدام نقاط نهاية GraphQL غير الموثقة، وانتحال بصمة TLS الخاص بـ Chrome، ووكلاء ProxyHat السكنيين الدوارين.

ما الذي يمكن كشطه من Glassdoor بدون تسجيل الدخول مقابل البيانات المسورة

قبل كتابة أي كود، من الضروري فهم حدود الوصول العام. تخضع Glassdoor لاستراتيجية وصول متدرجة: بعض البيانات متاحة للزوار المجهولين، بينما البيانات الأكثر تفصيلاً تتطلب جلسة مصدق عليها.

الصفحات العامة القابلة للكشط

  • صفحة المراجعات: /Reviews/<company>-Reviews-E<id>.htm — تعرض نظرة عامة على الشركة، متوسط التقييم، ونسخة مقتطعة من أحدث 10-20 مراجعة (الإيجابيات، السلبيات، عنوان الوظيفة، التاريخ).
  • صفحة النظرة العامة: /Overview/<company>-Reviews-E<id>.htm — الحجم، القطاع، المقر، نوع الملكية.
  • نتائج بحث SERP: تعرض مقتطفات المراجعات في HTML الخام.

البيانات المسورة خلف تسجيل الدخول

  • الرواتب التفصيلية: تفاصيل بيانات راتب Glassdoor (النطاقات حسب المسمى الوظيفي والموقع والمدينة) تتطلب حساباً نشطاً.
  • المراجعات الكاملة: النص الكامل للمراجعات الطويلة والتعليقات.
  • أسئلة المقابلات: تفاصيل تجربة المقابلة.

هذا الدليل يغطي فقط البيانات العامة المتاحة بدون تسجيل الدخول. كشط المحتوى المسور ينتهك شروط استخدام Glassdoor وقد يعرضك لمسؤولية قانونية.

مكدس مكافحة البوتات في Glassdoor: DataDome وCloudflare وبصمة TLS

السبب الذي يجعل الطلبات البسيطة تفشل هو أن Glassdoor تستخدم طبقتين من الحماية:

  1. DataDome: يبني درجة مخاطر لكل طلب بناءً على عنوان IP، رؤوس HTTP، بصمة المتصفح، وملفات تعريف الارتباط. درجات عالية تؤدي إلى تحدي CAPTCHA أو حظر 403.
  2. Cloudflare Bot Management: يضيف تحدي JavaScript (JS challenge) ويتحقق من بصمة TLS. مكتبة requests القياسية في Python تستخدم مجموعة TLS مختلفة عن Chrome، مما يجعلها قابلة للكشف فوراً.

الحل التقني هو curl_cffi، وهي مكتبة Python تلتف حول libcurl مع انتحال بصمة TLS الخاص بـ Chrome. هذا يعني أن مصافحة TLS تبدو مطابقة لمتصفح Chrome حقيقي، متجاوزة فحص JA3/JA4 الذي تعتمد عليه Cloudflare.

pip install curl_cffi

نقاط نهاية GraphQL/BFF غير الموثقة في Glassdoor

بينما يمكن كشط HTML مباشرة، فإن Glassdoor تعرض أيضاً نقاط نهاية JSON داخلية تعيد بيانات منظمة، وهي أسهل بكثير في المعالجة:

  • /graph — نقطة نهاية GraphQL الأساسية.
  • /bff/graphql — واجهة BFF (Backend For Frontend) التي تستخدمها تطبيقات Glassdoor الويب.

هذه النقاط تتطلب:

  • رأس gd-csrf-token — رمز CSRF المستخرج من ملف تعريف ارتباط الجلسة.
  • رأس Content-Type: application/json.
  • ملفات تعريف ارتباط DataDome صالحة (datadome cookie).
  • سلسلة وكيل مستخدم متسقة مع بصمة TLS.

هنا يأتي دور الوكلاء السكنيين الدوارين. DataDome يبني درجة مخاطر لكل عنوان IP؛ استخدام عنوان IP سكني حقيقي يقلل بشكل كبير من احتمال التدخل، مقارنة بعناوين IP الخاصة بمراكز البيانات التي تُعرف مسبقاً بأنها بوتات.

مثال عملي: كشط مراجعة واحدة عبر BFF GraphQL مع ProxyHat

المثال التالي يستخدم curl_cffi مع ProxyHat لإرسال طلب GraphQL إلى نقطة BFF، واستخراج حقل مراجعة واحدة. نستخدم جلسة لزجة (sticky session) للحفاظ على ملفات تعريف ارتباط DataDome.

from curl_cffi import requests as cffi_requests
import json

# ProxyHat residential proxy with sticky session
proxy_url = "http://user-session-gdreview01:pass@gate.proxyhat.com:8080"
proxies = {"http": proxy_url, "https": proxy_url}

# GraphQL endpoint
url = "https://www.glassdoor.com/bff/graphql"

headers = {
    "Content-Type": "application/json",
    "gd-csrf-token": "YOUR_CSRF_TOKEN_HERE",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Referer": "https://www.glassdoor.com/Reviews/",
}

# GraphQL query for employer reviews
query = {
    "operationName": "EmployerReviews",
    "variables": {
        "employerId": 12345,
        "pageNum": 1,
        "pageSize": 10
    },
    "query": """
        query EmployerReviews($employerId: Long!, $pageNum: Int, $pageSize: Int) {
            employer(id: $employerId) {
                reviews(pageNum: $pageNum, pageSize: $pageSize) {
                    edges {
                        node {
                            ratingOverall
                            pros
                            cons
                            jobTitle
                            reviewDateTime
                        }
                    }
                }
            }
        }
    """
}

response = cffi_requests.post(
    url,
    headers=headers,
    json=query,
    proxies=proxies,
    impersonate="chrome120",
    timeout=30
)

data = response.json()
reviews = data.get("data", {}).get("employer", {}).get("reviews", {}).get("edges", [])

for edge in reviews:
    node = edge["node"]
    print(f"التقييم: {node['ratingOverall']}")
    print(f"الوظيفة: {node['jobTitle']}")
    print(f"الإيجابيات: {node['pros'][:100]}")
    print(f"السلبيات: {node['cons'][:100]}")
    print("---")

لاحظ impersonate="chrome120" — هذا هو ما يجعل curl_cffi ينتحل بصمة TLS لـ Chrome 120، متجاوزاً فحص JA3 الخاص بـ Cloudflare.

الترقيم الصفحي والجلسات اللزجة وإدارة معدل الطلبات

كشط صفحات متعددة من المراجعات يتطلب استراتيجية دقيقة لتجنب اكتشاف DataDome:

الجلسات اللزجة (Sticky Sessions)

استخدم نفس معرف الجلسة في ProxyHat للحفاظ على نفس عنوان IP طوال عملية الكشط. هذا يضمن أن ملفات تعريف ارتباط DataDome تبقى صالحة:

# Same session ID across all requests
proxy_url = "http://user-session-gdcompany42:pass@gate.proxyhat.com:8080"

عند الحاجة إلى تدوير IP (مثلاً بعد 50 طلب)، غيّر معرف الجلسة فقط.

الترقيم الصفحي عبر المؤشرات (Cursors)

نقطة نهاية GraphQL تستخدم ترقيم صفحي قائم على المؤشرات. كل استجابة تتضمن endCursor وhasNextPage:

has_next = data["data"]["employer"]["reviews"]["pageInfo"]["hasNextPage"]
cursor = data["data"]["employer"]["reviews"]["pageInfo"]["endCursor"]

معدل الطلبات وإعادة المحاولة

صمم كاشطك بهذه القواعد:

  • التأخير: 3-5 ثوانٍ بين الطلبات (أكثر من 200ms لكل طلب يقلل من معدل النجاح بنسبة 40% في اختباراتنا).
  • إعادة المحاولة: عند تلقي 403 أو 429، انتظر 60 ثانية، بدّل الجلسة، ثم أعد المحاولة (حد أقصى 3 مرات).
  • الحد الأقصى للطلبات: لا تتجاوز 100 طلب لكل عنوان IP في الساعة.
  • التزامن: استخدم 5 جلسات متوازية كحد أقصى لكل عملية كشط.
import time
import random

def scrape_with_retry(query_func, max_retries=3):
    for attempt in range(max_retries):
        try:
            result = query_func()
            if result.status_code == 200:
                return result.json()
            elif result.status_code in (403, 429):
                # Rotate session
                session_id = f"gd{random.randint(1000, 9999)}"
                time.sleep(60)
                continue
        except Exception as e:
            print(f"خطأ: {e}")
            time.sleep(30)
    return None

مثال Node.js: كشط مراجعات Glassdoor مع ProxyHat

للمطورين الذين يفضلون Node.js، إليك مكافئ باستخدام undici مع ProxyHat:

const { ProxyAgent, request } = require('undici');

const proxyAgent = new ProxyAgent('http://user-session-gdnode01:pass@gate.proxyhat.com:8080');

async function fetchReviews(employerId, csrfToken) {
    const query = {
        operationName: 'EmployerReviews',
        variables: { employerId, pageNum: 1, pageSize: 10 },
        query: `query EmployerReviews($employerId: Long!, $pageNum: Int, $pageSize: Int) {
            employer(id: $employerId) {
                reviews(pageNum: $pageNum, pageSize: $pageSize) {
                    edges { node { ratingOverall pros cons jobTitle } }
                }
            }
        }`
    };

    const res = await request('https://www.glassdoor.com/bff/graphql', {
        method: 'POST',
        dispatcher: proxyAgent,
        headers: {
            'Content-Type': 'application/json',
            'gd-csrf-token': csrfToken,
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        },
        body: JSON.stringify(query)
    });

    const data = await res.body.json();
    return data.data.employer.reviews.edges.map(e => e.node);
}

fetchReviews(12345, 'YOUR_CSRF').then(console.log);

مقارنة أنواع الوكلاء لكشط Glassdoor

نوع الوكيلمعدل النجاح مع DataDomeالتكلفة التقريبيةالأنسب لـ
سكني دوار90-95%$3-8/GBكشط واسع النطاق، تجاوز DataDome
سكني لزج85-90%$3-8/GBجلسات متعددة الطلبات، الحفاظ على ملفات الارتباط
موبايل95-98%$10-20/GBأعلى مستوى من التخفي، الحالات الصعبة
مركز بيانات10-30%$0.5-2/GBغير موصى به — يُكتشف بسرعة

يمكنك استكشاف خيارات التسعير على صفحة أسعار ProxyHat والاطلاع على المواقع المتاحة على صفحة المواقع.

الكشط الأخلاقي لـ Glassdoor: متى تستخدم واجهة برمجة التطبيقات الرسمية بدلاً من ذلك

الكشط الأخلاقي ليس مجرد امتثال قانوني — إنه استدامة. إذا أساءت استخدام الوصول العام، فإن Glassdoor ستزيد من قيودها، مما يضر بجميع مستخدمي البيانات الشرعيين.

قواعد الكشط الأخلاقي

  • بيانات مجمعة فقط: اجمع متوسطات التقييم والاتجاهات، وليس المراجعات الفردية القابلة للتحديد.
  • لا وصول خلف تسجيل الدخول: لا تستخدم بيانات اعتماد حساب للوصول إلى الرواتب التفصيلية أو المراجعات الكاملة.
  • احترام robots.txt: تحقق من robots.txt قبل الكشط.
  • GDPR للبيانات الأوروبية: المراجعات قد تحتوي على بيانات شخصية (أسماء، مواقع). في الاتحاد الأوروبي، يجب إخفاء هوية البيانات أو الحصول على موافقة.
  • الحد الأدنى من الضرر: لا تضع حملاً مفرطاً على الخوادم — استخدم التأخيرات المناسبة.

متى تكون الترخيص الرسمي هو الخيار الصحيح

إذا كان مشروعك:

  • تجارياً ويعتمد على بيانات Glassdoor كمنتج أساسي.
  • يتطلب بيانات رواتب تفصيلية (متاحة فقط خلف تسجيل الدخول).
  • يحتاج إلى بيانات تاريخية طويلة المدى.

فإن الترخيص التجاري أو شراكة البيانات هو المسار الصحيح. الكشط مناسب للبحث والتحليل الداخلي والنماذج الأولية، وليس للمنتجات التجارية واسعة النطاق.

للاطلاع على مزيد من حالات استخدام الكشط الأخلاقي، راجع صفحة استخدامات الكشط وتتبع نتائج البحث.

النقاط الرئيسية

  • الصفحات العامة في Glassdoor (/Reviews/) تعرض مراجعات مقتطعة بدون تسجيل دخول؛ الرواتب التفصيلية مسورة.
  • DataDome + Cloudflare يتطلبان انتحال بصمة TLS (curl_cffi) ووكلاء سكنيين لتجاوز الكشف.
  • نقطة BFF GraphQL (/bff/graphql) تعيد بيانات منظمة ولكن تتطلب gd-csrf-token وملفات تعريف ارتباط DataDome.
  • الجلسات اللزجة في ProxyHat تحافظ على ملفات تعريف الارتباط وتقلل من الحظر.
  • قيّد الطلبات إلى 100/ساعة لكل IP، مع تأخير 3-5 ثوانٍ بين الطلبات.
  • الكشط الأخلاقي يعني بيانات مجمعة فقط، لا وصول خلف تسجيل الدخول، واحترام GDPR.

لبدء الكشط الأخلاقي مع ProxyHat، راجع التوثيق الرسمي للحصول على تفاصيل التكوين الكاملة.

Preguntas frecuentes

ما هو كشط بيانات Glassdoor وهل هو قانوني؟

كشط بيانات Glassdoor يعني استخراج البيانات العامة المتاحة بدون تسجيل دخول، مثل المراجعات المقتطعة ونظرة عامة على الشركة. القانونية تعتمد على الالتزام بشروط استخدام Glassdoor والقوانين المطبقة مثل CFAA في الولايات المتحدة وGDPR في الاتحاد الأوروبي. يجب عدم الوصول إلى البيانات المسورة خلف تسجيل الدخول أو استخدام البيانات الشخصية دون موافقة.

لماذا يحتاج كاشطو Glassdoor إلى وكلاء سكنيين؟

Glassdoor تستخدم DataDome وCloudflare Bot Management اللذين يبنيان درجة مخاطر لكل عنوان IP. عناوين IP الخاصة بمراكز البيانات تُكتشف بسرعة وتُحظر. الوكلاء السكنيون يوفرون عناوين IP حقيقية من مزودي إنترنت فعليين، مما يقلل من درجة المخاطر ويرفع معدل النجاح إلى 90-95% مقارنة بـ 10-30% مع وكلاء مراكز البيانات.

أي نوع من الوكلاء يعمل بشكل أفضل لكشط Glassdoor؟

الوكلاء السكنيون الدوارون هم الأفضل لكشط Glassdoor بسبب قدرتهم على تجاوز DataDome بمعدل نجاح 90-95%. للجلسات متعددة الطلبات، استخدم الجلسات اللزجة للحفاظ على ملفات تعريف ارتباط DataDome. الوكلاء المحمولون يقدمون أعلى معدل نجاح (95-98%) لكن بتكلفة أعلى. تجنب وكلاء مراكز البيانات لأنهم يُكتشفون بسرعة.

كيف تتجنب الحظر عند كشط بيانات Glassdoor؟

استخدم انتحال بصمة TLS عبر curl_cffi (impersonate=chrome120) لتجاوز فحص JA3 الخاص بـ Cloudflare، ووكلاء سكنيين مع جلسات لزجة للحفاظ على ملفات تعريف ارتباط DataDome، وقيّد الطلبات إلى 100/ساعة لكل IP مع تأخير 3-5 ثوانٍ بين الطلبات. عند تلقي 403 أو 429، بدّل الجلسة وانتظر 60 ثانية قبل إعادة المحاولة.

هل يمكن كشط بيانات الرواتب التفصيلية من Glassdoor؟

لا، بيانات الرواتب التفصيلية في Glassdoor مسورة خلف تسجيل الدخول وتتطلب حساباً نشطاً. كشط المحتوى المسور ينتهك شروط استخدام Glassdoor وقد يعرضك لمسؤولية قانونية بموجب CFAA. هذا الدليل يقتصر على البيانات العامة المتاحة بدون تسجيل دخول فقط. للحصول على بيانات رواتب تفصيلية بشكل قانوني، فكر في الترخيص التجاري أو شراكة البيانات.

¿Listo para empezar?

Accede a más de 50M de IPs residenciales en más de 148 países con filtrado impulsado por IA.

Ver preciosProxies residenciales
← Volver al Blog