Repository: yt-dlp/yt-dlp

Issue:
Error when downloading from Box.com (HTTP 401 and HTTP 403) 
### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2022.09.01** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required

### Region

USA, Singapore

### Provide a description that is worded well enough to be understood

Downloading from Box leads to 403 errors when using the box.com link and leads to a 401 unauthorised error when using the manifest link from network. 

https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt/file/817282203033 

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
yt-dlp 'https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt/file/817282203033' -vU
[debug] Command-line config: ['https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt/file/817282203033', '-vU']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.01 [5d7c7d6] (zip)
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.10.16.3-microsoft-standard-WSL2-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7, rtmpdump 2.4
[debug] Optional libraries: certifi-2019.11.28, pyxattr-0.6.1, secretstorage-2.3.1, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1670 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.09.01, Current version: 2022.09.01
yt-dlp is up to date (2022.09.01)
[debug] [Box] Extracting URL: https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt/file/817282203033
[Box] 817282203033: Downloading webpage
[Box] 817282203033: Downloading token JSON metadata
[Box] 817282203033: Downloading file JSON metadata
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 817282203033: Downloading 1 format(s): download
[debug] Invoking http downloader on "https://dl2.boxcloud.com/api/2.0/files/817282203033/content?access_token=1%219od2zCTpeFP2B9Vlqq-b-p3dN96GGmTjrG8jnjfgbE-36u0ead5H-mwANZD0FUYlPZv1PHTJR4tyjPp_GA0FRZetabHZ_hxnGEOYHVMRLdd-2-4XSqpM-KN1noS1erL5_42yqG99HFAqYffcFQsIYdNifETqbz_VEJKboZN8EjAJTzjJemiGu5nWeZIL8vau_pf0JvSjPI0-hNgPwemHltH6esqe6mWUeFvsVKNKjioDhfeHhGukju5rMTlf1s4UlBH-jeofOqG91FhMANB3pAY1FD3eQ84x5Mj42EWaqfXTIa14J8uPVN9ZVTfEe90sxOa_QyVXm2gKJve11TMt26G75nufaNXyUuS8HuMEwY_0Ui2hXuczlef4yL9PCBSnI-Evdig49IxOGj7ueXY1AMLU5dOFoVYiUTPnuxfNSkHhxAW18xJRfoisST56p3QeQcCPhb4hS1KN9qfCoH0isDU9noCCZbDRYQ1HriV24QS0ub8-a1Ff9D21bntkxocuYJld5ke85jrYXpGBMtPUsFUN3EnR9JBu8Fie59YZOy_HT4N6vFhTCg7k9ESwbWZJveL2&shared_link=https%3A%2F%2Fapp.box.com%2Fs%2F38porlf0ir7j9jxtoge7acdh5bd2fkzt"
ERROR: unable to download video data: HTTP Error 403: Forbidden
Traceback (most recent call last):
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3171, in process_info
    success, real_download = self.dl(temp_filename, info_dict)
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 2895, in dl
    return fd.download(name, new_info, subtitle)
  File "/usr/local/bin/yt-dlp/yt_dlp/downloader/common.py", line 443, in download
    ret = self.real_download(filename, info_dict)
  File "/usr/local/bin/yt-dlp/yt_dlp/downloader/http.py", line 371, in real_download
    establish_connection()
  File "/usr/local/bin/yt-dlp/yt_dlp/downloader/http.py", line 129, in establish_connection
    ctx.data = self.ydl.urlopen(request)
  File "/usr/local/bin/yt-dlp/yt_dlp/YoutubeDL.py", line 3656, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.8/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.8/urllib/request.py", line 640, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.8/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.8/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

========================

