تعلم كيفية استخراج فيديوهات TikTok باستخدام Python

آخر تحديث في April 15, 2026

يضم TikTok اليوم نحو ، ويُقدَّر أن صانعي المحتوى يرفعون حوالي 23 مليون فيديو كل يوم. وإذا حاولت يومًا جمع بيانات حتى من جزء بسيط من هذا السيل الهائل، فأنت تعرف تمامًا حجم التحدي.

عادةً ما تبدأ القصة هكذا: تبحث عن "scrape TikTok videos with Python"، تنسخ مقطعًا من شرحٍ ما (أو تطلب من ChatGPT كتابته)، ثم تشغّله… ولا تحصل على شيء. HTML فارغ. خطأ 403. أو الرسالة المزعجة "Process finished with exit code 0" دون أي مخرجات. لقد رأيت هذه الدائرة تتكرر في عشرات مشاكل GitHub ومنشورات Reddit، وهذا بالضبط سبب إعداد هذا الدليل. سنستعرض ثلاث طرق بلغة Python تعمل فعلًا في 2025، مع شرح كامل لتنزيل ملفات الفيديو ‎.mp4‎ نفسها (وليس مجرد البيانات الوصفية — وهو ما تتوقف عنده أغلب الشروحات الأخرى)، بالإضافة إلى جدول مقارنة يساعدك على اختيار الطريقة الأنسب لحالتك. وإذا كنت لا تحتاج إلى Python أصلًا، فسأعرض أيضًا بدائل بدون برمجة مثل التي تمنحك البيانات نفسها في خطوتين تقريبًا.

ماذا يعني "استخراج فيديوهات TikTok" فعليًا؟

قبل الدخول في الكود، من المهم توضيح ما الذي يقصده الناس عندما يقولون "scrape TikTok videos" — لأن العبارة قد تشير إلى أمرين مختلفين تمامًا:

  1. استخراج البيانات الوصفية للفيديو: مثل الوصف، والهاشتاغات، وعدد الإعجابات، والتعليقات، والمشاركات، والمشاهدات، وتاريخ النشر، ومعلومات صاحب الحساب. وهذا هو ما تركز عليه معظم الشروحات.
  2. تنزيل ملفات الفيديو نفسها (.mp4): أي حفظ الفيديو على جهازك. وهذا هو ما يريده معظم الناس فعليًا عندما يكتبون "scrape TikTok videos" — وهو الجزء الذي يكاد لا يتطرق إليه أحد.

هذا الدليل يغطي الأمرين معًا. فكل طريقة أدناه تتيح لك استخراج البيانات الوصفية وأيضًا الحصول على روابط التنزيل اللازمة لحفظ ملفات ‎.mp4‎.

لماذا نستخراج فيديوهات TikTok باستخدام Python؟

مع ومع تحقيق TikTok Shop أكثر من ، فإن دوافع الأعمال للاستفادة من بيانات TikTok كبيرة جدًا. فيما يلي أكثر حالات الاستخدام شيوعًا:

حالة الاستخدامما الذي يتم استخراجهلمن يناسب
أبحاث المؤثرين والتسويقمعدلات التفاعل، أعداد المتابعين، أنواع المحتوى، أداء الهاشتاغاتفرق التسويق، الوكالات
استراتيجية المحتوىالهاشتاغات الرائجة، أنماط الفيديو الفيروسية، وتيرة النشرصناع المحتوى، مدراء وسائل التواصل
مراقبة العلامة التجاريةالإشارات، مدى الوصول للحملات، مشاعر الجمهورمدراء العلامات التجارية، فرق العلاقات العامة
تحليل المنافسينأداء فيديوهات المنافسين، المواد الإعلانية، قوائم TikTok Shopفرق التجارة الإلكترونية والمنتجات
أبحاث السوقالاتجاهات الناشئة، سلوك الجمهور، اكتشاف المنتجاتالمحللون، صناديق التحوط، شركات الأبحاث
الأرشفة والامتثالملفات الفيديو للمراجعة الداخلية أو حفظ السجلاتالفرق القانونية، الامتثال، الوكالات

الرهانات التجارية حقيقية: من المتوقع أن تصل عائدات إعلانات TikTok في الولايات المتحدة إلى 23.4 مليار دولار في 2026، كما أن صناع المحتوى في برامج التسويق بالعمولة يحققون في أهم فئات TikTok Shop. إذا كنت تعمل في التجارة الإلكترونية أو تسويق المؤثرين، فهذه البيانات ذات قيمة مالية مباشرة.

لماذا يفشل كود Python الأساسي مع TikTok؟

إذا كنت قد جرّبت شيئًا مشابهًا لهذا ولم تصل إلى نتيجة، فأنت لست وحدك:

1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ... ثم لا شيء مفيد داخل HTML

