Instagram এবং TikTok হলো scraping-এ দুটি সবচেয়ে কঠিন মূলধারার টার্গেট — Google-এর চেয়ে কঠিন, Amazon-এর চেয়ে কঠিন। উভয়ই আক্রমণাত্মক IP scoring চালায়, উভয়ই একাধিক স্তরে আপনার ক্লায়েন্ট fingerprint করে, এবং উভয়ই soft block-এর জন্য বিখ্যাত: একটি পরিষ্কার 403-এর বদলে, আপনি login wall, খালি JSON, "challenge_required", বা নীরবে কেটে ফেলা ফলাফল পান। আপনার scraper "কাজ করে" এবং আপনার ডেটা আবর্জনা।
এই গাইডটি কভার করে কীভাবে প্রতিটি প্ল্যাটফর্ম ২০২৬ সালে আসলে আপনাকে ব্লক করে, কোন proxy সেটআপ টিকে থাকে, এবং কোন request প্যাটার্নগুলো অ্যাকাউন্ট ও সেশন জীবিত রাখে। (scraping-এর বদলে multi-account ব্যবস্থাপনার জন্য, আমাদের AdsPower/Multilogin এবং GoLogin/Dolphin Anty গাইডগুলো দেখুন।)
challenge_required ফেরত দেয়। শেয়ার করা/অপব্যবহৃত residential IP-এর প্রতি Instagram-এর সহনশীলতাও কম — এখানে পুল কোয়ালিটি প্রায় অন্য যেকোনো জায়গার চেয়ে বেশি গুরুত্বপূর্ণ।X-Bogus/signature প্যারামিটার প্রয়োজন। বিশুদ্ধ-HTTP scraping মানে প্রতি কয়েক সপ্তাহে ঘূর্ণায়মান signature reverse-engineer করা — বেশিরভাগ দল পরিবর্তে একটি আসল ব্রাউজার (Playwright) চালায় এবং JSON রেসপন্স intercept করে।itemList রেসপন্স যা "আর কোনো কন্টেন্ট নেই"-এর মতো দেখায়)।# One identity = one sticky session, country-pinned
socks5h://USERNAME:[email protected]:913
কম ভলিউমে বেনামী পাবলিক পেজের জন্য rotating-per-request ঠিক আছে। যে মুহূর্তে একটি session cookie বা login জড়িত হয়, sticky-তে স্যুইচ করুন — cookie এবং 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"])
status code নয়, রেসপন্স দেখুন: {"data": null} সহ একটি 200 বা /accounts/login/-তে একটি redirect মানে এই IP-এর বাজেট খরচ হয়ে গেছে — পরিচয় rotate করুন, পিছিয়ে যান, এবং পুনরায় শুরু করুন।
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")
এটি signature reverse-engineering সম্পূর্ণরূপে এড়িয়ে যায়: পেজ নিজেই বৈধ X-Bogus তৈরি করে, এবং আপনি JSON সংগ্রহ করেন। proxy অবশ্যই ব্রাউজার launch-এ সেট করতে হবে — auth-এর খুঁটিনাটি Playwright proxy authentication-এ কভার করা হয়েছে।
challenge_required, hasMore: true সহ খালি itemList।| TikTok | ||
|---|---|---|
| সেরা অ্যাক্সেস পথ | Web GraphQL/API endpoint, curl_cffi | Playwright + response interception |
| Proxy ধরন | প্রতি পরিচয়ে Residential sticky | Residential, মার্কেটের সাথে geo-matched |
| Datacenter IP | Login wall / challenge | তাৎক্ষণিক captcha |
| Soft-block সিগন্যাল | login redirect, challenge_required, null data | খালি itemList, captcha পেজ |
| Geo সংবেদনশীলতা | মাঝারি | উচ্চ — কন্টেন্ট দেশভেদে ভিন্ন |
Country-pinned, sticky sessions, পরিষ্কার ASN — 500MB ফ্রি ট্রাফিক, কোনো কার্ড প্রয়োজন নেই।
বিনামূল্যে ট্রায়াল শুরু করুননতুন ব্যবহারকারীরা নিবন্ধনের সময় 500MB পান, সাথে প্রথম রিচার্জে বোনাস। সীমিত সময়ের অফার।