المستودع: github.com/code-root/TikTokDeviceGenerator · الإصدارات: كل الإصدارات · الأحدث: v1.0.0
أداة سطح مكتب (واجهة Tkinter) لتوليد بيانات تسجيل جهاز وإرسالها إلى واجهة device register الخاصة بتطبيق TikTok، ثم حفظ النتائج في ملفات JSON مع دعم الدُفعات، تعدد الخيوط، والبروكسي الاختياري.
التوثيق: English — README.md · عربي (هذا الملف)
تنبيه: استخدم الأداة وفق سياسات الخدمة والقوانين المعمول بها. هذا المستند يشرح السلوك التقني فقط ولا يشجع على أي استخدام غير مصرح به.
وسوم وكلمات مفتاحية (تيك توك): إنشاء الحسابات وخطوة ربط الجهاز، واجهة device_register, device_id / install_id (IID)، توقيع/تجهيز حمولة التسجيل (Java ومكتبات أصلية عبر unidbg)، تسجيل أجهزة بالدُفعات، أتمتة مع بروكسي. على GitHub تُضاف للمستودع مواضيع مثل account-creation وdevice-registration وrequest-signing وtiktok-api وغيرها لتسهيل العثور على المشروع.
- ما الذي تفعله الأداة؟
- المتطلبات
- التثبيت
- تشغيل البرنامج
- الإصدارات (Releases)
- هيكل المشروع والملفات المهمة
- شرح واجهة المستخدم
- أماكن حفظ الملفات وتنسيق JSON
- البروكسي
- Java والمكتبات الأصلية
- استكشاف الأعطال
- الاعتمادات
- المطوّر والشركة والتواصل
- دعم المشروع
- توليد مدخلات عشوائية (مثل
openudid، معرّفات زمنية، نمط MAC، إلخ) وتمريرها إلى Java عبرunidbg.jarداخل مجلدLibs/مع تحميل المكتبات المناسبة لنظامك منLibs/prebuilt/<منصة>/. - استخراج حمولة ثنائية من مخرجات unidbg (تنسيق
hex=…في stdout). - إرسال POST إلى
https://log-va.tiktokv.com/service/2/device_register/مع ترويسات محددة ونوع المحتوىapplication/octet-stream;tt-data=a. - عند نجاح الاستجابة JSON، تخزين
device_idوinstall_id(والنصوص المقابلة إن وُجدت) مع بيانات إضافية عن الطلب والشبكة. - في وضع الدفعة: تشغيل عدة أجهزة بالتوازي عبر
ThreadPoolExecutorمع إمكانية إيقاف التشغيل قبل اكتمال كل المهام.
| المكوّن | الوصف |
|---|---|
| Python | إصدار يدعم الصيغة الحديثة. يُنصح بـ Python 3.10+. |
| حزم Python | مذكورة في requirements.txt — الأهم: requests[socks] لدعم بروكسي SOCKS. |
| Java | JVM قادرة على تشغيل Libs/unidbg.jar. على Windows 64-bit يجب أن تكون Java 64-bit لتتوافق مع Libs/prebuilt/win64/. |
| ملفات المشروع | وجود Libs/unidbg.jar ومجلد Libs/prebuilt/<منصة>/ المناسب (مثل win64، linux64، osx64). |
-
استنساخ أو تنزيل المشروع وفك الضغط إن لزم.
-
إنشاء بيئة افتراضية (اختياري):
python -m venv .venv .venv\Scripts\activate
-
تثبيت الاعتمادات:
pip install -r requirements.txt
-
التأكد من تثبيت JDK/JRE وتشغيل
java -version. على Windows، إن وُجدت Java 32-bit فقط بينما المشروع يستخدم مكتبات win64، فستفشل العملية — راجع قسم Java والمكتبات الأصلية.
python DeviceGenerator.pyلا يوجد وضع سطر أوامر منفصل؛ كل الإعدادات من الواجهة الرسومية.
راجع قسم الإصدارات (Releases) لتنزيل إصدارات مُعلَّمة أو ملفات جاهزة عند نشرها.
كل الإصدارات المُعلَّمة والملاحظات والمرفقات: github.com/code-root/TikTokDeviceGenerator/releases
- آخر وسم: v1.0.0
- عند نشر ملف
.exeجاهز سيظهر ضمن Assets في صفحة الإصدار؛ غالباً ما تبقى حاجة لمجلدLibs/وJava ما لم يذكر خلاف ذلك في وصف الإصدار.
TikTokDeviceGenerator-main/
├── DeviceGenerator.py # البرنامج الرئيسي (واجهة + منطق الدفعة + الطلبات)
├── requirements.txt
├── README.md # التوثيق بالإنجليزية
├── README.ar.md # هذا الملف (العربية)
├── assets/ # صور QR للدعم / الإيداع
├── scripts/ # مثل verify_environment.py
├── Libs/
│ ├── unidbg.jar
│ └── prebuilt/
├── Device/
└── generated_devices/
ثوابت مهمة في الكود:
DEVICES_PER_JSON_FILE = 50: عدد السجلات في كل ملف تحتDevice/.DEVICE_REGISTER_URL: عنوان طلب التسجيل.
- يعرض اسم الأداة ومعلومات مختصرة عن الدفعة والبروكسي والتصدير.
- Start: يبدأ دفعة جديدة بعد التحقق من المسارات (
unidbg.jar،Libs/prebuilt/<منصة>)، العدد، الخيوط، وصحة البروكسي إن وُجد. - Stop: يطلب إيقاف التشغيل؛ المهام الجارية قد تكتمل، ويُلغى انتظار البقية. تُحدَّث التقدم والملخص وفق ما اكتمل فعلياً.
- Open output folder: يفتح مجلد Output folder الحالي في مستكشف الملفات (على Windows عبر
os.startfile).
- Number of devices: عدد الأجهزة المطلوب توليدها في الدفعة (1–9999).
- Threads: عدد الخيوط المتوازية (1–64)، ويُقيَّد تلقائياً بحيث لا يتجاوز عدد الأجهزة.
- Output folder: مسار يُعرض في الحقل ويُفتح عند الضغط على Open output folder.
ملاحظة تقنية: في الإصدار الحالي منDeviceGenerator.pyتُكتب ملفات الأجهزة دائماً في<مجلد_المشروع>/Device/وملخصات الدُفعات في<مجلد_المشروع>/generated_devices/بغض النظر عن قيمة هذا الحقل. - Proxy URL (optional): بروكسي اختياري لجميع طلبات
device_registerفي الدفعة.
- حقول OpenUDID، Device ID، IID (install id) للقراءة فقط، مع أزرار Copy لكل حقل. تُحدَّث عند آخر تسجيل ناجح في الدفعة الحالية.
- شريط تقدم (بداية غير محددة أثناء «التحضير»، ثم محدد حسب
منجز/الإجمالي). - سطر يجمع النسبة/العدد مع رسالة الحالة القصيرة.
- يعرض لكل جهاز (عند توفره) تفاصيل الطلب: العنوان، الترويسات، معاينة hex لجسم الطلب، ثم الاستجابة أو رسالة الخطأ.
- عند الكتابة إلى ملفات
Device/devices_*.jsonيُزال حقلrequest_logمن السجل المخزَّن لتقليل حجم الملف؛ السجل يبقى للواجهة أثناء التشغيل.
- الملفات:
devices_001.json,devices_002.json, … - يستمر ترقيم
devices_XXXتلقائياً اعتماداً على أعلى رقم موجود في المجلد. - كل ملف يحتوي:
saved_at,part,devices_per_file,count، ومصفوفةdevices:{ "batch_index": <int>, "record": { ... } }. recordيشمل عند النجاح حقولاً مثلstatus,input,network,device_id,install_id,register_response, … بدونrequest_logعادة.
- عند كل تشغيل دفعة يُنشأ ملف:
_batch_summary_YYYYMMDD_HHMMSS.json - يحتوي:
requested_devices,threads,success,failed,completed_tasks,cancelled, مسارات المجلدات، حجم الدفعات، وnetwork(بما فيهاproxy_url_maskedإن وُجد بروكسي).
- تُملأ تلقائياً بمسار
<مجلد_المشروع>/generated_devices(دالةdefault_output_dir())؛ يمكنك تغيير الحقل ليفتح مجلداً آخر عند Open output folder فقط.
-
الصيغ المدعومة في الكود:
http,https,socks5,socks5h. -
أمثلة:
http://127.0.0.1:8080 http://user:password@host:port socks5h://127.0.0.1:1080 -
تثبيت
requests[socks]ضروري لاستخدام SOCKS. -
في بيانات JSON المُصدَّرة: يُخزَّن
proxy_url_masked(إخفاء كلمة المرور) ضمنnetworkعند تفعيل البروكسي.
-
يُستدعى الأمر من مجلد
Libs/تقريباً بالشكل:java -Djna.library.path="<prebuilt>" -Djava.library.path="<prebuilt>" -jar unidbg.jar "<message>" -
<prebuilt>=Libs/prebuilt/<نتيجة getsystem()>مثلwin64على Windows 64-bit. -
الدالة
get_java_exe()تحاول بالترتيب:JAVA_HOME, مسار شائع على Windows، ثمjavaمنPATH. على Windows 64-bit تُفضَّل JVM تُبلغ عن 64-Bit في مخرجاتjava -version.
معالج Apple Silicon (M1/M2/M3): حزمة JNA داخل unidbg.jar تتضمن لـ macOS نسخة x86_64 فقط من libjnidispatch. إذا كان java عندك arm64 فلن يُحمَّل المكتبة → خطأ UnsatisfiedLinkError على ملف مؤقت jna*.tmp. الحل: تثبيت JDK إنتل / x64 (مثل Eclipse Temurin macOS x64)، ضبط JAVA_HOME عليه، والتحقق أن java -XshowSettings:properties -version يعرض os.arch = x86_64. فحص سريع من جذر المشروع: python scripts/verify_environment.py.
| العرض | سبب محتمل |
|---|---|
Missing unidbg.jar |
الملف غير موجود في Libs/unidbg.jar. |
Missing native libraries |
مجلد Libs/prebuilt/<منصة> غير موجود أو لا يطابق جهازك. |
UnsatisfiedLinkError / Can't load library … jna*.tmp على Mac arm64 |
JVM من نوع arm64 مقابل JNA x86_64 داخل unidbg.jar — ثبّت JDK x64 ووجّه JAVA_HOME (راجع قسم Java أعلاه). |
أخطاء تحميل libcapstone.dylib (macOS) |
تأكد أن libcapstone.dylib رابط رمزي إلى libcapstone.4.dylib (ومثلها keystone → libkeystone.0.dylib). |
فشل unidbg / لا يظهر hex=… |
Java غير متوافقة، مسار خاطئ، أو مخرجات غير متوقعة (راجع Log). |
| أخطاء HTTP / JSON | شبكة، حظر، بروكسي خاطئ، أو استجابة غير JSON. |
| بروكسي SOCKS لا يعمل | عدم تثبيت requests[socks] أو صيغة URL غير مدعومة. |
| أخطاء Tk / أزرار | استخدم Python رسمياً مع Tk مدمج. |
- الكود مبني على عمل سابق مُنسب إلى xSaleh — شكراً للمساهمة الأصلية.
- واجهة العلامة والتطوير الحالية (مثل Storage TE) كما هي معرّفة داخل
DeviceGenerator.py.
| المطوّر | مصطفى الباجوري (Mostafa Al-Bagouri) |
| الشركة | Storage TE |
| واتساب | +20 100 199 5914 |
إن كانت الأداة مفيدة لك، يمكنك — بشكل اختياري — دعم استمرار التطوير والصيانة بأي طريقة تناسبك.
| القناة | الطريقة |
|---|---|
| PayPal | paypal.me/sofaapi |
| Binance Pay / UID | 1138751298 — إرسال من تطبيق بينانس (Pay / تحويل داخلي عند توفره). |
| بينانس — إيداع (الويب) | إيداع عملة مشفرة (Binance) — سجّل الدخول، اختر العملة، ثم شبكة BSC (BEP20). |
| عنوان BSC (للنسخ) | 0x94c5005229784d9b7df4e7a7a0c3b25a08fd57bc |
الشبكة: BSC (BEP-20) فقط. هذا العنوان لـ USDT (BEP-20) وBTC على BSC (النسخة المربوطة ببينانس كما في شاشة الإيداع)، وليس لـ بتكوين الشبكة الأصلية أو USDT إيثريوم (ERC-20) أو NFT — لا ترسلها إلى نفس العنوان.
| USDT · BSC | BTC · BSC |
|---|---|
![]() |
![]() |