السبب بسيط: TikTok من أصعب المنصات في الاستخراج. فطلب requests.get() الأساسي يعيد غالبًا غلاف HTML شبه فارغ، لأن المحتوى الحقيقي يتم توليده عبر JavaScript داخل المتصفح. وفوق ذلك، يستخدم TikTok منظومة قوية لمكافحة الروبوتات تشمل الكشف السلوكي، وبصمة TLS، و تولّد تواقيع الطلبات، بالإضافة إلى محددات CSS ديناميكية تتغير من دون إشعار.

tiktok-anti-bot-wall.webp

ووفقًا لتقرير Imperva 2025 Bad Bot Report، تجاوزت حركة المرور الآلية حركة البشر للمرة الأولى في 2024 — إذ تمثل الروبوتات الآن . وTikTok يدرك ذلك جيدًا ويُحكم دفاعاته تبعًا لذلك.

إليك جدولًا تشخيصيًا سريعًا يساعدك على معرفة سبب المشكلة والانتقال إلى الطريقة المناسبة:

العَرَضالسبب المحتملالطريقة التي تحل المشكلة
HTML فارغ / لا توجد بياناتالمحتوى يُعرض عبر JavaScript؛ وrequests لا ينفّذ JavaScriptالطريقة 1 (JSON مخفي) أو الطريقة 3 (Playwright)
403 / تم رفض الوصولترويسات ناقصة أو غير صحيحة؛ اكتشاف روبوتاتالطريقة 1 مع الترويسات الصحيحة
يعمل مرة واحدة ثم يتوقفتحديد المعدل / حظر IPتدوير البروكسيات (جميع الطرق)
تظهر شاشة تسجيل الدخولالحاجة إلى جلسة / كوكيزالطريقة 3 (متصفح مع جلسة محفوظة)
كود ChatGPT لا يعيد شيئًاتغيّر بنية TikTok منذ بيانات تدريب النموذججميع الطرق الثلاث (محدثة)

عتبة تحديد المعدل تقارب 30–60 طلبًا في الدقيقة لكل IP قبل أن تبدأ القيود اللينة أو CAPTCHAs بالظهور. وعناوين IP الخاصة بمراكز البيانات تُكتشف خلال دقائق — لذا تُعد البروكسيات المنزلية أو المحمولة شبه ضرورية لأي حجم كبير من العمل.

نظرة عامة: 3 طرق لاستخراج فيديوهات TikTok باستخدام Python

إليك الخطة. لكل طريقة مزايا وقيود مختلفة، وسأغطيها جميعًا مع كود عملي يعمل:

  1. استخراج JSON المخفي — تحليل وسم <script> المضمّن في صفحات TikTok باسم __UNIVERSAL_DATA_FOR_REHYDRATION__. الأسرع والأبسط، ولا يحتاج متصفحًا.
  2. واجهة TikTok الداخلية (Internal API) — استدعاء نقطة النهاية غير الموثقة /api/post/item_list/ مباشرة للحصول على بيانات مجمعة مع ترقيم صفحات قائم على cursor.
  3. الأتمتة عبر المتصفح باستخدام Playwright — عرض الصفحات داخل متصفح headless للتعامل مع التمرير اللانهائي، والمحتوى الديناميكي، وشاشات تسجيل الدخول.

ويمكن أيضًا استخدام الطرق الثلاث لتنزيل ملفات الفيديو ‎.mp4‎ نفسها — وسأشرح ذلك في قسم مخصص بعد استعراض الطرق. كما يوجد جدول مقارنة كامل في النهاية لمساعدتك على اتخاذ قرار مدروس.

الطريقة 1: استخراج فيديوهات TikTok عبر JSON المخفي (مناسبة للمبتدئين)

أنصح بالبدء بهذه الطريقة. يضمّن TikTok كتلة JSON ضخمة داخل وسم <script> يحمل المعرف __UNIVERSAL_DATA_FOR_REHYDRATION__ في معظم تحميلات الصفحات. تحتوي هذه الكتلة على جميع بيانات الملف الشخصي والفيديو التي يعرضها JavaScript في الواجهة عادةً — وهذا يعني أنه يمكنك التقاطها بطلب HTTP واحد فقط، من دون الحاجة إلى متصفح.

ما الذي تحتاجه؟

  • Python 3.8+
  • requests (أو httpx)
  • beautifulsoup4 (أو parsel)
  • ترويسات صحيحة: User-Agent وReferer وAccept-Language

تثبيت المتطلبات:

1pip install requests beautifulsoup4

خطوة بخطوة: استخراج بيانات فيديو TikTok من وسم Script

الخطوة 1: إرسال طلب GET مع ترويسات متصفح واقعية.

هنا يفشل معظم المبتدئين. إذا أرسلت requests.get() عاديًا من دون ترويسات، فسيعيد TikTok خطأ 403 أو صفحة CAPTCHA. تحتاج على الأقل إلى User-Agent حديث وReferer.

1import requests
2from bs4 import BeautifulSoup
3import json
4url = "https://www.tiktok.com/@charlidamelio"
5headers = {
6    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
7    "Referer": "https://www.tiktok.com/",
8    "Accept-Language": "en-US,en;q=0.9",
9}
10resp = requests.get(url, headers=headers)

