Instagram و TikTok دو تا از سختترین اهداف اصلی در دنیای اسکرپینگ هستند — سختتر از Google، سختتر از Amazon. هر دو امتیازدهی تهاجمی روی IP اجرا میکنند، هر دو کلاینت شما را در چند لایه فینگرپرینت میکنند، و هر دو به خاطر بلاک نرم (soft block) معروفاند: به جای یک 403 تمیز، با دیوار لاگین، JSON خالی، «challenge_required» یا نتایج بیسروصدا ناقصشده روبهرو میشوید. اسکرپر شما ظاهراً «کار میکند» ولی دادهاش آشغال است.
این راهنما توضیح میدهد که هر پلتفرم در سال 2026 دقیقاً چطور شما را بلاک میکند، چه پیکربندی پروکسیای دوام میآورد، و چه الگوهای درخواستی اکانتها و سشنها را زنده نگه میدارد. (برای مدیریت چنداکانتی به جای اسکرپینگ، راهنماهای AdsPower/Multilogin و GoLogin/Dolphin Anty را ببینید.)
challenge_required برمیگرداند. تحمل Instagram نسبت به IPهای مسکونی مشترک/سوءاستفادهشده هم پایین است — اینجا کیفیت استخر IP تقریباً بیش از هر جای دیگری اهمیت دارد.X-Bogus/امضا نیاز دارد که توسط جاوااسکریپت مبهمسازیشده تولید میشوند. اسکرپینگ صرفاً HTTP یعنی مهندسی معکوس امضاهایی که هر چند هفته یکبار میچرخند — اکثر تیمها به جایش یک مرورگر واقعی (Playwright) اجرا میکنند و پاسخهای JSON را شنود میکنند.itemList خالی که شبیه «دیگر محتوایی نیست» به نظر میرسند).# یک هویت = یک سشن استیکی، پینشده به کشور
socks5h://USERNAME:[email protected]:913
چرخش به ازای هر درخواست برای صفحات عمومی ناشناس با حجم پایین اشکالی ندارد. لحظهای که پای کوکی سشن یا لاگین در میان است، به استیکی سوییچ کنید — کوکی و IP باید به عنوان یک هویت واحد حرکت کنند (چرا).
from curl_cffi import requests
PROXY = {"https": "socks5h://USERNAME:[email protected]:913"}
# JSON پروفایل عمومی (بدون لاگین) - تقلید از فینگرپرینت 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 = []
# بگذار جاوااسکریپت خود TikTok درخواستها را امضا کند؛ ما فقط پاسخها را میخوانیم
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) # آهنگ اسکرول شبیه انسان
print(len(items), "videos captured")
این کار کاملاً مهندسی معکوس امضا را دور میزند: خود صفحه X-Bogus معتبر تولید میکند و شما JSON را برداشت میکنید. پروکسی باید هنگام راهاندازی مرورگر تنظیم شود — نکات احراز هویت در احراز هویت پروکسی در Playwright پوشش داده شده است.
challenge_required، itemList خالی با hasMore: true.| TikTok | ||
|---|---|---|
| بهترین مسیر دسترسی | اندپوینتهای وب GraphQL/API، curl_cffi | Playwright + شنود پاسخ |
| نوع پروکسی | مسکونی استیکی به ازای هر هویت | مسکونی، منطبق با جغرافیای بازار |
| IPهای دیتاسنتر | دیوار لاگین / چالش | کپچای فوری |
| سیگنال بلاک نرم | ریدایرکت لاگین، challenge_required، دادهٔ null | itemList خالی، صفحه کپچا |
| حساسیت جغرافیایی | متوسط | بالا — محتوا بر اساس کشور فرق میکند |
پینشده به کشور، سشنهای استیکی، ASNهای تمیز — ۵ دلار اعتبار رایگان، بدون نیاز به کارت.
شروع تست رایگانکاربران جدید با ثبتنام 500MB هدیه میگیرند، بهعلاوه بونوس اولین شارژ. پیشنهاد محدود.