.\yt-dlp.exe 'https://dl2.boxcloud.com/api/2.0/internal_files/817282203033/versions/875206984233/representations/dash/content/manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https%3A%2F%2Fsunsetlearning.app.box.com%2Fs%2F38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85.0' -o file.mp4 --cookies-from-browser firefox -vU
[debug] Command-line config: ['https://dl2.boxcloud.com/api/2.0/internal_files/817282203033/versions/875206984233/representations/dash/content/manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https%3A%2F%2Fsunsetlearning.app.box.com%2Fs%2F38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85.0', '-o', 'file.mp4', '--cookies-from-browser', 'firefox', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.01 [5d7c7d6] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.22621-SP0
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[Cookies] Extracting cookies from firefox
[debug] Extracting cookies from: "C:\Users\rongq\AppData\Roaming\Mozilla\Firefox\Profiles\n8o907cd.default-release\cookies.sqlite"
[Cookies] Extracted 617 cookies from firefox
[debug] Proxy map: {}
[debug] Loaded 1670 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.09.01, Current version: 2022.09.01
yt-dlp is up to date (2022.09.01)
[debug] [generic] Extracting URL: https://dl2.boxcloud.com/api/2.0/internal_files/817282203033/versions/875206984233/representations/dash/content/manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https%3A%2F%2Fsunsetlearning.app.box.com%2Fs%2F38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85.0
[generic] manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85: Extracting information
[debug] Identified a DASH manifest
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: best/bestvideo+bestaudio
[info] manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85: Downloading 1 format(s): 0+2
WARNING: You have requested merging of multiple formats but ffmpeg is not installed. The formats won't be merged
[debug] Invoking dashsegments downloader on "https://dl2.boxcloud.com/api/2.0/internal_files/817282203033/versions/875206984233/representations/dash/content/manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https%3A%2F%2Fsunsetlearning.app.box.com%2Fs%2F38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85.0"
[dashsegments] Total fragments: 1066
[download] Destination: file.f0.mp4
[debug] File locking is not supported. Proceeding without locking
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (1/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (2/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (3/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (4/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (5/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (6/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (7/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (8/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (9/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (10/10)...
[download] Got error: HTTP Error 401: Unauthorized. Giving up after 10 retries
  File "yt_dlp\__main__.py", line 18, in <module>
  File "yt_dlp\__init__.py", line 962, in main
  File "yt_dlp\__init__.py", line 954, in _real_main
  File "yt_dlp\YoutubeDL.py", line 3293, in download
  File "yt_dlp\YoutubeDL.py", line 3268, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1448, in extract_info
  File "yt_dlp\YoutubeDL.py", line 1459, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1556, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1614, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2712, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3153, in process_info
  File "yt_dlp\YoutubeDL.py", line 2895, in dl
  File "yt_dlp\downloader\common.py", line 443, in download
  File "yt_dlp\downloader\dash.py", line 54, in real_download
  File "yt_dlp\downloader\fragment.py", line 373, in download_and_append_fragments_multiple
  File "yt_dlp\downloader\fragment.py", line 517, in download_and_append_fragments
  File "yt_dlp\downloader\fragment.py", line 463, in download_fragment
  File "yt_dlp\utils.py", line 5794, in __iter__
  File "yt_dlp\downloader\fragment.py", line 460, in error_callback
  File "yt_dlp\downloader\common.py", line 388, in report_retry
  File "yt_dlp\utils.py", line 5801, in report_retry
  File "yt_dlp\downloader\common.py", line 391, in <lambda>
  File "yt_dlp\YoutubeDL.py", line 994, in report_error
  File "yt_dlp\YoutubeDL.py", line 923, in trouble

ERROR: fragment 1 not found, unable to continue
  File "yt_dlp\__main__.py", line 18, in <module>
  File "yt_dlp\__init__.py", line 962, in main
  File "yt_dlp\__init__.py", line 954, in _real_main
  File "yt_dlp\YoutubeDL.py", line 3293, in download
  File "yt_dlp\YoutubeDL.py", line 3268, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1448, in extract_info
  File "yt_dlp\YoutubeDL.py", line 1459, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1556, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1614, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2712, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3153, in process_info
  File "yt_dlp\YoutubeDL.py", line 2895, in dl
  File "yt_dlp\downloader\common.py", line 443, in download
  File "yt_dlp\downloader\dash.py", line 54, in real_download
  File "yt_dlp\downloader\fragment.py", line 373, in download_and_append_fragments_multiple
  File "yt_dlp\downloader\fragment.py", line 518, in download_and_append_fragments
  File "yt_dlp\downloader\fragment.py", line 482, in append_fragment
  File "yt_dlp\YoutubeDL.py", line 994, in report_error
  File "yt_dlp\YoutubeDL.py", line 923, in trouble


[debug] Invoking dashsegments downloader on "https://dl2.boxcloud.com/api/2.0/internal_files/817282203033/versions/875206984233/representations/dash/content/manifest.mpd?access_token=1!9BFT4tOu-qnx3OaeW34VDZZ4s3I3wUyHAOMuo7QzQdm8EtjxJWLqQQl6x1D2LpdqHvgYkACpgDE8ViNlaA4HDHUIa1HYJQbkQl9HMJdZp9_bPERpZLDTxTbjjWCtJJtd8BUNR_iQGmS4i9F6PTsFzctTTwYRwGd0Z37vTstel1t3N07r5joCbOhAGJNQkc7hFeGgcj2TnkXjZPchCwHqb5gtqs4KAoBT9qVU-ClQQ9NMjPZ0FD4rcYhI_fdjGoGC66SzeRx1brrFgaGkP2c7LS_SIgHHeUzG4pDBeGBSEaaunL88t-oQpjgbNHbZFIp8RL16muWz0eGTCUw90Di7srXZSVonUtFjuUQ6IthM1832FqNKQrDYOJe2mw-bhge4Hvb6SsWTRTWyW4xcDqxbJZqjDr8Yxs8FEA88eELTYAb5EiYk69YAs4cFC_CdLnHuP4bJXlPusu7KN40X4eQxiJgmeW7HUA1GE9qZSXi9xK6MODbaKQEifhG4AwSmfzg1X0A7AjvrqExEEapUis39zc3o_qEvXpuT9ZYOIydICicillnBwHd3Z9-Dqyosq7kI4poC&shared_link=https%3A%2F%2Fsunsetlearning.app.box.com%2Fs%2F38porlf0ir7j9jxtoge7acdh5bd2fkzt&box_client_name=box-content-preview&box_client_version=2.85.0"
[dashsegments] Total fragments: 1066
[download] Destination: file.f2.m4a
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (1/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (2/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (3/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (4/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (5/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (6/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (7/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (8/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (9/10)...
[download] Got error: HTTP Error 401: Unauthorized. Retrying fragment 1 (10/10)...
[download] Got error: HTTP Error 401: Unauthorized. Giving up after 10 retries
  File "yt_dlp\__main__.py", line 18, in <module>
  File "yt_dlp\__init__.py", line 962, in main
  File "yt_dlp\__init__.py", line 954, in _real_main
  File "yt_dlp\YoutubeDL.py", line 3293, in download
  File "yt_dlp\YoutubeDL.py", line 3268, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1448, in extract_info
  File "yt_dlp\YoutubeDL.py", line 1459, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1556, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1614, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2712, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3153, in process_info
  File "yt_dlp\YoutubeDL.py", line 2895, in dl
  File "yt_dlp\downloader\common.py", line 443, in download
  File "yt_dlp\downloader\dash.py", line 54, in real_download
  File "yt_dlp\downloader\fragment.py", line 373, in download_and_append_fragments_multiple
  File "yt_dlp\downloader\fragment.py", line 517, in download_and_append_fragments
  File "yt_dlp\downloader\fragment.py", line 463, in download_fragment
  File "yt_dlp\utils.py", line 5794, in __iter__
  File "yt_dlp\downloader\fragment.py", line 460, in error_callback
  File "yt_dlp\downloader\common.py", line 388, in report_retry
  File "yt_dlp\utils.py", line 5801, in report_retry
  File "yt_dlp\downloader\common.py", line 391, in <lambda>
  File "yt_dlp\YoutubeDL.py", line 994, in report_error
  File "yt_dlp\YoutubeDL.py", line 923, in trouble

ERROR: fragment 1 not found, unable to continue
  File "yt_dlp\__main__.py", line 18, in <module>
  File "yt_dlp\__init__.py", line 962, in main
  File "yt_dlp\__init__.py", line 954, in _real_main
  File "yt_dlp\YoutubeDL.py", line 3293, in download
  File "yt_dlp\YoutubeDL.py", line 3268, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1448, in extract_info
  File "yt_dlp\YoutubeDL.py", line 1459, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1556, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1614, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2712, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3153, in process_info
  File "yt_dlp\YoutubeDL.py", line 2895, in dl
  File "yt_dlp\downloader\common.py", line 443, in download
  File "yt_dlp\downloader\dash.py", line 54, in real_download
  File "yt_dlp\downloader\fragment.py", line 373, in download_and_append_fragments_multiple
  File "yt_dlp\downloader\fragment.py", line 518, in download_and_append_fragments
  File "yt_dlp\downloader\fragment.py", line 482, in append_fragment
  File "yt_dlp\YoutubeDL.py", line 994, in report_error
  File "yt_dlp\YoutubeDL.py", line 923, in trouble
```



Discussion:
This still happens...even if I extract the actual mpd file uri and pass that, we end up getting denied.
This extractor appears to fix it but was never merged into the old youtube-dl or here.

https://github.com/ytdl-org/youtube-dl/pull/27874
I don't get the 403 error when trying on nightly, but it still fails. Here's my log of a different url but same (?) problem:

```
[debug] Command-line config: ['-vU', 'https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt/file/817282203033']
[debug] User config "C:\Users\Username\yt-dlp.conf": ['--add-metadata', '--download-archive=____youtubeDLdownloaded.txt', '--sub-langs', '.+-orig$,en,all', '--check-formats', '--embed-subs', '--embed-thumbnail', '--embed-metadata', '--ignore-errors', '--include-ads', '--trim-filenames', '100', '--write-annotations', '--write-auto-sub', '--write-description', '--write-info-json', '--write-thumbnail', '-S', 'hdr,res,vcodec:h264', '--concurrent-fragments', '3', '--windows-filenames', '--no-overwrite', '--force-ipv4']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out cp1252 (No VT), error cp1252 (No VT), screen cp1252 (No VT)
[debug] yt-dlp version nightly@2023.11.16.232727 from yt-dlp/yt-dlp-nightly-builds [66a0127d4] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2022-10-20-git-eb9153b4a7-full_build-www.gyan.dev (setts), ffprobe 2022-10-20-git-eb9153b4a7-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.19.0, brotli-1.1.0, certifi-2023.07.22, mutagen-1.47.0, requests-2.31.0, sqlite3-3.35.5, urllib3-2.1.0, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1907 extractors
[debug] Loading archive file 'archive.txt'
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2023.11.16.232727 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2023.11.16.232727 from yt-dlp/yt-dlp-nightly-builds)
[Box] Extracting URL: https://sunsetlearning.app.box.com/s/38porlf0ir7j9jxtoge7acdh5bd2fkzt/file/817282203033
[Box] 817282203033: Downloading webpage
[Box] 817282203033: Downloading token JSON metadata
[Box] 817282203033: Downloading file JSON metadata
[debug] Sort order given by user: hdr, res, vcodec:h264
[debug] Formats sorted by: hasvid, ie_pref, hdr, res, vcodec:h264(7), lang, quality, fps, channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] Testing format download
[info] Unable to download format download. Skipping...
[info] Testing format download
[info] Unable to download format download. Skipping...
ERROR: [Box] 817282203033: Requested format is not available. Use --list-formats for a list of available formats
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1567, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1723, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1782, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2884, in process_video_result
yt_dlp.utils.ExtractorError: [Box] 817282203033: Requested format is not available. Use --list-formats for a list of available formats
```
It's because `--check-formats` is in your config. If you pass `--no-check-formats` you will likely get the same 403 error
Indeed!

```
[debug] Command-line config: ['-vU', 'https://app.box.com/s/448e1d6zw0hvwmekg3nb4bkpsuk0wfhj/file/1300373106323', '--no-check-formats']
[debug] User config "C:\Users\Username\yt-dlp.conf": ['--add-metadata', '--download-archive=____youtubeDLdownloaded.txt', '--sub-langs', '.+-orig$,en,all', '--check-formats', '--embed-subs', '--embed-thumbnail', '--embed-metadata', '--ignore-errors', '--include-ads', '--trim-filenames', '100', '--write-annotations', '--write-auto-sub', '--write-description', '--write-info-json', '--write-thumbnail', '-S', 'hdr,res,vcodec:h264', '--concurrent-fragments', '3', '--windows-filenames', '--no-overwrite', '--force-ipv4']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out cp1252 (No VT), error cp1252 (No VT), screen cp1252 (No VT)
[debug] yt-dlp version nightly@2023.11.16.232727 from yt-dlp/yt-dlp-nightly-builds [66a0127d4] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2022-10-20-git-eb9153b4a7-full_build-www.gyan.dev (setts), ffprobe 2022-10-20-git-eb9153b4a7-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.19.0, brotli-1.1.0, certifi-2023.07.22, mutagen-1.47.0, requests-2.31.0, sqlite3-3.35.5, urllib3-2.1.0, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1907 extractors
[debug] Loading archive file 'archive.txt'
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2023.11.16.232727 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2023.11.16.232727 from yt-dlp/yt-dlp-nightly-builds)
[Box] Extracting URL: https://app.box.com/s/448e1d6zw0hvwmekg3nb4bkpsuk0wfhj/file/1300373106323
[Box] 1300373106323: Downloading webpage
[Box] 1300373106323: Downloading token JSON metadata
[Box] 1300373106323: Downloading file JSON metadata
[debug] Sort order given by user: hdr, res, vcodec:h264
[debug] Formats sorted by: hasvid, ie_pref, hdr, res, vcodec:h264(7), lang, quality, fps, channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 1300373106323: Downloading 1 format(s): download
[info] There's no video description to write
[info] There are no subtitles for the requested languages
[info] There are no video thumbnails to download
[info] Writing video metadata as JSON to: 0177USCH01HallofColumnsSouthDoor_2021-01-06_15h55min05s433ms_1.mp4 [1300373106323].info.json
WARNING: There are no annotations to write.
[debug] Invoking http downloader on "https://public.boxcloud.com/api/2.0/files/1300373106323/content?access_token=1%21PlXBxtkYQDAbcDGUV-VGMmfkdyBxmZ6totXD1FWFlD91vygVun5Ptz5dxkOr_j-ivus6I5F2lvjuh7KzJOEGJWa1roiB-YGLZ4hcCFgkCmGJ7nlw4mVjZA_wyleuWn-YkY8unu9jta2JhaWHV2pHEGsE4tDMgfj9of1DcBEXP-bpVqfUGWoiiMJX9sYKwmiBFuVqDzeaWq0w_FvAk38gUpe2oUs33iblfnl1S3_oDzGWFMnmPUDjcJTqo0wBiw4_qZm41bj8HVu1M7SwlqWYu8v6pK7tNLFNoXa2xucKeLElUdnJytMGHHfM44lLCpTrqm-TkfuooCrSkK327d5a-ncNqyEWymqJ7P_8lsA5gZF8Zhj6_tKzK04UUElErkyucWKiWSccI0aFJOVPomVWDH9IX2FWk7F2NAVpao4HyIuckJfTY6OOVi5KZdayFUSxV9olJhYuwmVn4QT16FIjyqDg9BYHIEeOy7Yt-QEWFkt_Gb3QLH_KNpnaD9GzGGvEqqlcB14E_RkeZrsv03NFdpIYGstGmR3eI9sI3Giuqef7BhNLV64xlHazXU2UY6fK9ZMt&shared_link=https%3A%2F%2Fapp.box.com%2Fs%2F448e1d6zw0hvwmekg3nb4bkpsuk0wfhj"
ERROR: unable to download video data: HTTP Error 403: Forbidden
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 4052, in urlopen
  File "yt_dlp\networking\common.py", line 114, in send
  File "yt_dlp\networking\_helper.py", line 204, in wrapper
  File "yt_dlp\networking\common.py", line 325, in send
  File "yt_dlp\networking\_requests.py", line 341, in _send
yt_dlp.networking.exceptions.HTTPError: HTTP Error 403: Forbidden

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 3388, in process_info
  File "yt_dlp\YoutubeDL.py", line 3109, in dl
  File "yt_dlp\downloader\common.py", line 455, in download
  File "yt_dlp\downloader\http.py", line 364, in real_download
  File "yt_dlp\downloader\http.py", line 120, in establish_connection
  File "yt_dlp\YoutubeDL.py", line 4074, in urlopen
yt_dlp.networking.exceptions._CompatHTTPError: HTTP Error 403: Forbidden
```
it needs this

```diff
diff --git a/yt_dlp/extractor/box.py b/yt_dlp/extractor/box.py
index 8ab149626..57979bf85 100644
--- a/yt_dlp/extractor/box.py
+++ b/yt_dlp/extractor/box.py
@@ -1,12 +1,13 @@
 import json
+import urllib.parse
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     parse_iso8601,
-    # try_get,
     update_url_query,
+    url_or_none,
 )
+from ..utils.traversal import traverse_obj
 
 
 class BoxIE(InfoExtractor):
@@ -58,26 +59,15 @@ def _real_extract(self, url):
 
         formats = []
 
-        # for entry in (try_get(f, lambda x: x['representations']['entries'], list) or []):
-        #     entry_url_template = try_get(
-        #         entry, lambda x: x['content']['url_template'])
-        #     if not entry_url_template:
-        #         continue
-        #     representation = entry.get('representation')
-        #     if representation == 'dash':
-        #         TODO: append query to every fragment URL
-        #         formats.extend(self._extract_mpd_formats(
-        #             entry_url_template.replace('{+asset_path}', 'manifest.mpd'),
-        #             file_id, query=query))
-
-        authenticated_download_url = f.get('authenticated_download_url')
-        if authenticated_download_url and f.get('is_download_available'):
-            formats.append({
-                'ext': f.get('extension') or determine_ext(title),
-                'filesize': f.get('size'),
-                'format_id': 'download',
-                'url': update_url_query(authenticated_download_url, query),
-            })
+        for url_tmpl in traverse_obj(f, (
+            'representations', 'entries', lambda _, v: v['representation'] == 'dash',
+            'content', 'url_template', {url_or_none}
+        )):
+            manifest_url = update_url_query(url_tmpl.replace('{+asset_path}', 'manifest.mpd'), query)
+            fmts = self._extract_mpd_formats(manifest_url, file_id)
+            for fmt in fmts:
+                fmt['extra_param_to_segment_url'] = urllib.parse.urlparse(manifest_url).query
+            formats.extend(fmts)
 
         creator = f.get('created_by') or {}
 
```
I can confirm that this patch works.

Resolving patch:
diff --git a/yt_dlp/extractor/box.py b/yt_dlp/extractor/box.py
--- a/yt_dlp/extractor/box.py
+++ b/yt_dlp/extractor/box.py
@@ -1,16 +1,17 @@
 import json
+import urllib.parse
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     parse_iso8601,
-    # try_get,
     update_url_query,
+    url_or_none,
 )
+from ..utils.traversal import traverse_obj
 
 
 class BoxIE(InfoExtractor):
-    _VALID_URL = r'https?://(?:[^.]+\.)?app\.box\.com/s/(?P<shared_name>[^/]+)/file/(?P<id>\d+)'
+    _VALID_URL = r'https?://(?:[^.]+\.)?app\.box\.com/s/(?P<shared_name>[^/?#]+)/file/(?P<id>\d+)'
     _TEST = {
         'url': 'https://mlssoccer.app.box.com/s/0evd2o3e08l60lr4ygukepvnkord1o1x/file/510727257538',
         'md5': '1f81b2fd3960f38a40a3b8823e5fcd43',
@@ -18,11 +19,12 @@ class BoxIE(InfoExtractor):
             'id': '510727257538',
             'ext': 'mp4',
             'title': 'Garber   St. Louis will be 28th MLS team  +scarving.mp4',
-            'uploader': 'MLS Video',
+            'uploader': '',
             'timestamp': 1566320259,
             'upload_date': '20190820',
             'uploader_id': '235196876',
-        }
+        },
+        'params': {'skip_download': 'dash fragment too small'},
     }
 
     def _real_extract(self, url):
@@ -58,26 +60,15 @@ def _real_extract(self, url):
 
         formats = []
 
-        # for entry in (try_get(f, lambda x: x['representations']['entries'], list) or []):
-        #     entry_url_template = try_get(
-        #         entry, lambda x: x['content']['url_template'])
-        #     if not entry_url_template:
-        #         continue
-        #     representation = entry.get('representation')
-        #     if representation == 'dash':
-        #         TODO: append query to every fragment URL
-        #         formats.extend(self._extract_mpd_formats(
-        #             entry_url_template.replace('{+asset_path}', 'manifest.mpd'),
-        #             file_id, query=query))
-
-        authenticated_download_url = f.get('authenticated_download_url')
-        if authenticated_download_url and f.get('is_download_available'):
-            formats.append({
-                'ext': f.get('extension') or determine_ext(title),
-                'filesize': f.get('size'),
-                'format_id': 'download',
-                'url': update_url_query(authenticated_download_url, query),
-            })
+        for url_tmpl in traverse_obj(f, (
+            'representations', 'entries', lambda _, v: v['representation'] == 'dash',
+            'content', 'url_template', {url_or_none}
+        )):
+            manifest_url = update_url_query(url_tmpl.replace('{+asset_path}', 'manifest.mpd'), query)
+            fmts = self._extract_mpd_formats(manifest_url, file_id)
+            for fmt in fmts:
+                fmt['extra_param_to_segment_url'] = urllib.parse.urlparse(manifest_url).query
+            formats.extend(fmts)
 
         creator = f.get('created_by') or {}
 


Test patch: