
⛏️ محرك الاستخراج الذي يعمل خلف Maigret: حوّل أي رابط ملف شخصي إلى سجل استخباراتي مفتوح المصدر (OSINT) منظم عبر أكثر من 150 موقعًا
حوّل أي صفحة ملف شخصي عام إلى سجل حساب منظم — أسماء مستخدمين، أسماء عرض، سير ذاتية، صور رمزية، مواقع، تواريخ الانضمام، أعداد المتابعين، روابط خارجية، والمعرّفات الداخلية الثابتة التي تثبت الحساب بشكل فريد عبر تغيير الأسماء، إعادة التصميم، والحذف.
socid_extractor يوزع صفحات HTML واستجابات API من أكثر من 130 منصة، ويعيد قاموسًا مسطحًا وقابلًا للمعالجة الآلية لحقول الحساب. لا حاجة لمفاتيح API أو متصفح بدون واجهة — مجرد استدعاء دالة واحدة على نص الاستجابة.
لماذا هو مفيد
extract() يعمل مع Instagram، GitHub، VK، Reddit، Substack، Bluesky، TikTok — دون حاجة لكتابة كود خاص بكل منصة.username، fullname، created_at، is_verified، …) بحيث لا تحتاج خطوط الأنابيب إلى 130 خريطة.Python: 3.10+.
pip install socid-extractor
لتثبيت CLI نظيف على محطة العمل:
pipx install socid-extractor
أحدث إصدار تطويري:
pip install -U git+https://github.com/soxoj/socid-extractor.git
كأداة CLI:
$ socid_extractor --url https://www.deviantart.com/muse1908
country: France
created_at: 2005-06-16 18:17:41
gender: female
username: Muse1908
website: www.patreon.com/musemercier
links: ['https://www.facebook.com/musemercier', 'https://www.instagram.com/muse.mercier/', 'https://www.patreon.com/musemercier']
tagline: Nothing worth having is easy...
كمكتبة Python:
import requests
import socid_extractor
r = requests.get('https://www.patreon.com/annetlovart')
print(socid_extractor.extract(r.text))
# {'patreon_id': '33913189', 'patreon_username': 'annetlovart',
# 'fullname': 'Annet Lovart',
# 'links': "['https://www.facebook.com/322598031832479', ...]"}
نصيحة — تشغيل دفعة: استخدم --skip-fetch-if-no-url-hint لتخطي طلب HTTP عندما لا يتطابق الرابط مع أي تلميح موقع معروف (أسرع، لكن قد يتخطى محركات عامة مثل قوالب المنتديات):
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
أكثر من 130 مخططًا — راجع METHODS.md للقائمة الكاملة.
عينة غير شاملة:
…وغيرها الكثير.
للحصول على أمثلة بيانات، راجع tests/test_e2e.py; لمنطق التوزيع، راجع socid_extractor/schemes.py; لأنطولوجيا الحقول، راجع FIELDS.md.
socid_extractor مفتوح المصدر مرخص تحت MIT ومجاني للاستخدام التجاري دون قيود — لكن مُحللات الصفحات تنكسر بمرور الوقت مع تغير المنصات لـ HTML وAPI، وتحتاج إلى صيانة مستمرة.
للاستخدام التجاري الجاد — مع حزمة إضافية خاصة من المحللات المُحدّثة أو واجهة API للاستخراج المستضافة — تواصل معنا: 📧 [email protected]
socid_extractor في منتجكيتوافق مع تقنيات SOWEL التالية:
قم بتثبيت تبعيات الاختبار من pyproject.toml، ثم شغّل pytest:
pip install '.[test]' # pytest, pytest-rerunfailures, pytest-xdist
python3 -m pytest tests/test_e2e.py -n 10 -k 'not cookies' -m 'not github_failed and not rate_limited'
استخدم pip install '.[dev]' بدلاً من ذلك إذا كنت تريد أيضًا flake8 / mypy / black (المجموعة الكاملة المستخدمة من قبل CI).
يجب أن يكون لكل مخطط جديد اختبار e2e في tests/test_e2e.py يضرب رابطًا/API حقيقيًا. اختبارات الوحدات مع fixtures داخلية (tests/test_socid_improvements.py) مطلوبة أيضًا لكنها لا تغني عن تغطية e2e. راجع docs/testing-and-ci.md للتفاصيل.
وثائق المطور (الهندسة، الوحدات، CI) موجودة في docs/.
راجع دليل المساهمة إذا كنت ترغب في إضافة مخطط جديد أو إصلاح أي شيء.