الخطوة 2: تحليل HTML وتحديد وسم الـ hydration script.

1soup = BeautifulSoup(resp.text, "html.parser")
2script_tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")

إذا كانت script_tag تساوي None، فإما أن TikTok حظرك (تحقق من رمز الحالة) أو أنه غيّر معرف الوسم (وهذا نادر لكنه ممكن).

الخطوة 3: تحميل محتوى الـ script على هيئة JSON.

1data = json.loads(script_tag.string)

الخطوة 4: التنقل داخل بنية JSON لاستخراج بيانات الفيديو.

توجد البنية داخل __DEFAULT_SCOPE__. في صفحة ملف شخصي:

1user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
2user_info = user_detail["userInfo"]
3# إحصاءات الملف الشخصي
4stats = user_info["stats"]
5print(f"Followers: {stats['followerCount']}, Likes: {stats['heartCount']}")
6# قائمة الفيديوهات (الصفحة الأولى فقط)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9    print(video["desc"])  # الوصف
10    print(video["stats"]["playCount"])  # المشاهدات
11    print(video["video"]["playAddr"])  # رابط تنزيل الفيديو (بدون علامة مائية)
12    print(video["video"]["downloadAddr"])  # رابط تنزيل الفيديو (مع علامة مائية)

الخطوة 5: استخراج روابط تنزيل الفيديو.

عادةً ما يوفر الحقل playAddr نسخة أنظف من الفيديو (غالبًا من دون علامة TikTok المائية)، بينما يحتوي downloadAddr على العلامة المائية المعتادة. وكلاهما رابط مباشر لملف ‎.mp4‎ — لكن يحتاجان إلى ترويسات محددة ليتم تنزيلهما بنجاح (وسنغطي ذلك في قسم التنزيل أدناه).

الآن ينبغي أن يكون لديك قائمة بكائنات البيانات الوصفية لكل فيديو، تتضمن الوصف والإحصاءات ووقت الإنشاء والهاشتاغات (داخل challenges[] وtextExtra) وروابط الفيديو المباشرة.

قيود طريقة JSON المخفي

  • تلتقط فقط بيانات التحميل الأول للصفحة — أي عادةً أول ~30 فيديو في الملف الشخصي
  • لا تتعامل مع التمرير اللانهائي أو ترقيم الصفحات (لا توجد "صفحة تالية" يمكن طلبها)
  • إذا غيّر TikTok معرف الـ script أو بنية JSON، سيتعطل المحلل (يحدث هذا دوريًا — وتساعد على اكتشاف ذلك مبكرًا)
  • الأفضل لها: الاستخراج السريع لملف شخصي، أو سحب بيانات لمرة واحدة، أو عندما تحتاج أحدث الفيديوهات فقط

الطريقة 2: استخراج فيديوهات TikTok عبر الـ Internal API

واجهة TikTok الأمامية لا تُحمّل كل الفيديوهات دفعة واحدة — بل تُجري طلبات XHR إلى نقاط نهاية داخلية أثناء التمرير. وأهم نقطة لفيديوهات المستخدمين هي /api/post/item_list/. يمكنك استدعاء هذه النقطة مباشرة من Python، ما يمنحك ترقيم صفحات قائمًا على cursor وإمكانية الوصول إلى جميع فيديوهات الملف الشخصي، وليس الصفحة الأولى فقط.

كيف تجد نقطة النهاية الداخلية؟

افتح Chrome DevTools على صفحة ملف شخصي في TikTok، ثم انتقل إلى تبويب Network، وفلتر حسب XHR، ثم مرّر لأسفل. ستشاهد طلبات إلى عناوين مثل:

1https://www.tiktok.com/api/post/item_list/?WebIdLastTime=...&aid=1988&count=35&cursor=0&secUid=...

المعلمات الأساسية هي:

  • secUid — المعرّف الفريد للملف الشخصي (يمكنك استخراجه من JSON في الطريقة 1 ضمن userInfo.user.secUid)
  • cursor — موضع الترقيم (يبدأ من 0، وكل استجابة تعطي قيمة cursor التالية)
  • count — عدد العناصر في الصفحة (عادةً 30–35)

خطوة بخطوة: استعلام TikTok Internal API باستخدام Python

الخطوة 1: الحصول على secUid للملف المطلوب.

يمكنك أخذه من JSON المخفي (الطريقة 1) أو من HTML الخاص بالصفحة.

الخطوة 2: إنشاء طلب الـ API وإرساله.

1import requests
2import json
3sec_uid = "MS4wLjABAAAA..."  # من الطريقة 1
4api_url = "https://www.tiktok.com/api/post/item_list/"
5params = {
6    "aid": "1988",
7    "secUid": sec_uid,
8    "count": 35,
9    "cursor": 0,
10}
11headers = {
12    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
13    "Referer": "https://www.tiktok.com/",
14}
15resp = requests.get(api_url, params=params, headers=headers)
16data = resp.json()

الخطوة 3: تحليل الاستجابة.

كل عنصر في data["itemList"] يحتوي على بنية الفيديو نفسها الموجودة في الطريقة 1 — مثل desc وstats وvideo.playAddr وvideo.downloadAddr وغيرها.

الخطوة 4: التنقل عبر جميع الفيديوهات.

1all_videos = []
2cursor = 0
3has_more = True
4while has_more:
5    params["cursor"] = cursor
6    resp = requests.get(api_url, params=params, headers=headers)
7    data = resp.json()
8    items = data.get("itemList", [])
9    all_videos.extend(items)
10    has_more = data.get("hasMore", False)
11    cursor = data.get("cursor", 0)
12    print(f"Fetched {len(items)} videos, total: {len(all_videos)}, hasMore: {has_more}")
13print(f"Total videos scraped: {len(all_videos)}")

في كل دورة، ستحصل على دفعة جديدة من الفيديوهات مع cursor جديد. وتستمر الحلقة حتى تصبح hasMore = False.

قيود طريقة الـ Internal API

  • يغيّر TikTok هذه النقاط النهائية والمعلمات المطلوبة بشكل متكرر — لذا فهي الأعلى من حيث الحاجة إلى الصيانة. خلال الأشهر الأخيرة، بدأت بعض الطلبات تتطلب msToken أو X-Bogus أو معلمات توقيع أخرى يولدها TikTok عبر (وبصراحة: محاكاة ذلك بلغة Python الخالصة ليست بسيطة).
  • قد تتطلب ملفات تعريف الارتباط للجلسة أو رموزًا إضافية لبعض أنواع البيانات
  • يبقى تحديد المعدل حسب الـ IP قائمًا — لذلك يوصى بتدوير البروكسيات
  • إذا بدأت بالحصول على مصفوفات itemList فارغة، فغالبًا أن msToken لديك أصبح قديمًا (يُعاد تدويره تقريبًا كل 10 ثوانٍ في المتصفح)
  • الأفضل لها: الاستخراج الكثيف عندما تحتاج جميع فيديوهات الملف الشخصي، ولا يكفيك قيد الصفحة الأولى في الطريقة 1

الطريقة 3: استخراج فيديوهات TikTok باستخدام Playwright (أتمتة المتصفح)

عندما تصطدم الطريقتان الأوليان بالعقبات — متطلبات تسجيل الدخول، أو CAPTCHAs، أو معلمات التوقيع التي لا يمكنك محاكاتها — يكون Playwright هو الحل البديل. فهو يشغّل متصفحًا حقيقيًا (headless)، ويتصفح TikTok مثل المستخدم العادي، ويمكنه التعامل مع عرض JavaScript، والتمرير اللانهائي، وحتى الجلسات الموثقة.

إعداد Playwright لاستخراج TikTok

ثبّت Playwright وملفات المتصفح الخاصة به:

1pip install playwright
2playwright install firefox

أنصح باستخدام Firefox بدل Chromium عند استخراج TikTok. فاختبارات المجتمع تُظهر باستمرار مع Firefox، كما أن نظام كشف الروبوتات في TikTok صارم بشكل خاص مع المتصفحات headless المعتمدة على Chromium.

ولمزيد من التخفي، يمكن دمج Playwright مع (نسخة معدلة من Playwright) أو (Firefox معدل على مستوى C++ لمكافحة الاكتشاف). وفي ، يحقق Camoufox درجات تخفٍ شبه مثالية أمام أبرز خدمات كشف الروبوتات.

خطوة بخطوة: استخراج فيديوهات ملف TikTok باستخدام Playwright

الخطوة 1: تشغيل متصفح Firefox headless والانتقال إلى الملف الشخصي.

1import asyncio
2from playwright.async_api import async_playwright
3import json
4async def scrape_tiktok_profile(username):
5    async with async_playwright() as p:
6        browser = await p.firefox.launch(headless=True)
7        context = await browser.new_context(
8            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0",
9            viewport={"width": 1280, "height": 720},
10        )
11        page = await context.new_page()
12        await page.goto(f"https://www.tiktok.com/@{username}", wait_until="networkidle")

الخطوة 2: انتظار تحميل شبكة الفيديوهات.

1        # انتظار ظهور عناصر الفيديو
2        await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

إذا عرض TikTok طبقة "Something went wrong"، فقد تحتاج إلى الضغط على زر إعادة المحاولة:

1        retry_btn = page.locator('button:has-text("Retry")')
2        if await retry_btn.count() &gt; 0:
3            await retry_btn.click()
4            await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

الخطوة 3: استخراج البيانات من JSON المخفي حتى داخل Playwright.

النهج الأكثر موثوقية يظل هو التقاط JSON الخاص بالـ hydration، حتى عند استخدام متصفح:

1        script_el = page.locator("#__UNIVERSAL_DATA_FOR_REHYDRATION__")
2        raw_json = await script_el.inner_text()
3        data = json.loads(raw_json)
4        # نفس التنقل داخل JSON كما في الطريقة 1
5        user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
6        videos = user_detail.get("itemList", [])

