Instagram と TikTok は、スクレイピングにおける主流ターゲットの中で最も手強い 2 つです — Google より、Amazon よりも難しい。どちらも積極的な IP スコアリングを行い、複数のレイヤーであなたのクライアントを fingerprint し、そして両方とも soft block で有名です。きれいな 403 を返す代わりに、ログインウォール、空の JSON、"challenge_required"、あるいは何の予告もなく切り詰められた結果が返ってきます。スクレイパーは「動いて」いるのに、取れたデータはゴミです。
このガイドでは、2026 年に各プラットフォームが実際にどうやってあなたをブロックするのか、生き残るためのプロキシ設定、そしてアカウントとセッションを維持するためのリクエストパターンを解説します。(スクレイピングではなくマルチアカウントの管理については、AdsPower/Multilogin と GoLogin/Dolphin Anty のガイドを参照してください。)
challenge_required を返します。Instagram は共有・乱用された residential IP に対する許容度も低く — プールの品質がここではほとんどどこよりも重要です。X-Bogus/署名パラメータを要求します。純粋な HTTP スクレイピングでは、数週間ごとにローテーションする署名をリバースエンジニアリングし続けることになり — ほとんどのチームは代わりに本物のブラウザ(Playwright)を走らせて JSON レスポンスを傍受します。itemList レスポンス)。# One identity = one sticky session, country-pinned
socks5h://USERNAME:[email protected]:913
リクエストごとのローテーションは、低ボリュームの匿名の公開ページであれば問題ありません。セッション cookie やログインが絡んだ瞬間に sticky へ切り替えてください — cookie と IP は 1 つのアイデンティティとして一緒に動かす必要があります(理由)。
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"])
ステータスコードではなくレスポンスを見ること。{"data": null} の 200 や /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、hasMore: true なのに空の itemList。| TikTok | ||
|---|---|---|
| 最適なアクセス経路 | Web GraphQL/API エンドポイント、curl_cffi | Playwright + レスポンス傍受 |
| プロキシタイプ | アイデンティティごとに residential sticky | residential、市場に geo マッチ |
| datacenter IP | ログインウォール / challenge | 即 captcha |
| soft-block シグナル | ログインリダイレクト、challenge_required、null データ | 空の itemList、captcha ページ |
| geo の敏感さ | 中程度 | 高 — コンテンツが国によって異なる |
国を固定、sticky session、クリーンな ASN — 500MB の無料トラフィック、カード不要。
無料トライアルを始める新規ユーザーは登録時に500MBを獲得、さらに初回チャージにボーナスが付きます。期間限定オファーです。