
نص برمجي بلغة بايثون 3 لتفريغ/كشط/استخراج موظفي الشركة من واجهة برمجة تطبيقات لينكد إن
LinkedInDumper هو نص Python 3 يقوم بتفريغ بيانات الموظفين من منصة التواصل الاجتماعي LinkedIn.
تحتوي النتائج على الاسم الأول، اسم العائلة، المنصب (المسمى الوظيفي)، الموقع، ورابط ملف المستخدم الشخصي. يلزم استدعاءان فقط لواجهة API لاسترداد جميع الموظفين إذا كان عدد موظفي الشركة لا يتجاوز 10. وإلا، يجب التنقل بين صفحات نتائج API. باستخدام علامة سطر الأوامر --email-format يمكنك تحديد تنسيق نص Python لإنشاء عناوين البريد الإلكتروني تلقائيًا بناءً على الاسم الأول واسم العائلة المستردين.
يتفاعل LinkedInDumper مع واجهة LinkedIn Voyager API غير الرسمية، والتي تتطلب مصادقة. لذلك، يجب أن يكون لديك حساب مستخدم صالح على LinkedIn. للتبسيط، يتوقع LinkedInDumper قيمة ملف تعريف ارتباط (cookie) تقدمها أنت. بهذه الطريقة، حتى الحسابات المحمية بتوثيق ثنائي العامل (2FA) مدعومة. علاوة على ذلك، يجب عليك توفير رابط شركة LinkedIn لتفريغ موظفيها.
li_at الخاص بك، مثلاً من خلال أدوات المطورli_at أو مؤقتًا أثناء التشغيل عبر علامة سطر الأوامر --cookieusage: linkedindumper.py [-h] --url <linkedin-url> [--cookie <cookie>] [--quiet] [--include-private-profiles] [--include-contact-infos] [--jitter] [--email-format <mail-format>] [--output-json <json-file>] [--output-csv <csv-file>]
options:
-h, --help show this help message and exit
--url <linkedin-url> A LinkedIn company url - https://www.linkedin.com/company/<company>
--cookie <cookie> LinkedIn 'li_at' session cookie
--include-private-profiles
Show private accounts too
--include-contact-infos
Query each employee individually and retrieve contact infos
--jitter Add a random jitter to HTTP requests to bypass rate limiting
--email-format <mail-format>
Python string format for emails; for example:
--email-format '{0}.{1}@example.com' --> [email protected]
--email-format '{0[0]}.{1}@example.com' --> [email protected]
--email-format '{1}@example.com' --> [email protected]
--email-format '{0}@example.com' --> [email protected]
--email-format '{0[0]}{1[0]}@example.com' --> [email protected]
--output-json <json-file>
Store results in json output file
--output-csv <csv-file>
Store results in csv output file
docker run --rm l4rm4nd/linkedindumper:latest --url 'https://www.linkedin.com/company/apple' --cookie '<cookie>' --email-format '{0}.{1}@apple.de'
# install dependencies
pip install -r requirements.txt
python3 linkedindumper.py --url 'https://www.linkedin.com/company/apple' --cookie '<cookie>' --email-format '{0}.{1}@apple.de'
يقوم النص بإرجاع بيانات الموظفين كقيم مفصولة بفاصلة منقوطة (مثل CSV):
██▓ ██▓ ███▄ █ ██ ▄█▀▓█████ ▓█████▄ ██▓ ███▄ █ ▓█████▄ █ ██ ███▄ ▄███▓ ██▓███ ▓█████ ██▀███
▓██▒ ▓██▒ ██ ▀█ █ ██▄█▒ ▓█ ▀ ▒██▀ ██▌▓██▒ ██ ▀█ █ ▒██▀ ██▌ ██ ▓██▒▓██▒▀█▀ ██▒▓██░ ██▒▓█ ▀ ▓██ ▒ ██▒
▒██░ ▒██▒▓██ ▀█ ██▒▓███▄░ ▒███ ░██ █▌▒██▒▓██ ▀█ ██▒░██ █▌▓██ ▒██░▓██ ▓██░▓██░ ██▓▒▒███ ▓██ ░▄█ ▒
▒██░ ░██░▓██▒ ▐▌██▒▓██ █▄ ▒▓█ ▄ ░▓█▄ ▌░██░▓██▒ ▐▌██▒░▓█▄ ▌▓▓█ ░██░▒██ ▒██ ▒██▄█▓▒ ▒▒▓█ ▄ ▒██▀▀█▄
░██████▒░██░▒██░ ▓██░▒██▒ █▄░▒████▒░▒████▓ ░██░▒██░ ▓██░░▒████▓ ▒▒█████▓ ▒██▒ ░██▒▒██▒ ░ ░░▒████▒░██▓ ▒██▒
░ ▒░▓ ░░▓ ░ ▒░ ▒ ▒ ▒ ▒▒ ▓▒░░ ▒░ ░ ▒▒▓ ▒ ░▓ ░ ▒░ ▒ ▒ ▒▒▓ ▒ ░▒▓▒ ▒ ▒ ░ ▒░ ░ ░▒▓▒░ ░ ░░░ ▒░ ░░ ▒▓ ░▒▓░
░ ░ ▒ ░ ▒ ░░ ░░ ░ ▒░░ ░▒ ▒░ ░ ░ ░ ░ ▒ ▒ ▒ ░░ ░░ ░ ▒░ ░ ▒ ▒ ░░▒░ ░ ░ ░ ░ ░░▒ ░ ░ ░ ░ ░▒ ░ ▒░
░ ░ ▒ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░░░ ░ ░ ░ ░ ░░ ░ ░░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ by LRVT
[i] Company Name: apple
[i] Company X-ID: 162479
[i] LN Employees: 1000 employees found
[i] Dumping Date: 17/10/2022 13:55:06
[i] Email Format: {0}.{1}@apple.de
Firstname;Lastname;Email;Position;Gender;Location;Profile
Katrin;Honauer;[email protected];Software Engineer at Apple;N/A;Heidelberg;https://www.linkedin.com/in/katrin-honauer
Raymond;Chen;[email protected];Recruiting at Apple;N/A;Austin, Texas Metropolitan Area;https://www.linkedin.com/in/raytherecruiter
[i] Successfully crawled 2 unique apple employee(s). Hurray ^_-
يمكنك اختياريًا استخدام معلمات سطر الأوامر --output-json و --output-csv لتخزين النتائج كملفات JSON أو CSV.
سيسمح LinkedIn فقط بإرجاع أول 1,000 نتيجة بحث عند جمع معلومات الاتصال. قد تحتاج أيضًا إلى حساب LinkedIn Premium عند الوصول إلى الحد الأقصى المسموح به من الاستعلامات لزيارة الملفات الشخصية باستخدام حسابك المجاني (freemium).
علاوة على ذلك، ليست جميع ملفات الموظفين الشخصية عامة. تختلف النتائج اعتمادًا على حساب LinkedIn المستخدم وما إذا كنت صديقًا لبعض موظفي الشركة التي تريد الزحف إليها أم لا. لذلك، في بعض الأحيان لا يمكن استرداد الاسم الأول واسم العائلة ورابط الملف الشخصي لبعض حسابات الموظفين. لن يعرض النص هذه الملفات الشخصية، لأنها تحتوي على قيم افتراضية مثل "LinkedIn" كاسم أول و "Member" كلقب. إذا كنت ترغب في تضمين هذه الملفات الشخصية الخاصة، يرجى استخدام علامة سطر الأوامر --include-private-profiles. على الرغم من أن بعض الحسابات قد تكون خاصة، إلا أنه يمكننا الحصول على المنصب (المسمى الوظيفي) والموقع لهذه الحسابات. فقط الاسم الأول واسم العائلة ورابط الملف الشخصي مخفية لحسابات LinkedIn الخاصة.
أخيرًا، يتمتع مستخدمو LinkedIn بحرية تسمية ملفاتهم الشخصية. لذلك، يمكن أن يتكون اسم الحساب من أشياء مختلفة مثل التحيات والاختصارات والرموز التعبيرية والأسماء الوسطى وما إلى ذلك. لقد حاولت قدر الإمكان إزالة بعض الهراء. ومع ذلك، هذا ليس حلاً كاملاً للمشكلة العامة. لاحظ أننا لا نستخدم واجهة LinkedIn API الرسمية. يجمع هذا النص المعلومات من واجهة "Voyager API" غير الرسمية.
يمكنك استخدام علامة سطر الأوامر التجريبية --include-contact-infos لاسترداد تفاصيل إضافية من معلومات الاتصال الخاصة بالمستخدم (الاسم الأول، اسم العائلة، العنوان، رقم الهاتف، البريد الإلكتروني، العنوان). سيقوم هذا بالاستعلام عن كل حساب مستخدم LinkedIn تم تعدادهم بشكل فردي وجلب البيانات باستخدام واجهة GraphQL API. يُرجع مخرجات JSON فقط ويتطلب الكثير من الطلبات. يعتمد إرجاع البيانات على إعداد الخصوصية الخاص بالمستخدم وحساب LinkedIn الذي تستخدمه للتعداد.
إذا واجهت رسالة خطأ مثل maximum request exceeded، فجرب معلمة سطر الأوامر --jitter لإدخال بعض التأخيرات لطلبات API الآلية. قد يكون هذا قادرًا على تجاوز التحذيرات أو تحديد المعدل الذي يطبقه LinkedIn.