症状
Pythonの TikTokApi ライブラリを使ったスクリプトを動かすと、セッション作成時に以下のいずれかのエラーが発生する。
パターン①
ERROR - Failed to create session: Timeout 30000ms exceeded.
=========================== logs ===========================
"commit" event fired
"domcontentloaded" event fired
"load" event fired
============================================================
playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.
パターン②
ERROR - Failed to create session: Page.evaluate: Execution context was destroyed, most likely because of a navigation
原因
どちらもエラーの本質は TikTokApi ライブラリのソースコード側 にある。
tiktok.py の内部でセッション作成時に以下の2つの問題がある。
- Playwright の
wait_for_load_state("networkidle")がハードコードされており、TikTokページの広告・分析系通信が止まらないため30秒でタイムアウトする wait_for_load_state完了直後にページのナビゲーション(リダイレクト等)が走り、その最中にpage.evaluateが実行されてコンテキストが破壊される
解決方法:ライブラリのソースを2箇所修正する
1. 対象ファイルを開く
以下のパスにある tiktok.py をメモ帳やエディタで開く。
C:\Users\<ユーザー名>\AppData\Local\Programs\Python\Python311\Lib\site-packages\TikTokApi\tiktok.py
※ Pythonのバージョンや環境によってパスが異なる場合がある。仮想環境を使っている場合は venv\Lib\site-packages\TikTokApi\tiktok.py など。
2. wait_for_load_state を変更する(393行付近)
エディタの検索・置換(Ctrl+H)で以下のように変更する。
# 変更前
await page.wait_for_load_state("networkidle")
# 変更後
await page.wait_for_load_state("domcontentloaded")
await asyncio.sleep(3)
networkidle はTikTokページでは永遠に解決しないため domcontentloaded に変更する。さらに直後に3秒の待機を入れることで、ページのナビゲーション(リダイレクト等)が完全に落ち着いてから次の処理が走るようにする。
※ asyncio はライブラリ内でインポート済みのため追記不要。
3. 保存して再実行
ファイルを保存し、スクリプトを再実行する。セッションが正常に作成されるようになる。
注意点
- ライブラリをアップデート(
pip install --upgrade tiktok-api)すると、この変更は上書きされてリセットされる。アップデート後は再度同じ修正が必要。 - セッションを繰り返し作成するような処理では、バッチ間に十分な待機時間(15秒以上)を設けるとより安定する。
まとめ
| 項目 | 内容 |
|---|---|
| エラー原因① | networkidle 待機がTikTokページで永遠に解決しない |
| エラー原因② | ナビゲーション中に page.evaluate が実行されコンテキストが破壊される |
| 修正箇所 | TikTokApi/tiktok.py 393行付近の wait_for_load_state |
| 修正内容 | "networkidle" → "domcontentloaded" に変更し、直後に await asyncio.sleep(3) を追加 |
| 注意 | ライブラリ更新時は再修正が必要 |
関連ソース

GitHub - davidteather/TikTok-Api: The Unofficial TikTok API Wrapper In Python
The Unofficial TikTok API Wrapper In Python. Contribute to davidteather/TikTok-Api development by creating an account on...



コメント