← README الرئيسي بالإنجليزية (الافتراضي)
بوت بلغة Python للتعامل مع بوابات VFS Global (تسجيل دخول، مسارات مواعيد، وغيرها حسب تنفيذ كل بلد) لوجهات ألمانيا (DE) وإيطاليا (IT) والبرتغال (PT)، مع دعم اختياري لـ GPM، وتشغيل بعدة نوافذ/خيوط، وإشعارات عبر Telegram والبريد وTwilio.
المستودع: github.com/code-root/vfs-appointment-bot
- سير عمل CI:
.github/workflows/ci.ymlعند الدفع إلىmainأوmaster. - Dependabot (اختياري):
.github/dependabot.ymlلتحديثات pip وإجراءات GitHub.
استخدم هذا المشروع وفق شروط استخدام VFS Global والقوانين المعمول بها. المطوّرون غير مسؤولين عن سوء الاستخدام أو تقييد الحسابات أو فشل الحجز. بيانات الدخول وأي أتمتة تقع على مسؤوليتك وحدك.
- توجيه حسب بلد الوجهة:
vfs_bot/vfs_bot_factory.pyيختار الصنف المناسب لـ DE / IT / PT. - بلد المصدر بصيغة ISO ثنائية (مثل AE)، ورابط البوابة يُعرَّف في
config/vfs-url.iniبالمفتاحمصدر-وجهة. - Playwright مع playwright-stealth وبصمات متصفح واقعية؛ نوع المتصفح من
config/browser.ini(chromium / firefox / webkit). - GPM اختياري: تشغيل/إيقاف البروفايل عبر API؛ يوجد دعم Selenium لبعض عمليات GPM.
- إشعارات: تيليجرام، بريد، Twilio عبر
notification/. - نوافذ متوازية: في
run_vfs_bot.pyيمكن تشغيل عدة خيوط حتى يُعثر على موعد أو يتوقف البرنامج. - إدارة بروفايلات GPM: مجموعة
VFS_Bot, ملفused_profiles.json, سكربتات التعبئة والإعادة — التفاصيل في PROFILE_MANAGEMENT_README.md. - بروكسيات:
utils/proxy_manager.pyوملفproxies.txt(لا ترفع أسراراً للمستودع — انظر.gitignore).
- Python 3.8+
- تثبيت متصفحات Playwright (chromium وإن لزم firefox)
- حساب VFS صالح والرابط الصحيح في
vfs-url.ini - GPM (اختياري) على العنوان الافتراضي أو المعدّل في
config/gpm.ini
pip install -r requirements.txt
playwright install chromium
playwright install firefox # إذا كان browser.ini يستخدم firefox-
استنساخ المشروع
git clone https://github.com/code-root/vfs-appointment-bot.git cd vfs-appointment-bot -
إعداد مجلد
config/
يتم دمج كل ملفات*.iniداخلconfig/تلقائياً (utils/config_reader.py). يمكن إضافة ملف إضافي عبر متغير البيئةVFS_BOT_CONFIG_PATH.- نسخ مثال GPM:
cp config_gpm_example.ini config/gpm.ini
config/vfs-credential.ini: البريد وكلمة مرور VFS (حساس — مُستثنى في.gitignore).config/vfs-url.ini: أسطر مثلAE-PT = https://...config/notification.ini: إعدادات الإشعارات (لا ترفع الأسرار).config/appointment-params.ini: قيم افتراضية لـvisa_center,visa_category,visa_sub_categoryببادئاتDE-,IT-,PT-.config/browser.ini: نوع المتصفح،headless, وخيارات اختيارية.config/gpm.ini: تفعيل GPM،api_url,profile_id, مسارات API،auto_stop, رمز اختياري، واسم مجموعة اختياري.
- نسخ مثال GPM:
-
التشغيل (الطريقة الموصى بها)
python run_vfs_bot.py
- Windows:
run.bat(فحص Python والمكتبات، ترميز UTF-8، ثم تشغيل البوت). - Linux/macOS:
run.shأوpython3 run_vfs_bot.py.
- Windows:
-
تعديل السلوك داخل
run_vfs_bot.pysource_country_code,destination_country_codeappointment_paramsأوNonenumber_of_windows(عدد النوافذ المتوازية)- تجديد سياق البروفايل تقريباً كل 20 دقيقة
- فحص مستمر كل 5 ثوانٍ داخل
vfs_bot.runعند التفعيل
سطر أوامر مع:
-sc/--source-country-code-dc/--destination-country-code-ap/--appointment-paramsبصيغةمفتاح=قيمة,...
يعمل في حلقة مع انتظار من config/default.ini (interval).
ملاحظة: شغّل main.py من جذر المشروع (نفس مجلد run_vfs_bot.py). الملف يضيف جذر المشروع إلى sys.path تلقائياً.
نفّذ python scripts/... من جذر المشروع حتى يُحمَل config/ والمسارات النسبية بشكل صحيح.
| المسار | الوظيفة |
|---|---|
run_vfs_bot.py |
التشغيل الرئيسي، التحقق من الإعدادات، تعدد الخيوط، استدعاء البوت. |
main.py |
واجهة argparse وحلقة واحدة مع عد تنازلي. |
scripts/create_gpm_profile.py |
إنشاء بروفايل GPM تفاعلي عبر Selenium. |
scripts/create_gpm_profiles.py |
إنشاء دفعة بروفايلات (مثلاً حتى 100 في مجموعة VFS_Bot). |
scripts/populate_used_profiles.py |
تعبئة used_profiles.json من بروفايلات المجموعة. |
scripts/reset_used_profiles.py |
إعادة تعيين تتبع الاستخدام. |
scripts/test_gpm_connection.py |
اختبار اتصال GPM عبر HTTP. |
| المسار | الوصف |
|---|---|
vfs_bot/ |
المنطق الأساسي: vfs_bot.py (الفئة الأساسية)، vfs_bot_de.py, vfs_bot_it.py, vfs_bot_pt.py, vfs_bot_factory.py. |
notification/ |
تيليجرام، بريد، Twilio، والمصنع notification_client_factory.py. |
utils/ |
إعدادات (config_reader/config_writer)، مؤقت، GPM، إدارة البروفايلات، البروكسيات، الحسابات، البريد، التواريخ. |
| الملف | الغرض |
|---|---|
vfs-credential.ini |
بيانات الدخول لـ VFS |
vfs-url.ini |
روابط تسجيل الدخول حسب مصدر-وجهة |
default.ini |
interval لحلقة main.py |
appointment-params.ini |
معاملات الموعد الافتراضية لكل وجهة |
browser.ini |
نوع المتصفح والوضع headless وخيارات العرض |
gpm.ini |
إعدادات GPM الكاملة |
notification.ini |
إعدادات قنوات الإشعار |
| الملف | المحتوى |
|---|---|
| README_GPM.md | دليل GPM واستكشاف الأعطال |
| README_RUN.md | طرق التشغيل (ويندوز/لينكس/ماك) |
| PROFILE_MANAGEMENT_README.md | إدارة مجموعات البروفايلات وused_profiles.json |
| GITHUB.md | إنشاء المستودع على GitHub والرفع واستكشاف أخطاء git |
| README.md | التوثيق بالإنجليزية (الافتراضي في جذر المشروع) |
| diagrams/PROCESS.md | مخططات Mermaid: إعداد → متصفح/GPM → دخول VFS → مسار الموعد → فحص → إشعار. |
| diagrams/vfs-journey-overview.svg | صورة SVG توضيحية (عربي + إنجليزي). |
| العنصر | ملاحظات |
|---|---|
app.log |
سجل التشغيل (مُستثنى من git عادة) |
used_profiles.json |
تتبع بروفايلات GPM المستخدمة |
proxies.txt |
قائمة بروكسيات |
.env |
متغيرات بيئة محلية |
docs/images/error_email_field_not_found.png |
لقطة تشخيص عند فشل العثور على حقل البريد |
assets/ |
أصول ثابتة اختيارية (مثل صور QR) |
| الرمز | البلد |
|---|---|
| DE | ألمانيا |
| IT | إيطاليا |
| PT | البرتغال |
- راجع
app.log - تأكد أن مفتاح
vfs-url.iniيطابق رمز المصدر والوجهة - لـ GPM:
python scripts/test_gpm_connection.pyو README_GPM.md - على Windows استخدم
run.batلدعم العربية وUTF-8 في الطرفية
- Fork للمستودع
- فرع جديد للميزة
- commit وpush
- فتح Pull Request
مشروع مفتوح المصدر — الاستخدام وفق سياسة المستودع والمسؤولية الشخصية.
- Playwright
- بيئة GoLogin / GPM
- المساهمون
إذا كان هذا المفيداً لك، فالدعم اختياري ويساعد على الصيانة والتطوير. اختر الطريقة الأنسب لك.
| القناة | طريقة الدعم |
|---|---|
| PayPal | paypal.me/sofaapi |
| Binance Pay / المعرف UID | 1138751298 — الإرسال من تطبيق Binance (Pay / التحويل الداخلي عند توفره). |
| Binance — إيداع (الويب) | إيداع العملات المشفرة (Binance) — سجّل الدخول، اختر الأصل، ثم الشبكة BSC (BEP20). |
| عنوان BSC (للنسخ) | 0x94c5005229784d9b7df4e7a7a0c3b25a08fd57bc |
الشبكة: استخدم BSC (BEP-20) فقط. هذا العنوان مخصص لـ USDT (BEP-20) وBTC على BSC (Binance-Peg / «BTC» على BSC داخل التطبيق)، بما يتوافق مع شاشات الإيداع في Binance. لا ترسل بتكوين أصلي (on-chain BTC)، ولا ERC-20، ولا NFTs إلى هذا العنوان.
| USDT · BSC | BTC · BSC |
|---|---|
![]() |
![]() |

