Repository: yt-dlp
Issue: [TikTok] "Unable to extract webpage video data"
Labels: site-bug,triage

### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting that yt-dlp is broken on a **supported** site
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [ ] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

_No response_

### Provide a description that is worded well enough to be understood

There are many TikTok videos that are not downloaded with this error showing up each time: ERROR: [TikTok] 7311698908986477856: Unable to extract webpage video data

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [ ] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
[debug] Command-line config: ['-vU', '-o', '%(uploader)s/%(title)s.%(ext)s', 'https://www.tiktok.com/@juliaxgri1']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2024.08.06 from yt-dlp/yt-dlp [4d9231208] (pip)
[debug] Python 3.12.4 (CPython AMD64 64bit) - Windows-11-10.0.22631-SP0 (OpenSSL 3.0.13 30 Jan 2024)
[debug] exe versions: ffmpeg 7.0.2-essentials_build-www.gyan.dev (setts), ffprobe 7.0.2-essentials_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.07.04, mutagen-1.47.0, requests-2.32.3, sqlite3-3.45.3, urllib3-2.2.2, websockets-13.0.1
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1830 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: stable@2024.08.06 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2024.08.06 from yt-dlp/yt-dlp)
[tiktok:user] Extracting URL: https://www.tiktok.com/@juliaxgri1
[tiktok:user] juliaxgri1: Downloading user webpage
[download] Downloading playlist: juliaxgri1
[tiktok:user] juliaxgri1: Downloading page 1
[tiktok:user] juliaxgri1: Downloading page 2
[tiktok:user] juliaxgri1: Downloading page 3
[tiktok:user] Playlist juliaxgri1: Downloading 35 items of 35
[download] Downloading item 1 of 35
[TikTok] Extracting URL: https://www.tiktok.com/@juliaxgri1/video/7409225096545504545
[TikTok] 7409225096545504545: Downloading webpage
[debug] [TikTok] Found universal data for rehydration
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7409225096545504545: Downloading 1 format(s): bytevc1_1080p_723913-2
[debug] Invoking http downloader on "https://api16-normal-c-useast2a.tiktokv.com/aweme/v1/play/?video_id=v0f044gc0000cr9dlnvog65l2hg92ot0&line=0&is_play_url=1&file_id=2f9316a2a28d411eb214715644f31b11&item_id=7409225096545504545&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmY5YWIzMGRjNDM4NDRlYmM4NWU0NTdjNzYyMmQ2MTUw&shp=9e36835a&shcp=280c9438"
[debug] File locking is not supported. Proceeding without locking
[download] Destination: juliaxgri1\#foryou #blowthisup #goviral #foryoupage .mp4
[download] 100% of    1.29MiB in 00:00:00 at 3.43MiB/s
[download] Downloading item 2 of 35
[TikTok] Extracting URL: https://www.tiktok.com/@juliaxgri1/video/7407832624456043809
[TikTok] 7407832624456043809: Downloading webpage
[debug] [TikTok] Found universal data for rehydration
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7407832624456043809: Downloading 1 format(s): bytevc1_720p_544082-2
[debug] Invoking http downloader on "https://api16-normal-c-useast2a.tiktokv.com/aweme/v1/play/?video_id=v0f044gc0000cr6uegfog65rded56sb0&line=0&is_play_url=1&file_id=9dc34f0e5ae4453b8089458fec948fc6&item_id=7407832624456043809&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmIzYTViZWZiOTQ0NDkxOTcxODQxMmRhYThlYjJkNTk1&shp=9e36835a&shcp=280c9438"
[download] juliaxgri1\#foryou #blowthisup #goviral #photodump #foryoupage #fypシ゚viral #xyzbca .mp4 has already been downloaded
[download] 100% of  761.79KiB
[download] Downloading item 3 of 35
[TikTok] Extracting URL: https://www.tiktok.com/@juliaxgri1/video/7406986592151194913
[TikTok] 7406986592151194913: Downloading webpage
[debug] [TikTok] Found universal data for rehydration
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7406986592151194913: Downloading 1 format(s): bytevc1_1080p_877871-2
[debug] Invoking http downloader on "https://api16-normal-c-useast2a.tiktokv.com/aweme/v1/play/?video_id=v0f044gc0000cr5ec2fog65og53he86g&line=0&is_play_url=1&file_id=bc3f0fd78d58469e9bbbfeb99306344b&item_id=7406986592151194913&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLmMzODIyZDczNDU1ZDNjYzVkNjBjMWY3Y2MzOTIzNzNk&shp=9e36835a&shcp=280c9438"
[download] juliaxgri1\#foryou #blowthisup #goviral #photodump #foryoupage #gymtok #fypシ゚viral #xyzbca #dance #teamwork .mp4 has already been downloaded
[download] 100% of    1.19MiB
[download] Downloading item 4 of 35
[TikTok] Extracting URL: https://www.tiktok.com/@juliaxgri1/video/7405936959169776929
[TikTok] 7405936959169776929: Downloading webpage
ERROR: [TikTok] 7405936959169776929: Unable to extract webpage video data; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "C:\Users\joshs\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\extractor\common.py", line 740, in extract
    ie_result = self._real_extract(url)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\joshs\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\extractor\tiktok.py", line 892, in _real_extract
    video_data, status = self._extract_web_data_and_status(url, video_id)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\joshs\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\extractor\tiktok.py", line 250, in _extract_web_data_and_status
    raise ExtractorError('Unable to extract webpage video data')
```