Use original Referer URL in Brightcove requests (Fixes #2110)
This commit is contained in:
		
							parent
							
								
									400e58103d
								
							
						
					
					
						commit
						79f8295303
					
				| @ -14,6 +14,7 @@ from ..utils import ( | |||||||
|     compat_urllib_request, |     compat_urllib_request, | ||||||
| 
 | 
 | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|  |     unsmuggle_url, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -121,6 +122,8 @@ class BrightcoveIE(InfoExtractor): | |||||||
|             return None |             return None | ||||||
| 
 | 
 | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|  |         url, smuggled_data = unsmuggle_url(url, {}) | ||||||
|  | 
 | ||||||
|         # Change the 'videoId' and others field to '@videoPlayer' |         # Change the 'videoId' and others field to '@videoPlayer' | ||||||
|         url = re.sub(r'(?<=[?&])(videoI(d|D)|bctid)', '%40videoPlayer', url) |         url = re.sub(r'(?<=[?&])(videoI(d|D)|bctid)', '%40videoPlayer', url) | ||||||
|         # Change bckey (used by bcove.me urls) to playerKey |         # Change bckey (used by bcove.me urls) to playerKey | ||||||
| @ -131,9 +134,10 @@ class BrightcoveIE(InfoExtractor): | |||||||
| 
 | 
 | ||||||
|         videoPlayer = query.get('@videoPlayer') |         videoPlayer = query.get('@videoPlayer') | ||||||
|         if videoPlayer: |         if videoPlayer: | ||||||
|             return self._get_video_info(videoPlayer[0], query_str, query, |             # We set the original url as the default 'Referer' header | ||||||
|                 # We set the original url as the default 'Referer' header |             referer = smuggled_data.get('Referer', url) | ||||||
|                 referer=url) |             return self._get_video_info( | ||||||
|  |                 videoPlayer[0], query_str, query, referer=referer) | ||||||
|         else: |         else: | ||||||
|             player_key = query['playerKey'] |             player_key = query['playerKey'] | ||||||
|             return self._get_playlist_info(player_key[0]) |             return self._get_playlist_info(player_key[0]) | ||||||
|  | |||||||
| @ -225,7 +225,8 @@ class GenericIE(InfoExtractor): | |||||||
|         bc_url = BrightcoveIE._extract_brightcove_url(webpage) |         bc_url = BrightcoveIE._extract_brightcove_url(webpage) | ||||||
|         if bc_url is not None: |         if bc_url is not None: | ||||||
|             self.to_screen('Brightcove video detected.') |             self.to_screen('Brightcove video detected.') | ||||||
|             return self.url_result(bc_url, 'Brightcove') |             surl = smuggle_url(bc_url, {'Referer': url}) | ||||||
|  |             return self.url_result(surl, 'Brightcove') | ||||||
| 
 | 
 | ||||||
|         # Look for embedded (iframe) Vimeo player |         # Look for embedded (iframe) Vimeo player | ||||||
|         mobj = re.search( |         mobj = re.search( | ||||||
|  | |||||||
| @ -1027,9 +1027,9 @@ def smuggle_url(url, data): | |||||||
|     return url + u'#' + sdata |     return url + u'#' + sdata | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def unsmuggle_url(smug_url): | def unsmuggle_url(smug_url, default=None): | ||||||
|     if not '#__youtubedl_smuggle' in smug_url: |     if not '#__youtubedl_smuggle' in smug_url: | ||||||
|         return smug_url, None |         return smug_url, default | ||||||
|     url, _, sdata = smug_url.rpartition(u'#') |     url, _, sdata = smug_url.rpartition(u'#') | ||||||
|     jsond = compat_parse_qs(sdata)[u'__youtubedl_smuggle'][0] |     jsond = compat_parse_qs(sdata)[u'__youtubedl_smuggle'][0] | ||||||
|     data = json.loads(jsond) |     data = json.loads(jsond) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user