الخطوة 4: التعامل مع التمرير اللانهائي للحصول على المزيد من الفيديوهات.

إذا كنت تحتاج إلى أكثر من الفيديوهات الأولى الـ ~30، فقم بالتمرير لأسفل والتقاط استجابات XHR إضافية:

1        all_videos = list(videos)
2        # اعتراض استجابات الـ API أثناء التمرير
3        api_responses = []
4        async def capture_response(response):
5            if "/api/post/item_list" in response.url:
6                try:
7                    body = await response.json()
8                    api_responses.append(body)
9                except:
10                    pass
11        page.on("response", capture_response)
12        # التمرير لأسفل لتحفيز تحميل المزيد
13        for _ in range(5):  # عدّل عدد مرات التمرير حسب الحاجة
14            await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
15            await asyncio.sleep(2)
16        # جمع الفيديوهات من الاستجابات المعترضة
17        for api_resp in api_responses:
18            items = api_resp.get("itemList", [])
19            all_videos.extend(items)
20        print(f"Total videos: {len(all_videos)}")
21        await browser.close()
22        return all_videos
23# التشغيل
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))

الآن يجب أن تكون لديك قائمة بعناصر الفيديو من التحميل الأول للصفحة، إضافةً إلى أي صفحات إضافية تم تحميلها عبر التمرير.

قيود طريقة Playwright

  • أبطأ طريقة بفارق واضح (عرض صفحة كامل، ورحلات شبكية، وتأخيرات التمرير)
  • تستهلك موارد أعلى — فكل نسخة من المتصفح تستهلك قدرًا معتبرًا من الذاكرة والمعالج
  • لا تزال عرضة للحظر حسب الـ IP على نطاق واسع — لذا من الأفضل إقرانها بتدوير البروكسيات
  • الأفضل لها: التفاعلات المعقدة، أو المحتوى المحجوب بتسجيل الدخول، أو التعامل مع CAPTCHAs، أو عندما تفشل الطريقتان 1 و2

كيفية تنزيل فيديوهات TikTok (.mp4) باستخدام Python

هذا هو القسم الذي يملأ أكبر فجوة في معظم شروحات استخراج TikTok الأخرى. فـ استخراج البيانات الوصفية مفيد، لكن معظم من يبحث عن "scrape TikTok videos" يريد ملفات الفيديو نفسها.

يضمّن TikTok روابط التنزيل داخل كائن بيانات الفيديو:

  • playAddr — عادةً النسخة بدون علامة مائية أو بعلامة أقل وضوحًا
  • downloadAddr — النسخة التي يقصدها TikTok للتنزيل داخل التطبيق (وتتضمن العلامة المائية الخاصة بـ TikTok)

كلتا الرابطين حسّاسان زمنيًا وينتهيان بعد فترة قصيرة (عادةً بضع ساعات)، لذلك يجب تنزيلهما سريعًا بعد استخراجهما.

خطوة بخطوة: تنزيل ملف فيديو TikTok

الخطوة 1: استخراج رابط الفيديو من أيٍّ من الطرق الثلاث أعلاه.

1video_url = video["video"]["playAddr"]  # نسخة بدون علامة مائية
2# أو
3video_url = video["video"]["downloadAddr"]  # مع العلامة المائية

الخطوة 2: إرسال طلب GET بالترويسات الصحيحة.

هذه هي الخطوة التي تربك الكثيرين. إذا استخدمت فقط requests.get(video_url) فستحصل على 403. يتحقق TikTok من ترويسة Referer ويتوقع User-Agent يشبه المتصفح.

1import requests
2headers = {
3    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
4    "Referer": "https://www.tiktok.com/",
5}
6resp = requests.get(video_url, headers=headers, stream=True)

الخطوة 3: كتابة المحتوى المستجاب إلى ملف ‎.mp4‎.

استخدم stream=True واكتب على دفعات — ففيديوهات TikTok قد تكون كبيرة، ولا تريد تحميل الملف كاملًا في الذاكرة:

1video_id = video["id"]
2filename = f"tiktok_{video_id}.mp4"
3with open(filename, "wb") as f:
4    for chunk in resp.iter_content(chunk_size=1024 * 1024):  # دفعات 1MB
5        if chunk:
6            f.write(chunk)
7print(f"Downloaded: {filename}")

الآن ينبغي أن يكون لديك ملف ‎.mp4‎ قابل للتشغيل على جهازك المحلي.

التنزيل مع العلامة المائية أم بدونها؟

يخزن TikTok نسختين من كل فيديو: واحدة بعلامة مائية وأخرى من دونها. غالبًا ما يوفر رابط playAddr نسخة أنظف (النسخة التي يستخدمها المشغّل)، بينما يتضمن downloadAddr العلامة المائية الخاصة بـ TikTok مع اسم المستخدم لصاحب المحتوى.

ملاحظة سريعة هنا بخصوص الأخلاقيات: وجود العلامة المائية يهدف إلى نسب المحتوى إلى صاحبه. إذا كنت تنزّل الفيديوهات لأغراض البحث أو التحليل أو المراجعة الداخلية، فعادةً ما يكون استخدام playAddr مقبولًا. أما إذا كنت تعيد نشر المحتوى أو توزيعه، فإن إزالة نسبة المحتوى لصاحبه تثير أسئلة أخلاقية وقانونية تتعلق بحقوق النشر. وسنعود إلى ذلك في القسم القانوني أدناه.

ولحزمة تنزيل أكثر متانة، يمكنك التفكير في — إذ يتولى مستخرج TikTok فيه حسابات التوقيع وحلّ الروابط تلقائيًا، فلا تحتاج إلى إدارة الترويسات وانتهاء الرموز بنفسك.

مقارنة جنبًا إلى جنب: أي طريقة Python يجب أن تستخدم؟

إليك جدول المقارنة الذي كنت أتمنى لو كان أمامي عندما بدأت العمل على مشاريع استخراج TikTok:

المعيارالطريقة 1: JSON المخفيالطريقة 2: Internal APIالطريقة 3: Playwright
مستوى الصعوبةمبتدئمتوسطمتوسط
السرعةسريعة (طلب واحد لكل صفحة)سريعة (واجهة JSON)بطيئة (عرض صفحة كامل)
مقاومة مكافحة الروبوتاتمتوسطةمنخفضة (تتغير النقاط النهائية)عالية (تحاكي متصفحًا حقيقيًا)
تنزيل فيديو ‎.mp4‎؟نعم (استخراج playAddr)نعم (الرابط في الاستجابة)نعم (اعتراض الشبكة)
التعامل مع التمرير اللانهائيلا (الصفحة الأولى فقط)نعم (ترقيم cursor)نعم (محاكاة التمرير)
الحاجة إلى بروكسي عند التوسعنعمنعمنعم
متطلبات الصيانةمتوسطة (تغيّر بنية JSON)عالية (تتغير النقاط النهائية/التواقيع كثيرًا)منخفضة-متوسطة (المتصفح يتكيف)
الأفضل لـاستخراج سريع لمرة واحدةاستخراج جماعي، جميع الفيديوهاتالمحتوى المحجوب أو المعقد

توصيتي:

  • هل تحتاج فقط إلى لقطة سريعة لملف شخصي واحد؟ ابدأ بالطريقة 1. إعدادها يستغرق نحو 30 ثانية وتعيد البيانات في أقل من ثانية لكل صفحة.
  • هل تحتاج إلى جميع فيديوهات الملف الشخصي مع الترقيم؟ الطريقة 2 هي الخيار المناسب، لكن كن مستعدًا للصيانة عند تغيّر معلمات API الخاصة بـ TikTok.
  • هل تتعامل مع شاشات تسجيل الدخول أو CAPTCHAs أو تحتاج أعلى مستوى من المرونة؟ استخدم الطريقة 3 مع Playwright. هي أبطأ وأثقل، لكنها الأصعب على TikTok في الحظر.

عمليًا، أبدأ غالبًا بالطريقة 1 ولا أنتقل إلى الطريقة 2 أو 3 إلا عندما أصطدم بالقيود. وهذا يبقي البنية بسيطة والتكلفة منخفضة.

لا تحتاج إلى Python؟ استخرج فيديوهات TikTok بأدوات بدون برمجة

كثير ممن يبحثون عن "scrape TikTok videos with Python" لا يحتاجون إلى Python أصلًا. هم يحتاجون فقط إلى البيانات. إذا كنت محلل تسويق يريد بيانات وصفية لفيديوهات من عدد قليل من ملفات المنافسين، أو مدير علامة تجارية يتابع الإشارات، فإن إعداد بيئة Python مع تدوير البروكسيات والتعامل مع التواقيع سيكون مبالغة.

python-vs-nocode-ai-comparison.webp

إليك مقارنة صريحة بين الطرق:

النهجمستوى المهارةالتكلفةالصيانةالأفضل لـ
Python (DIY)متوسط فأعلىمجاني (+ تكلفة البروكسي)عالية (تتعطل السكربتات)تحكم كامل، ومسارات عمل مخصصة
Thunderbit (إضافة Chrome)مبتدئتتوفر خطة مجانيةلا شيء (الذكاء الاصطناعي يقرأ الموقع من جديد كل مرة)استخراج سريع لبيانات الفيديو، والتصدير إلى Sheets/Excel
Apify TikTok Scraperمبتدئمدفوع (حسب التشغيل)منخفضة (يتمتّع بصيانة من Apify)تشغيلات مجمعة تلقائية وفق جدول
TikAPIمطوّراشتراك مدفوعمتوسطةبناء تطبيقات فوق بيانات TikTok

كيف يتعامل Thunderbit مع استخراج TikTok

هو AI web scraper الذي بنيناه في Thunderbit، ويعمل بطريقة مختلفة عن أدوات الاستخراج التقليدية. فبدل الاعتماد على محددات CSS أو قواعد XPath الجاهزة (التي تتعطل كلما غيّر TikTok شكل الصفحة)، يقرأ ذكاء Thunderbit الاصطناعي بنية الصفحة من جديد في كل مرة ويقترح الأعمدة المناسبة — مثل الوصف، والإعجابات، والهاشتاغات، ورابط الفيديو، وصاحب الحساب، وغيرها.

العملية فعلية من خطوتين فقط:

  1. افتح ملف TikTok في Chrome، ثم انقر إضافة Thunderbit واضغط "AI Suggest Fields". سيقوم Thunderbit بمسح الصفحة واقتراح بنية جدول.
  2. راجع الأعمدة المقترحة وعدّلها إن لزم، ثم اضغط "Scrape".

تُصدَّر البيانات مباشرة إلى Google Sheets أو Excel أو Airtable أو Notion. لا محددات CSS تحتاج إلى صيانة، ولا كود لتصحيح أخطائه، ولا إعداد للبروكسيات. بالنسبة لمحلل التسويق الذي يحتاج إلى بيانات الفيديو من عدد قليل من الملفات الشخصية، فهذا أسرع بشكل ملموس من إعداد بيئة Python — كما أنه لا يتعطل عندما يحدّث TikTok الواجهة الأمامية (وهو ما يحدث، بحسب تقارير المجتمع، كل بضعة أسابيع).

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

يمكنك تجربته مجانًا عبر . ولمعرفة المزيد عن طريقة عمله، راجع .

الضوابط القانونية والأخلاقية لاستخراج TikTok

لا يتناول أي من الشروحات الأعلى تصنيفًا تقريبًا مسألة القانونية، وهو إغفال مهم بالنظر إلى أن TikTok اتخذ بالفعل إجراءات قانونية ضد خدمات الاستخراج. إليك ما تحتاج إلى معرفته.

شروط خدمة TikTok (§ 4.1) تحظر صراحةً الوصول الآلي. ومخالفة الشروط تعد خرقًا تعاقديًا، لا جريمة جنائية — لكنها قد تؤدي إلى حظر الحساب أو حظر الـ IP أو اتخاذ إجراءات مدنية.

المشهد القانوني أكثر مرونة مما يعتقده الكثيرون بالنسبة للبيانات العامة. القضية المرجعية الأبرز هي Meta Platforms v. Bright Data (المحكمة الجزئية الشمالية لولاية كاليفورنيا، يناير 2024)، حيث قضت المحكمة بأن استخراج البيانات المتاحة للعامة أثناء تسجيل الخروج لا ينتهك شروط خدمة Meta. وقد أسقطت Meta القضية وتنازلت عن الاستئناف. أما حكم hiQ v. LinkedIn السابق في الدائرة التاسعة (وأُعيد تأكيده بعد Van Buren) فقد رسّخ أن استخراج البيانات المتاحة للعامة لا يُعد انتهاكًا لقانون CFAA — رغم أن hiQ انتهت إلى التسوية ودفع 500 ألف دولار والموافقة على أمر قضائي دائم، مما يوضح أن تطبيق شروط الخدمة قد يكون مؤلمًا بالفعل.

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

إرشادات عملية:

  • حدّد معدل الطلبات (لا تهاجم خوادم TikTok بشكل كثيف)
  • لا تستخرج حسابات خاصة أو محتوى خاصًا بالقُصّر
  • لا تعِد توزيع المحتوى المحمي بحقوق النشر لأغراض تجارية
  • احترم robots.txt (TikTok يمنع معظم عمليات الزحف الآلي)
  • تنزيل الفيديوهات لأغراض البحث الشخصي أو التحليل يختلف عن إعادة نشرها — افهم هذا الفرق

تنبيه: هذا محتوى تعليمي وليس مشورة قانونية. إذا كنت تبني منتجًا تجاريًا يعتمد على بيانات مستخرجة من TikTok، فاستشر محاميًا.

الخلاصة: أهم النقاط

استخراج TikTok في 2025 هدف متحرك. فطبقة مكافحة الروبوتات في المنصة من بين الأكثر تطورًا على الويب، والأساليب الساذجة (مثل requests العادي، أو المقاطع التي يولدها ChatGPT، أو الشروحات القديمة) ستفشل. لكن بالطريقة المناسبة، يصبح الأمر ممكنًا تمامًا.

إليك ما يجب أن تتذكره:

  • الطريقة 1 (JSON المخفي) هي الأسرع والأبسط — ابدأ بها عند الحاجة إلى استخراج سريع لملف شخصي.
  • الطريقة 2 (Internal API) تمنحك الترقيم والوصول الجماعي، لكنها الأعلى من حيث الصيانة مع تغيّر النقاط النهائية ومتطلبات التوقيع.
  • الطريقة 3 (Playwright) هي الأكثر قدرة على الصمود أمام إجراءات مكافحة الروبوتات، لكنها تأتي على حساب السرعة واستهلاك الموارد.
  • جميع الطرق الثلاث يمكنها استخراج روابط تنزيل الفيديو — وهذا الدليل هو الوحيد الذي يشرح لك فعليًا كيفية تنزيل ملفات ‎.mp4‎ بالترويسات الصحيحة.
  • لغير التقنيين، يوفّر مسارًا أسرع فعلًا للحصول على البيانات نفسها من دون كتابة الكود أو صيانته. ونهجه المعتمد على الذكاء الاصطناعي يعني أنه لا يتعطل عندما يغيّر TikTok تصميم صفحاته — وهو أمر يحدث، بحسب تقارير المجتمع، أكثر مما يفضله أي شخص.

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

