about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2018-02-04 07:52:50 +0700
committerSergey M․ <dstftw@gmail.com>2018-02-04 07:55:04 +0700
commit5399ab3f0c63d47d44a7f8c3506192775f2605d3 (patch)
tree6bacaf830760332c004d79e014b689de3f2c635a
parentb91a7a4e5e6221d6fdf8e4074fbc3e9b94a18602 (diff)
downloadyoutube-dl-5399ab3f0c63d47d44a7f8c3506192775f2605d3.tar.gz
youtube-dl-5399ab3f0c63d47d44a7f8c3506192775f2605d3.tar.xz
youtube-dl-5399ab3f0c63d47d44a7f8c3506192775f2605d3.zip
[brightcove] Pass embed page URL as referrer (closes #15486)
-rw-r--r--youtube_dl/extractor/brightcove.py13
-rw-r--r--youtube_dl/extractor/generic.py5
2 files changed, 14 insertions, 4 deletions
diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py
index f04505011..f3c0dc3fa 100644
--- a/youtube_dl/extractor/brightcove.py
+++ b/youtube_dl/extractor/brightcove.py
@@ -690,10 +690,17 @@ class BrightcoveNewIE(AdobePassIE):
                 webpage, 'policy key', group='pk')
 
         api_url = 'https://edge.api.brightcove.com/playback/v1/accounts/%s/videos/%s' % (account_id, video_id)
-        try:
-            json_data = self._download_json(api_url, video_id, headers={
-                'Accept': 'application/json;pk=%s' % policy_key
+        headers = {
+            'Accept': 'application/json;pk=%s' % policy_key,
+        }
+        referrer = smuggled_data.get('referrer')
+        if referrer:
+            headers.update({
+                'Referer': referrer,
+                'Origin': re.search(r'https?://[^/]+', referrer).group(0),
             })
+        try:
+            json_data = self._download_json(api_url, video_id, headers=headers)
         except ExtractorError as e:
             if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403:
                 json_data = self._parse_json(e.cause.read().decode(), video_id)[0]
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
index 1d9da8115..c3f201949 100644
--- a/youtube_dl/extractor/generic.py
+++ b/youtube_dl/extractor/generic.py
@@ -2280,7 +2280,10 @@ class GenericIE(InfoExtractor):
         # Look for Brightcove New Studio embeds
         bc_urls = BrightcoveNewIE._extract_urls(self, webpage)
         if bc_urls:
-            return self.playlist_from_matches(bc_urls, video_id, video_title, ie='BrightcoveNew')
+            return self.playlist_from_matches(
+                bc_urls, video_id, video_title,
+                getter=lambda x: smuggle_url(x, {'referrer': url}),
+                ie='BrightcoveNew')
 
         # Look for Nexx embeds
         nexx_urls = NexxIE._extract_urls(webpage)