mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[ie/crunchyroll] Support browser impersonation (#9857)
Closes #7442 Authored by: bashonly
This commit is contained in:
		| @@ -53,15 +53,19 @@ class CrunchyrollBaseIE(InfoExtractor): | ||||
|         CrunchyrollBaseIE._AUTH_EXPIRY = time_seconds(seconds=traverse_obj(response, ('expires_in', {float_or_none}), default=300) - 10) | ||||
| 
 | ||||
|     def _request_token(self, headers, data, note='Requesting token', errnote='Failed to request token'): | ||||
|         try:  # TODO: Add impersonation support here | ||||
|         try: | ||||
|             return self._download_json( | ||||
|                 f'{self._BASE_URL}/auth/v1/token', None, note=note, errnote=errnote, | ||||
|                 headers=headers, data=urlencode_postdata(data)) | ||||
|                 headers=headers, data=urlencode_postdata(data), impersonate=True) | ||||
|         except ExtractorError as error: | ||||
|             if not isinstance(error.cause, HTTPError) or error.cause.status != 403: | ||||
|                 raise | ||||
|             if target := error.cause.response.extensions.get('impersonate'): | ||||
|                 raise ExtractorError(f'Got HTTP Error 403 when using impersonate target "{target}"') | ||||
|             raise ExtractorError( | ||||
|                 'Request blocked by Cloudflare; navigate to Crunchyroll in your browser, ' | ||||
|                 'Request blocked by Cloudflare. ' | ||||
|                 'Install the required impersonation dependency if possible, ' | ||||
|                 'or else navigate to Crunchyroll in your browser, ' | ||||
|                 'then pass the fresh cookies (with --cookies-from-browser or --cookies) ' | ||||
|                 'and your browser\'s User-Agent (with --user-agent)', expected=True) | ||||
| 
 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bashonly
					bashonly