هل تريد التعمق أكثر في تقنيات استخراج البيانات من الويب؟ راجع أدلتنا حول ، و، و.

الأسئلة الشائعة

هل من القانوني استخراج فيديوهات TikTok باستخدام Python؟

استخراج البيانات المتاحة للعامة يقع في منطقة رمادية قانونيًا، وليس انتهاكًا واضحًا وصريحًا. حكم Meta v. Bright Data (2024) يدعم الرأي القائل بأن استخراج البيانات العامة أثناء تسجيل الخروج لا يخالف شروط خدمة المنصة. ومع ذلك، فإن شروط TikTok نفسها تحظر الوصول الآلي صراحةً، كما تنطبق التزامات GDPR/CCPA على البيانات الشخصية. الأمر ليس غير قانوني بالمعنى الذي يخشاه معظم الناس، لكنه ليس خاليًا من المخاطر أيضًا. استشر مختصًا قانونيًا بشأن حالتك الخاصة.

ما أفضل مكتبة Python لاستخراج TikTok؟

يعتمد ذلك على منهجك. لاستخراج JSON المخفي (الطريقة 1)، يكفيك requests مع beautifulsoup4. ولطلبات Internal API (الطريقة 2)، يعمل requests أو httpx جيدًا. أما لأتمتة المتصفح (الطريقة 3)، فإن playwright هو المعيار الحالي — وقد تجاوز Selenium في الاعتماد ضمن المشاريع الجديدة، مع مقابل نحو 53 مليونًا لـ Selenium. كما تستحق واجهة TikTok-Api (~6.3K نجمة على GitHub) النظر إذا أردت طبقة أعلى من التجريد، رغم أنها قد تكون هشّة.

هل يمكنني تنزيل فيديوهات TikTok بدون علامة مائية باستخدام Python؟

نعم. تتضمن بيانات TikTok نفسها رابط playAddr الذي يوفر عادةً نسخة من الفيديو من دون العلامة المائية القياسية. يوضح هذا الدليل كيفية استخراج هذا الرابط من أي من الطرق الثلاث وتنزيل ملف ‎.mp4‎ بالترويسات المناسبة. أما الحقل downloadAddr فيتضمن العلامة المائية.

لماذا يعيد سكربت TikTok بيانات فارغة؟

السبب الأكثر شيوعًا هو أن TikTok يحتاج إلى JavaScript لعرض المحتوى. فـ requests.get() الأساسية تجلب فقط HTML الغلاف — بينما تكون البيانات الحقيقية إما داخل وسم JSON مخفي (الطريقة 1) أو يتم تحميلها ديناميكيًا عبر JavaScript (الطريقة 3). إذا كنت تحصل على HTML فارغ، فجرّب الطريقة 1 أولًا. وإن لم تنجح، فتحقق من الترويسات (غياب Referer هو السبب الأول لأخطاء 403) أو انتقل إلى الطريقة 3 باستخدام Playwright.

كيف أتجنب الحظر أثناء استخراج TikTok؟

استخدم ترويسات متصفح واقعية (بما في ذلك User-Agent وReferer وAccept-Language)، ودوّر البروكسيات المنزلية أو المحمولة (عناوين IP لمراكز البيانات تُكتشف خلال دقائق)، وأضف تأخيرات عشوائية بين الطلبات (من 1 إلى 3 ثوانٍ على الأقل)، وتجنب الاستخراج بأحجام هائلة جدًا. تمنحك الطريقة 3 (Playwright) أعلى درجة من المقاومة للحظر لأنها تحاكي جلسة متصفح حقيقية. ولأي حجم عمل جاد، يجب احتساب تكلفة البروكسيات — إذ تتراوح البروكسيات المنزلية الاقتصادية عند نحو لدى كبار المزودين.

  • اعرف المزيد
Topics
استخراج TikTok باستخدام Pythonاستخراج بيانات TikTok باستخدام Pythonسكربت Python لاستخراج TikTokكيفية استخراج فيديوهات TikTok باستخدام Python
جدول المحتويات

جرّب Thunderbit

اسحب العملاء المحتملين وبيانات أخرى في نقرتين فقط. مدعوم بالذكاء الاصطناعي.

احصل على Thunderbit مجاني
استخرج البيانات باستخدام الذكاء الاصطناعي
انقل البيانات بسهولة إلى Google Sheets أو Airtable أو Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week