Repository: yt-dlp/yt-dlp

Issue:
[Broken] ParamountPlus Extractor w/ --geo-verification-proxy
<!--

######################################################################
  WARNING!
  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################

-->


## Checklist

<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.08.10. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/yt-dlp/yt-dlp.
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
-->

- [x] I'm reporting a broken site support
- [x] I've verified that I'm running yt-dlp version **2021.08.10**
- [x] I've checked that all provided URLs are alive and playable in a browser
- [x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [x] I've searched the bugtracker for similar issues including closed ones


## Verbose log

<!--
Provide the complete verbose output of yt-dlp that clearly demonstrates the problem.
Add the `-v` flag to your command line you run yt-dlp with (`yt-dlp -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this:
 [debug] System config: []
 [debug] User config: []
 [debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKc']
 [debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
 [debug] yt-dlp version 2021.08.10
 [debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
 [debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
 [debug] Proxy map: {}
 <more lines>
-->


**Commamd ALL GEO BYPASS FLAGS Used:**
```
yt-dlp --config-location /root/yt-dlp_PPLUS.conf  'https://www.paramountplus.com/movies/downsizing/17jD7xwreZa6qWpSkU9JEKk__ebe56ni/' --geo-verification-proxy MY_PROXY_IP_PORT --geo-bypass-country US --geo-bypass --cookies ./PPLUS_COOKIE.txt --allow-unplayable-formats --verbose &> PPLUS_LOG_ALL_GEO.txt


[debug] User config file: /root/yt-dlp.conf
[debug] User config: ['--retries', '3', '--ap-mso', 'Spectrum', '--ap-username', 'PRIVATE', '--ap-password', 'PRIVATE', '-N50', '--geo-verification-proxy', 'MY_PROXY_IP_PORT', '-f', 'bv+ba/b', '--add-metadata', '--write-all-thumbnails', '--embed-thumbnail']
[debug] Custom config file: /root/yt-dlp_PPLUS.conf
[debug] Custom config: ['--retries', '3', '--ap-mso', 'Spectrum', '--ap-username', 'PRIVATE', '--ap-password', 'PRIVATE', '--geo-verification-proxy', 'MY_PROXY_IP_PORT', '-f', 'bv+ba/b', '--downloader-args', 'aria2c:-x 16 -s 16 -j 16 -k 5M', '--add-metadata', '--write-all-thumbnails', '--embed-thumbnail']
[debug] Command-line config: ['--config-location', '/root/yt-dlp_PPLUS.conf', 'https://www.paramountplus.com/movies/downsizing/17jD7xwreZa6qWpSkU9JEKk__ebe56ni/', '--geo-verification-proxy', 'MY_PROXY_IP_PORT', '--geo-bypass-country', 'US', '--geo-bypass', '--cookies', './PPLUS_COOKIE.txt', '--allow-unplayable-formats', '--verbose']
WARNING: --add-metadata is ignored since --allow-unplayable-formats was given
WARNING: --embed-thumbnail is ignored since --allow-unplayable-formats was given
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.08.10 (zip)
[debug] Python version 3.7.3 (CPython 64bit) - Linux-4.19.0-17-amd64-x86_64-with-debian-10.10
[debug] exe versions: ffmpeg v1.27-6-ge0542c4, ffprobe v1.27-6-ge0542c4, rtmpdump 2.4
[debug] Optional libraries: keyring, mutagen, pycryptodome, sqlite, websockets
[debug] Proxy map: {}
[debug] Using fake IP 6.235.36.121 (US) as X-Forwarded-For
[debug] [ParamountPlus] Extracting URL: https://www.paramountplus.com/movies/downsizing/17jD7xwreZa6qWpSkU9JEKk__ebe56ni/
[ParamountPlus] 17jD7xwreZa6qWpSkU9JEKk__ebe56ni: Downloading JSON metadata
ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; see  https://github.com/yt-dlp/yt-dlp  on how to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 682, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3190, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.7/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.7/urllib/request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.7/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
```

**Command Only --geo-verification-proxy Used:**
```
yt-dlp --config-location /root/yt-dlp_PPLUS.conf  'https://www.paramountplus.com/movies/downsizing/17jD7xwreZa6qWpSkU9JEKk__ebe56ni/' --geo-verification-proxy MY_PROXY_IP_PORT --cookies ./PPLUS_COOKIE.txt --allow-unplayable-formats --verbose &> PPLUS_LOG_ONLY_GEO_PROXY.txt

[debug] User config file: /root/yt-dlp.conf
[debug] User config: ['--retries', '3', '--ap-mso', 'Spectrum', '--ap-username', 'PRIVATE', '--ap-password', 'PRIVATE', '-N50', '--geo-verification-proxy', 'MY_PROXY_IP_PORT', '-f', 'bv+ba/b', '--add-metadata', '--write-all-thumbnails', '--embed-thumbnail']
[debug] Custom config file: /root/yt-dlp_PPLUS.conf
[debug] Custom config: ['--retries', '3', '--ap-mso', 'Spectrum', '--ap-username', 'PRIVATE', '--ap-password', 'PRIVATE', '--geo-verification-proxy', 'MY_PROXY_IP_PORT', '-f', 'bv+ba/b', '--downloader-args', 'aria2c:-x 16 -s 16 -j 16 -k 5M', '--add-metadata', '--write-all-thumbnails', '--embed-thumbnail']
[debug] Command-line config: ['--config-location', '/root/yt-dlp_PPLUS.conf', 'https://www.paramountplus.com/movies/downsizing/17jD7xwreZa6qWpSkU9JEKk__ebe56ni/', '--geo-verification-proxy', 'MY_PROXY_IP_PORT', '--cookies', './PPLUS_COOKIE.txt', '--allow-unplayable-formats', '--verbose']
WARNING: --add-metadata is ignored since --allow-unplayable-formats was given
WARNING: --embed-thumbnail is ignored since --allow-unplayable-formats was given
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.08.10 (zip)
[debug] Python version 3.7.3 (CPython 64bit) - Linux-4.19.0-17-amd64-x86_64-with-debian-10.10
[debug] exe versions: ffmpeg v1.27-6-ge0542c4, ffprobe v1.27-6-ge0542c4, rtmpdump 2.4
[debug] Optional libraries: keyring, mutagen, pycryptodome, sqlite, websockets
[debug] Proxy map: {}
[debug] [ParamountPlus] Extracting URL: https://www.paramountplus.com/movies/downsizing/17jD7xwreZa6qWpSkU9JEKk__ebe56ni/
[ParamountPlus] 17jD7xwreZa6qWpSkU9JEKk__ebe56ni: Downloading JSON metadata
ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; see  https://github.com/yt-dlp/yt-dlp  on how to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "/usr/local/bin/yt-dlp/yt_dlp/extractor/common.py", line 682, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3190, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.7/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.7/urllib/request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.7/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)



```
<!--
Do not remove the above ```
-->


## Description

<!--
Provide an explanation of your issue in an arbitrary form. Provide any additional information, suggested solution and as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->

After last update, --geo-verification-proxy no longer works on Paramount Plus.  Never had any issues prior to latest update. 

I've tested with 30+ US private proxies, as well as using/noy using other geo bypass settings. 

I've provided two logs, one with just --geo-verification-proxy and one with all geo bypass settings

Willing to provide Paramount Plus Login Upon request via an active dev


### UPDATE:

The following workaround completes successfully.. But, now the download is ran thru the PROXY:

Command:

 yt-dlp --cookies PPLUS_COOKIE.txt 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/' --verbose --add-header 'X-Forwarded-For: PROXY_IP' --geo-verification-proxy IP:PORT --proxy IP:PORT --ignore-config

### Verbose Log:
```
[debug] Command-line config: ['--cookies', 'PPLUS_COOKIE.txt', 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/', '--verbose', '--add-header', 'X-Forwarded-For: PROXY_IP', '--geo-verification-proxy', 'PROXY_IP:PORT', '--proxy', 'PROXY_IP:PORT', '-N50', '--ignore-config']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.08.10 (zip)
[debug] Python version 3.7.3 (CPython 64bit) - Linux-4.19.0-17-amd64-x86_64-with-debian-10.10
[debug] exe versions: ffmpeg v1.27-6-ge0542c4, ffprobe v1.27-6-ge0542c4, rtmpdump 2.4
[debug] Optional libraries: keyring, mutagen, pycryptodome, sqlite, websockets
[debug] Proxy map: {'http': 'PROXY_IP:PORT', 'https': 'PROXY_IP:PORT'}
[debug] [ParamountPlus] Extracting URL: https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading JSON metadata
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading JSON metadata
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading DASH_CENC_PRECON SMIL data
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, vcodec:vp9.2(10), acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading 1 format(s): hls-4547
[debug] Invoking downloader on "https://cbsios-vh.akamaihd.net/i/temp_hd_gallery_video/CBS_Production_Outlet_VMS/video_robot/CBS_Production_Entertainment/2020/12/05/1828043843952/CBS_THE_STAND_101_AA_8CH_394714_,2228,4628,3128,1628,848,503,000.mp4.csmil/index_1_av.m3u8?null=0&id=AgBN93JMFzgFhm2mFGEyyQPMvJhnFUCZdT6BEJ4pdUzfdqemXMcYS97fIPCjun6vgRt+YkuOlaxB0A%3d%3d&hdntl=exp=1628829677~acl=%2fi%2ftemp_hd_gallery_video%2fCBS_Production_Outlet_VMS%2fvideo_robot%2fCBS_Production_Entertainment%2f2020%2f12%2f05%2f1828043843952%2fCBS_THE_STAND_101_AA_8CH_394714_*~data=hdntl~hmac=ddc5dfdfcb769b436f8451914c6a132a7360f4b3b56692421a6cd3d2183479c3"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 354
[download] Destination: The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome

TRUNCATED DOWNLOAD LOG..

[download]  99.6% of ~1.94GiB at  1.85MiB/s ETA 00:00
[download]  99.7% of ~1.93GiB at  1.10MiB/s ETA 00:00
[download]  99.7% of ~1.93GiB at  1.10MiB/s ETA 00:00
[download] 100.0% of ~1.93GiB at  2.81MiB/s ETA 00:00
[download] 100.0% of ~1.93GiB at  2.81MiB/s ETA 00:00
[download] 100% of 1.93GiB in 00:28
[debug] ffmpeg command line: ffprobe -show_streams 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4'
[FixupM3u8] Fixing malformed AAC bitstream of "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4' -c copy -map 0 -dn -f mp4 -bsf:a aac_adtstoasc 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].temp.mp4'
[SponSkrub] Skipping sponskrub since it is not a YouTube video

```

## **Here is the same command working on the last release of yt-dlp, something broke after this release:**

**yt-dlp Version:**
2021.08.02

**COMMAND USED:**

```
yt-dlp --cookies PPLUS_COOKIE.txt 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/' --verbose &> LAST_RELEASE_LOG.txt
```

**VERBOSE LOG:**

```
[debug] User config file: /root/yt-dlp.conf
[debug] User config: ['--retries', '3', '--ap-mso', 'Spectrum', '--ap-username', 'PRIVATE', '--ap-password', 'PRIVATE', '-N50', '--geo-verification-proxy', 'PROXY_IP:PORT', '--geo-bypass-country', 'US', '-f', 'bv+ba/b', '--add-metadata', '--write-all-thumbnails', '--embed-thumbnail']
[debug] Command-line config: ['--cookies', 'PPLUS_COOKIE.txt', 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.08.02 (zip)
[debug] Python version 3.7.3 (CPython 64bit) - Linux-4.19.0-17-amd64-x86_64-with-debian-10.10
[debug] exe versions: ffmpeg v1.27-6-ge0542c4, ffprobe v1.27-6-ge0542c4, rtmpdump 2.4
[debug] Proxy map: {}
[debug] Using fake IP 6.111.131.160 (US) as X-Forwarded-For
[debug] [CBS] Extracting URL: https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading XML
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading StreamPack SMIL data
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, vcodec:vp9.2(10), acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading JSON metadata
[info] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading 1 format(s): hls-4547
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading thumbnail  ...
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Writing thumbnail to: The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].jpg
[debug] Invoking downloader on "https://cbsios-vh.akamaihd.net/i/temp_hd_gallery_video/CBS_Production_Outlet_VMS/video_robot/CBS_Production_Entertainment/2020/12/05/1828043843952/CBS_THE_STAND_101_AA_8CH_394714_,2228,4628,3128,1628,848,503,000.mp4.csmil/index_1_av.m3u8?null=0&id=AgCU+wd9AhC6dIuuFGG6lG8T9I6OWUlL32aum9U%2fGsuI+132oaoh6NxSWeseIlvG1FGLiS%2f7j3snUw%3d%3d&hdntl=exp=1628831755~acl=%2fi%2ftemp_hd_gallery_video%2fCBS_Production_Outlet_VMS%2fvideo_robot%2fCBS_Production_Entertainment%2f2020%2f12%2f05%2f1828043843952%2fCBS_THE_STAND_101_AA_8CH_394714_*~data=hdntl~hmac=2c6186a6959eed0d09343df9918b3a9f27b822959314a8630a1fb12fc7935e7c"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 354
[download] Destination: The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome

TRUNCATED DOWNLOAD OUTPUT:

[download] 100.0% of ~1.93GiB at 68.83MiB/s ETA 00:00
[download] 100% of 1.93GiB in 00:22
[debug] ffmpeg command line: ffprobe -show_streams 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4'
[FixupM3u8] Fixing malformed AAC bitstream of "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4' -c copy -map 0 -dn -f mp4 -bsf:a aac_adtstoasc 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].temp.mp4'
[Metadata] Adding metadata to "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4' -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].meta' -map 0 -dn -c copy -metadata 'title=The Stand - The End' -metadata date=20201217 -metadata 'description=When the "Captain Trips" flu epidemic wipes out more than 99% of the population, the remaining few immune to the disease, including Stu Redman, Frannie Goldsmith, and Harold Lauder, set out in search of other survivors, all the while, experiencing visions of the nurturing Mother Abagail and the menacing figure of The Dark Man. (TV-MA L, V)' -metadata 'synopsis=When the "Captain Trips" flu epidemic wipes out more than 99% of the population, the remaining few immune to the disease, including Stu Redman, Frannie Goldsmith, and Harold Lauder, set out in search of other survivors, all the while, experiencing visions of the nurturing Mother Abagail and the menacing figure of The Dark Man. (TV-MA L, V)' -metadata purl=https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/ -metadata comment=https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/ -metadata artist=CBSI-NEW -metadata 'show=The Stand' -metadata season_number=1 -metadata 'episode_id=Episode 1' -metadata episode_sort=1 -map_metadata 1 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].temp.mp4'
[SponSkrub] Skipping sponskrub since it is not a YouTube video
[EmbedThumbnail] mutagen: Adding thumbnail to "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
```


Discussion:
i believe the issue is with DRM, yt-dlp doesn't work with DRM protected movies
...FML I can't believe I tried everything, without even verifying if it wasn't DRM lol.  I'll find a url that isn't DRM and quickly update/close. 
OK, phew!  It wasn't a DRM issue, as it works locally on my other US based server.  Any other server I try, outside of the US, geo-verification-proxy doesn't get passed the JSON request anymore
The following workaround completes successfully.. But, now the download is ran thru the PROXY:

Command:

 yt-dlp --cookies PPLUS_COOKIE.txt 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/' --verbose --add-header 'X-Forwarded-For: PROXY_IP' --geo-verification-proxy IP:PORT --proxy IP:PORT --ignore-config

### Verbose Log:
```
[debug] Command-line config: ['--cookies', 'PPLUS_COOKIE.txt', 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/', '--verbose', '--add-header', 'X-Forwarded-For: PROXY_IP', '--geo-verification-proxy', 'PROXY_IP:PORT', '--proxy', 'PROXY_IP:PORT', '-N50', '--ignore-config']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.08.10 (zip)
[debug] Python version 3.7.3 (CPython 64bit) - Linux-4.19.0-17-amd64-x86_64-with-debian-10.10
[debug] exe versions: ffmpeg v1.27-6-ge0542c4, ffprobe v1.27-6-ge0542c4, rtmpdump 2.4
[debug] Optional libraries: keyring, mutagen, pycryptodome, sqlite, websockets
[debug] Proxy map: {'http': 'PROXY_IP:PORT', 'https': 'PROXY_IP:PORT'}
[debug] [ParamountPlus] Extracting URL: https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading JSON metadata
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading JSON metadata
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading DASH_CENC_PRECON SMIL data
[ParamountPlus] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, vcodec:vp9.2(10), acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading 1 format(s): hls-4547
[debug] Invoking downloader on "https://cbsios-vh.akamaihd.net/i/temp_hd_gallery_video/CBS_Production_Outlet_VMS/video_robot/CBS_Production_Entertainment/2020/12/05/1828043843952/CBS_THE_STAND_101_AA_8CH_394714_,2228,4628,3128,1628,848,503,000.mp4.csmil/index_1_av.m3u8?null=0&id=AgBN93JMFzgFhm2mFGEyyQPMvJhnFUCZdT6BEJ4pdUzfdqemXMcYS97fIPCjun6vgRt+YkuOlaxB0A%3d%3d&hdntl=exp=1628829677~acl=%2fi%2ftemp_hd_gallery_video%2fCBS_Production_Outlet_VMS%2fvideo_robot%2fCBS_Production_Entertainment%2f2020%2f12%2f05%2f1828043843952%2fCBS_THE_STAND_101_AA_8CH_394714_*~data=hdntl~hmac=ddc5dfdfcb769b436f8451914c6a132a7360f4b3b56692421a6cd3d2183479c3"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 354
[download] Destination: The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome

TRUNCATED DOWNLOAD LOG..

[download]  99.6% of ~1.94GiB at  1.85MiB/s ETA 00:00
[download]  99.7% of ~1.93GiB at  1.10MiB/s ETA 00:00
[download]  99.7% of ~1.93GiB at  1.10MiB/s ETA 00:00
[download] 100.0% of ~1.93GiB at  2.81MiB/s ETA 00:00
[download] 100.0% of ~1.93GiB at  2.81MiB/s ETA 00:00
[download] 100% of 1.93GiB in 00:28
[debug] ffmpeg command line: ffprobe -show_streams 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4'
[FixupM3u8] Fixing malformed AAC bitstream of "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4' -c copy -map 0 -dn -f mp4 -bsf:a aac_adtstoasc 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].temp.mp4'
[SponSkrub] Skipping sponskrub since it is not a YouTube video

```
@shirt-dev 
### **Here is the same command working on the last release of yt-dlp, something broke after this release:**

**yt-dlp Version:**
2021.08.02

**COMMAND USED:**

```
yt-dlp --cookies PPLUS_COOKIE.txt 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/' --verbose &> LAST_RELEASE_LOG.txt
```

**VERBOSE LOG:**

```
[debug] User config file: /root/yt-dlp.conf
[debug] User config: ['--retries', '3', '--ap-mso', 'Spectrum', '--ap-username', 'PRIVATE', '--ap-password', 'PRIVATE', '-N50', '--geo-verification-proxy', 'PROXY_IP:PORT', '--geo-bypass-country', 'US', '-f', 'bv+ba/b', '--add-metadata', '--write-all-thumbnails', '--embed-thumbnail']
[debug] Command-line config: ['--cookies', 'PPLUS_COOKIE.txt', 'https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.08.02 (zip)
[debug] Python version 3.7.3 (CPython 64bit) - Linux-4.19.0-17-amd64-x86_64-with-debian-10.10
[debug] exe versions: ffmpeg v1.27-6-ge0542c4, ffprobe v1.27-6-ge0542c4, rtmpdump 2.4
[debug] Proxy map: {}
[debug] Using fake IP 6.111.131.160 (US) as X-Forwarded-For
[debug] [CBS] Extracting URL: https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading XML
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading StreamPack SMIL data
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, vcodec:vp9.2(10), acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading JSON metadata
[info] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading 1 format(s): hls-4547
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Downloading thumbnail  ...
[CBS] JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ: Writing thumbnail to: The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].jpg
[debug] Invoking downloader on "https://cbsios-vh.akamaihd.net/i/temp_hd_gallery_video/CBS_Production_Outlet_VMS/video_robot/CBS_Production_Entertainment/2020/12/05/1828043843952/CBS_THE_STAND_101_AA_8CH_394714_,2228,4628,3128,1628,848,503,000.mp4.csmil/index_1_av.m3u8?null=0&id=AgCU+wd9AhC6dIuuFGG6lG8T9I6OWUlL32aum9U%2fGsuI+132oaoh6NxSWeseIlvG1FGLiS%2f7j3snUw%3d%3d&hdntl=exp=1628831755~acl=%2fi%2ftemp_hd_gallery_video%2fCBS_Production_Outlet_VMS%2fvideo_robot%2fCBS_Production_Entertainment%2f2020%2f12%2f05%2f1828043843952%2fCBS_THE_STAND_101_AA_8CH_394714_*~data=hdntl~hmac=2c6186a6959eed0d09343df9918b3a9f27b822959314a8630a1fb12fc7935e7c"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 354
[download] Destination: The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4
WARNING: The download speed shown is only of one thread. This is a known issue and patches are welcome

TRUNCATED DOWNLOAD OUTPUT:

[download] 100.0% of ~1.93GiB at 68.83MiB/s ETA 00:00
[download] 100% of 1.93GiB in 00:22
[debug] ffmpeg command line: ffprobe -show_streams 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4'
[FixupM3u8] Fixing malformed AAC bitstream of "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4' -c copy -map 0 -dn -f mp4 -bsf:a aac_adtstoasc 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].temp.mp4'
[Metadata] Adding metadata to "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4' -i 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].meta' -map 0 -dn -c copy -metadata 'title=The Stand - The End' -metadata date=20201217 -metadata 'description=When the "Captain Trips" flu epidemic wipes out more than 99% of the population, the remaining few immune to the disease, including Stu Redman, Frannie Goldsmith, and Harold Lauder, set out in search of other survivors, all the while, experiencing visions of the nurturing Mother Abagail and the menacing figure of The Dark Man. (TV-MA L, V)' -metadata 'synopsis=When the "Captain Trips" flu epidemic wipes out more than 99% of the population, the remaining few immune to the disease, including Stu Redman, Frannie Goldsmith, and Harold Lauder, set out in search of other survivors, all the while, experiencing visions of the nurturing Mother Abagail and the menacing figure of The Dark Man. (TV-MA L, V)' -metadata purl=https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/ -metadata comment=https://www.paramountplus.com/shows/the-stand/video/JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ/the-stand-the-end/ -metadata artist=CBSI-NEW -metadata 'show=The Stand' -metadata season_number=1 -metadata 'episode_id=Episode 1' -metadata episode_sort=1 -map_metadata 1 'file:The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].temp.mp4'
[SponSkrub] Skipping sponskrub since it is not a YouTube video
[EmbedThumbnail] mutagen: Adding thumbnail to "The Stand - The End [JudCDITcmIS5TjyvnKdqjY5zHNR1t9wZ].mp4"
```
yt-dlp  will work on most of the TV series (although not  all episodes are downloadable)
but your theatrical movies (downsizing) are DRM protected. 
> yt-dlp will work on most of the TV series (although not all episodes are downloadable) > but your theatrical movies (downsizing) are DRM protected.  

Fully understood, and I appreciate the clarification :)  
The issue isn't DRM though, in this instance, as downgrading to 2021.08.02 fixes this failure to download the JSON.  

Something broke between 2021.08.02 and the latest release, and ParamountPlus.py and CBS.py were both modified in-between these updates.   

Latest release works perfectly fine on my US servers, but the moment I use --geo-verification-proxy on my foreign servers, yt-dlp fails to parse the JSON.  

I've written several [bash scripts](https://github.com/ohmybahgosh/YT-DLP-SCRIPTS/blob/main/PARAMOUNT-YTDLP/PARAMOUNT-V2-YTDLP) that utilize yt-dlp to automate extractions on Paramount Plus, and those scripts broke on my foreign servers using --geo-verification-proxy, directly after migrating from 2021.08.02 to the latest release.  

While those very same scripts on the very same latest version work without issue on my US based servers.

***Apologies for all the edits, typing this all on my phone lol***

Resolving patch:
diff --git a/yt_dlp/extractor/paramountplus.py b/yt_dlp/extractor/paramountplus.py
--- a/yt_dlp/extractor/paramountplus.py
+++ b/yt_dlp/extractor/paramountplus.py
@@ -90,7 +90,7 @@ class ParamountPlusIE(CBSBaseIE):
     def _extract_video_info(self, content_id, mpx_acc=2198311517):
         items_data = self._download_json(
             'https://www.paramountplus.com/apps-api/v2.0/androidtv/video/cid/%s.json' % content_id,
-            content_id, query={'locale': 'en-us', 'at': 'ABCqWNNSwhIqINWIIAG+DFzcFUvF8/vcN6cNyXFFfNzWAIvXuoVgX+fK4naOC7V8MLI='})
+            content_id, query={'locale': 'en-us', 'at': 'ABCqWNNSwhIqINWIIAG+DFzcFUvF8/vcN6cNyXFFfNzWAIvXuoVgX+fK4naOC7V8MLI='}, headers=self.geo_verification_headers())
 
         asset_types = {
             item.get('assetType'): {


Test patch: