Instagram وTikTok هما أصعب هدفين رئيسيين في الكشط — أصعب من Google، وأصعب من Amazon. كلاهما يُجري تسجيلًا عدوانيًا لعناوين IP، وكلاهما يبصم عميلك على طبقات متعددة، وكلاهما مشهور بـالحظر الناعم: فبدلًا من رمز 403 نظيف، تحصل على جدران تسجيل دخول، أو JSON فارغ، أو "challenge_required"، أو نتائج مبتورة بصمت. كاشطك "يعمل" وبياناتك خردة.
يغطّي هذا الدليل كيف تحظرك كل منصة فعلًا في 2026، وإعداد البروكسي الذي يصمد، وأنماط الطلب التي تُبقي الحسابات والجلسات حيّة. (لـإدارة حسابات متعددة بدلًا من الكشط، انظر دليلَي AdsPower/Multilogin وGoLogin/Dolphin Anty.)
challenge_required. كما أن تسامح Instagram مع عناوين IP السكنية المشتركة/المُستغَلّة منخفض — جودة المجمّع تهمّ هنا أكثر من أي مكان آخر تقريبًا.X-Bogus/توقيع تولّدها JavaScript مموَّهة. الكشط بـ HTTP الخالص يعني هندسة عكسية لتواقيع تتغير كل بضعة أسابيع — معظم الفرق تُشغّل متصفحًا حقيقيًا (Playwright) بدلًا من ذلك وتعترض استجابات JSON.itemList فارغة تبدو كـ"لا مزيد من المحتوى").# One identity = one sticky session, country-pinned
socks5h://USERNAME:[email protected]:913
التدوير لكل طلب مناسب للصفحات العامة المجهولة بحجم منخفض. لحظة دخول ملف تعريف ارتباط جلسة أو تسجيل دخول، انتقل إلى sticky — ملف تعريف الارتباط وعنوان IP يجب أن يتحركا كهوية واحدة (لماذا).
from curl_cffi import requests
PROXY = {"https": "socks5h://USERNAME:[email protected]:913"}
# Public profile JSON (no login) - impersonate Chrome's TLS
r = requests.get(
"https://www.instagram.com/api/v1/users/web_profile_info/?username=nasa",
impersonate="chrome",
headers={"X-IG-App-ID": "936619743392459"},
proxies=PROXY,
)
data = r.json()["data"]["user"]
print(data["edge_followed_by"]["count"])
راقب الاستجابة، لا رمز الحالة: رمز 200 مع {"data": null} أو إعادة توجيه إلى /accounts/login/ يعني أن ميزانية هذا العنوان IP قد نفدت — دوّر الهوية، وتراجع، ثم استأنف.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "us.jibaoproxy.com:913",
"username": "USERNAME", "password": "PASSWORD",
})
page = browser.new_page()
items = []
# Let TikTok's own JS sign the requests; we just read the answers
page.on("response", lambda res:
items.extend(res.json().get("itemList", []))
if "/api/post/item_list" in res.url else None)
page.goto("https://www.tiktok.com/@nasa")
for _ in range(5):
page.mouse.wheel(0, 2500)
page.wait_for_timeout(1800) # human-ish scroll cadence
print(len(items), "videos captured")
هذا يتجنّب الهندسة العكسية للتوقيع كليًا: الصفحة تولّد X-Bogus صالحًا بنفسها، وأنت تحصد JSON. يجب ضبط البروكسي عند إطلاق المتصفح — نزوات المصادقة مغطّاة في مصادقة بروكسي Playwright.
challenge_required، وitemList فارغ مع hasMore: true.| TikTok | ||
|---|---|---|
| أفضل مسار وصول | نقاط نهاية ويب GraphQL/API، curl_cffi | Playwright + اعتراض الاستجابة |
| نوع البروكسي | سكني sticky لكل هوية | سكني، مطابق جغرافيًا للسوق |
| عناوين IP لمراكز البيانات | جدار تسجيل دخول / تحدٍّ | كابتشا فوري |
| إشارة الحظر الناعم | إعادة توجيه تسجيل الدخول، challenge_required، بيانات null | itemList فارغ، صفحة كابتشا |
| الحساسية الجغرافية | متوسطة | عالية — المحتوى يختلف حسب البلد |
مثبّتة على بلد، وجلسات sticky، وASN نظيفة — 500 ميجابايت رصيد مجاني، بلا حاجة إلى بطاقة.
ابدأ التجربة المجانيةيحصل المستخدمون الجدد على 500MB عند التسجيل، بالإضافة إلى مكافأة على أول عملية شحن. العرض لفترة محدودة.