[ie/tiktok] Re-implement impersonation support (#17480)

Fix b375e1d85c

Authored by: bashonly
This commit is contained in:
bashonly
2026-08-19 22:56:04 +00:00
committed by GitHub
parent 1b0074911e
commit 2c0bf96092
+7 -3
View File
@@ -277,11 +277,15 @@ class TikTokBaseIE(InfoExtractor):
headers = self._generate_blockbuster_headers()
def get_webpage(note='Downloading webpage'):
res = self._download_webpage_handle(url, video_id, note, fatal=fatal, headers=headers)
res = self._download_webpage_handle(
url, video_id, note, fatal=fatal, headers=headers, impersonate=True)
if res is False:
return False
webpage, urlh = res
self.write_debug(f'Webpage size: {len(webpage)} bytes')
self.write_debug(f'Impersonation target: {urlh.extensions.get("impersonate")}')
if urllib.parse.urlparse(urlh.url).path == '/login':
message = 'TikTok is requiring login for access to this content'
if fatal:
@@ -1171,7 +1175,7 @@ class TikTokUserIE(TikTokBaseIE):
webpage = self._download_webpage(
self._UPLOADER_URL_FORMAT % user_name, user_name,
'Downloading user webpage', 'Unable to download user webpage',
fatal=False, headers=self._generate_blockbuster_headers()) or ''
impersonate=True, fatal=False, headers=self._generate_blockbuster_headers()) or ''
detail = traverse_obj(
self._get_universal_data(webpage, user_name), ('webapp.user-detail', {dict})) or {}
video_count = traverse_obj(detail, ('userInfo', ('stats', 'statsV2'), 'videoCount', {int}, any))
@@ -1630,7 +1634,7 @@ class TikTokLiveIE(TikTokBaseIE):
if not room_id:
webpage = self._download_webpage(
format_field(uploader, None, self._UPLOADER_URL_FORMAT), uploader,
headers=self._generate_blockbuster_headers())
impersonate=True, headers=self._generate_blockbuster_headers())
room_id = traverse_obj(
self._get_universal_data(webpage, uploader),
('webapp.user-detail', 'userInfo', 'user', 'roomId', {str}))