2026年にTikTokの公開データをスクレイピングする方法(効果的な手法)

TikTokの公開データはすべてそこにありますが、隠されたJSONブロブとカーソルでページネーションされたフィードにあります。しかし、ボット対策のレイヤーがあるため、市販のスクレイパーは最終的にすべて壊れます。ここでは、何がまだ効果的で、なぜモバイルIPが重要なのかを説明します。

TikTokは驚くほど多くの公開データを提供しています — プロフィール、動画メタデータ、ハッシュタグフィード、エンゲージメント数 — これらはすべてログインなしで閲覧可能です。TikTokデータのスクレイピングが難しいのは、データを見つけることではなく、サイトのボット対策レイヤーが自動化されたアクセスを積極的にフラグするためです。これが、市販のライブラリが最終的に壊れる理由であり、使用する出口IPが結果を得るかCAPTCHAを受けるかを決定します。このガイドでは、公開データがどこにあるのか、ページネーションが実際にどのように機能するのか、非公式ツールがなぜ腐るのか、そしてなぜモバイルプロキシが実用的なデフォルトなのかを説明します。これは公開された非個人的な研究データに関するものであり、トレンド、クリエイター、ハッシュタグに関するものであり、プライベートアカウントのスクレイピングではありません。

公開データが実際に存在する場所

TikTokはクライアントレンダリングされたアプリなので、単純なGETはシェルを返します。有用なコンテンツは2つの場所にあります:ページに埋め込まれた隠されたJSONブロブ(アプリがデータを補充するユニバーサルデータスクリプト)と、アプリがロード後に呼び出す内部フィードエンドポイントです。これらの間で、視聴者が見るほぼすべてを読むことができます:各動画について、キャプションtextcreateTimediggCount(いいね)、shareCountplayCountcommentCountcollectCount、さらにネストされたauthormusicstatsオブジェクト。著者データにはフォロワー数と総いいね数、認証ステータス、バイオとバイオリンクが含まれます。スライドショー投稿はisSlideshowをフラグし、動画の代わりに画像リンクの配列を持ちます。

プロフィールにはユーザー名だけでなく2つのIDが必要

最初の試みでつまずくのは、ユーザーの動画フィードを取得するにはハンドルだけでなく2つの識別子が必要であることです。数値のid(userID)secUidの両方が必要で、これらは最初にプロフィールを解決することで得られます。secUidを逃すと、フィードコールは何も返しません。一度解決し、その後フィードをページングします。

# Sketch of the account-free flow every TikTok scraper follows.
# 1) Resolve the profile to get BOTH ids
user = get_user("someusername")          # -> {"id": ..., "secUid": ...}
user_id, sec_uid = user["id"], user["secUid"]

# 2) Page the feed with those ids (see cursor loop below)
videos = user_feed(user_id, sec_uid)

ページネーションはカーソルベース(約30で制限)

1つのフィードコールは約30の投稿を返します — フルタイムラインには程遠いです。TikTokはカーソルでページネーションします:各応答にはcursor(このバッチの終了位置)とhasMoreブール値が含まれています。全フィードを取得するには、hasMoreがfalseになるまでカーソルを戻してループします。ここが最も露出する場所でもあります — 各ページはあなたのIPからの別のリクエストなので、長いタイムラインは1つのアドレスからの多くのコールを意味します。

def crawl_feed(user_id, sec_uid):
    items, cursor, has_more = [], 0, True
    while has_more:
        page = user_feed(user_id, sec_uid, cursor=cursor)  # ~30 posts
        items.extend(page["itemList"])
        cursor = int(page["cursor"])
        has_more = page["hasMore"]
        # rotate / pace here — every loop is a fresh request from your IP
    return items
TikTokフィードのカーソルページネーションの図:ユーザーをidとsecUidに解決、最初の30投稿のページ、モバイル出口IP、カーソル上でhasMoreの間ループ
フィードはカーソルとhasMoreフラグを渡します;hasMoreがfalseになるまでカーソルを戻し続けます。

非公式ライブラリが壊れ続ける理由

人気のあるオープンソースのTikTokライブラリを使用したことがあるなら、これを感じたことがあるでしょう:しばらくは動作し、その後CAPTCHAや空の結果を返し始め、フォークされたパッチが現れてそれを維持します。その変動はメンテナのせいではありません — TikTokは署名とボット対策ロジックを変更し、すべての非公式クライアントが追いつこうと競争します。2つの教訓が続きます。維持されているフォークに固定し、更新を期待してください。そして、データパイプラインの信頼性を1つの脆弱なライブラリに依存させないでください — 耐久性のある部分は、現在動作している取得方法の周りの独自の解析と回転レイヤーです。

スクレイピングされたメディアURLは期限切れ — すぐに取得

コンテンツをアーカイブする人にとって微妙な罠:TikTokのアバター、カバー、動画URLは時間署名されています。これらはx-expiresx-signatureクエリパラメータを持ち、数時間以内に機能しなくなります。したがって、今朝スクレイピングしたリンクは夕方には無効になります。メディア自体が必要な場合は、発見したのと同じ実行でダウンロードしてください;メタデータだけが必要な場合は、安定したIDを保存し、必要に応じて新しいURLを再解決します。

特にモバイルプロキシが有効な理由

TikTokはモバイルファーストのプラットフォームであり、モバイルグレードのボット対策期待があります。ここでIPの選択がすべてを決定します。データセンターIPはすぐにフラグされます。住宅IPははるかに良いです。しかし、モバイルプロキシは最も適しています。なぜなら、キャリアネットワークがどのように機能するかという理由で:モバイルオペレーターは何千もの実際の加入者を少数の共有IP(CGNAT)を通じてルーティングするため、1つのモバイルIPは本物のユーザーの群衆のように見えます。それをブロックすることは、実際の顧客をブロックすることを意味し、プラットフォームはそれを非常に嫌がります — その理由はなぜモバイルIPが信頼されているのかで説明しています。モバイル出口はまた、地理的に特定のフィードをサンプルすることを可能にします:TikTokは国ごとにトレンドを調整するため、英国の出口と米国の出口は異なる「For You」コンテンツを返します。

TikTokデータのためのモバイルプロキシを入手

TikTokショップと地理的差異

TikTokショップの製品データは同じ形状を持ちます — 公開リスト、構造化JSON、カーソルページネーション — しかし、利用可能性は大きく地理的に制限されているため、その地域の出口IPからのみカタログを見ることができます。これは、TikTokの成長作業がロケーションに一致したIPに依存するのと同じ理由です:ショップの在庫を読むかトレンドフィードを読むかにかかわらず、得られるコンテンツはIPがどこにあるかによって決まります。各市場を一致する出口からサンプルし、結果を地域特有のものとして扱い、グローバルなものとして扱わないでください。

TikTokの公開データをスクレイピングする際に効果的なものと問題を引き起こすもののチェックリスト、隠されたJSON、カーソルページネーション、期限切れのメディアURL、データセンターIPのフラグ付けを含む
公開データはすべてログインなしで到達可能です — 摩擦はボット対策のフラグ付け、期限切れのURL、30投稿の制限です。

DIYスタックをスキップするタイミング

TikTokスクレイパーを維持することは、署名の変更を追い、CAPTCHAを処理し、フォークを監視することを意味します — 一度の構築ではなく、継続的な負担です。TikTokデータが製品への入力であり、製品自体ではない場合、ページをレンダリングし、モバイルグレードのIPを回転させ、クリーンなJSONを返すScraper APIは、そのメンテナンスをあなたの手から取り除きます。構造を学んでいる間は自分のスタックを運用し、維持が洞察よりもコストがかかるようになったら、管理された取得レイヤーに切り替えます。

よくある質問

アカウントなしでTikTokデータをスクレイピングできますか?

はい — 公開プロフィール、動画、ハッシュタグとそのエンゲージメントメタデータは、ログインせずに読み取ることができます。なぜなら、TikTokはそれらを隠されたJSONブロブに埋め込み、内部フィードエンドポイントを通じて提供するからです。それでも、フィードをページングする前にプロフィールの数値idとsecUidを解決する必要があり、クリーンで回転するIPなしではボット対策のフラグに引っかかります。

なぜ私のTikTokスクレイパーはCAPTCHAを受けるのですか?

TikTokは自動化のように振る舞うIPをフラグします — リクエストが多すぎる、データセンターのアドレス範囲、または評判の悪いIPです。カーソルページネーションはこれを悪化させます。なぜなら、フルタイムラインは1つのIPからの多くのコールだからです。リクエストを回転するモバイルまたは住宅プールに分散し、ペースを調整し、応答を検証してください。モバイルIPは、実際の加入者によって共有されているため、最も疑われにくいです。

1つのリクエストでどれだけのTikTokデータを取得できますか?

1つのフィードコールは約30の投稿を返します。フルタイムラインを収集するには、応答が与えるカーソルでループし、hasMoreフラグがfalseになるまでそれを戻します。各ページはあなたのIPからの別のリクエストなので、長いタイムラインはより多くの露出を意味します — だからこそ、回転とペースが重要です。

TikTokにはモバイルプロキシが必要ですか?

厳密には必要ありませんが、最も強力なオプションです。データセンターIPはすぐにフラグされ、住宅IPはより良く機能し、モバイルプロキシは最も効果的です。なぜなら、キャリアCGNATは1つのモバイルIPが多くの実際のユーザーによって共有されていることを意味し、プラットフォームはそれをブロックすることを嫌がるからです。モバイル出口はまた、出口国を選択することで地理的に特定のトレンドやショップデータを引き出すことを可能にします。

TikTokの公開データはすべてログインなしで到達可能です — 難しいのは到達し続けることです。両方のプロフィールIDを解決し、カーソルをループし、署名されたメディアを即座に取得し、モバイルグレードのIPを通じてルーティングすることで、リクエストが隠れている群衆のように見えるようにします。IPレイヤーを正しく設定すれば、あとはJSONだけです。

QuantumProxiesのモバイルプロキシで始めましょう