Repository: yt-dlp/yt-dlp

Issue:
NFL :HTTP Error 403
### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2021.11.10.1**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- [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](https://github.com/ytdl-org/youtube-dl#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

_No response_

### Description

URL: https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference

Plays correclty in a browser.

--no-check-certificate  is required (without you recive [SSL: CERTIFICATE_VERIFY_FAILED]  )

-WARNING: The program functionality for this site has been marked as broken, and will probably not work.

-ERROR: [Anvato] 1235076: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue.....

Thanks in advance
Ringo


### Verbose log

```shell
yt-dlp.py -v --no-check-certificate "https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference"
[debug] Command-line config: ['-v', '--no-check-certificate', 'https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, err utf-8, pref cp1252
[debug] yt-dlp version 2021.11.10.1 (zip)
[debug] Python version 3.6.6 (CPython 64bit) - Windows-10-10.0.14393-SP0
[debug] exe versions: ffmpeg 4.3.2-2021-02-02-full_build-www.gyan.dev, ffprobe 4.3.2-2021-02-02-full_build-www.gyan.dev, rtmpdump 2.4
[debug] Optional libraries: sqlite
[debug] Proxy map: {}
WARNING: The program functionality for this site has been marked as broken, and will probably not work.
[debug] [nfl.com] Extracting URL: https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference
[nfl.com] matt-nagy-we-do-feel-like-we-are-growing-press-conference: Downloading webpage
[debug] [Anvato] Extracting URL: anvato:GXvEgwyJeWem8KCYXfeoHWknwP48Mboj:1235076
[Anvato] 1235076: Fetching server time
[Anvato] 1235076: Downloading JSON metadata
ERROR: [Anvato] 1235076: 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; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output. (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; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\extractor\common.py", line 713, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\YoutubeDL.py", line 3295, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
```



Discussion:
Try this command 
`yt-dlp -v --no-check-certificate "https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference" --referer 'https://www.chicagobears.com/'`

I get this but i'm not sure if it's bcoz of geo restriction or something else is broken
```
C:\Users\Ashish\Desktop> yt-dlp -v --no-check-certificate "https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference" --referer 'https://www.chicagobears.com/'
[debug] Command-line config: ['-v', '--no-check-certificate', 'https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference', '--referer', 'https://www.chicagobears.com/']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, err utf-8, pref cp1252
[debug] yt-dlp version 2021.11.10.1
[debug] Python version 3.8.8 (CPython 64bit) - Windows-10-10.0.19041-SP0
[debug] exe versions: ffmpeg 3.0.1 (needs_adtstoasc), ffprobe 3.0.1
[debug] Optional libraries: Cryptodome, keyring, mutagen, sqlite, websockets
[debug] Proxy map: {}
WARNING: The program functionality for this site has been marked as broken, and will probably not work.
[debug] [nfl.com] Extracting URL: https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference
[nfl.com] matt-nagy-we-do-feel-like-we-are-growing-press-conference: Downloading webpage
[debug] [Anvato] Extracting URL: anvato:GXvEgwyJeWem8KCYXfeoHWknwP48Mboj:1235076
[Anvato] 1235076: Fetching server time
[Anvato] 1235076: Downloading JSON metadata
[Anvato] 1235076: Downloading JSON metadata
[Anvato] 1235076: Downloading JSON metadata
ERROR: [Anvato] 1235076: Unable to download JSON metadata: HTTP Error 404:
```
hmmmm....
I got a 403 error..not 404




```
C:\>yt-dlp -v --no-check-certificate "https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference" --referer 'https://www.chicagobears.com/'
[debug] Command-line config: ['-v', '--no-check-certificate', 'https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference', '--referer', "'https://www.chicagobears.com/'"]
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, err utf-8, pref cp1252
[debug] yt-dlp version 2021.11.10.1 (zip)
[debug] Python version 3.6.6 (CPython 64bit) - Windows-10-10.0.14393-SP0
[debug] exe versions: ffmpeg 4.3.2-2021-02-02-full_build-www.gyan.dev, ffprobe 4.3.2-2021-02-02-full_build-www.gyan.dev, rtmpdump 2.4
[debug] Optional libraries: sqlite
[debug] Proxy map: {}
WARNING: The program functionality for this site has been marked as broken, and will probably not work.
[debug] [nfl.com] Extracting URL: https://www.chicagobears.com/video/matt-nagy-we-do-feel-like-we-are-growing-press-conference
[nfl.com] matt-nagy-we-do-feel-like-we-are-growing-press-conference: Downloading webpage
[debug] [Anvato] Extracting URL: anvato:GXvEgwyJeWem8KCYXfeoHWknwP48Mboj:1235076
[Anvato] 1235076: Fetching server time
[Anvato] 1235076: Downloading JSON metadata
ERROR: [Anvato] 1235076: 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; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output. (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; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "C:\TRANSMOGRIFIER\yt-dlp.py\yt_dlp\extractor\common.py", line 713, in _request_webpage
    return self._downloader.urlopen(url_or_request)
  File "C:\TRANSMOGRIFIER\yt-dlp.py\yt_dlp\YoutubeDL.py", line 3295, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python36\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
```


Yeah it seems u are stuck at that particular request for some reason.
The extractor is a mess so working on it is going to be hard

understood...  
Really appreciate your efforts whenever you have the time!

Resolving patch:
diff --git a/yt_dlp/extractor/nfl.py b/yt_dlp/extractor/nfl.py
--- a/yt_dlp/extractor/nfl.py
+++ b/yt_dlp/extractor/nfl.py
@@ -53,8 +53,7 @@ class NFLBaseIE(InfoExtractor):
                             )
                         )/
                     '''
-    _VIDEO_CONFIG_REGEX = r'<script[^>]+id="[^"]*video-config-[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}[^"]*"[^>]*>\s*({.+})'
-    _WORKING = False
+    _VIDEO_CONFIG_REGEX = r'<script[^>]+id="[^"]*video-config-[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}[^"]*"[^>]*>\s*({.+});?\s*</script>'
 
     def _parse_video_config(self, video_config, display_id):
         video_config = self._parse_json(video_config, display_id)
@@ -66,7 +65,7 @@ def _parse_video_config(self, video_config, display_id):
                 'Anvato', mcp_id)
         else:
             media_id = item.get('id') or item['entityId']
-            title = item['title']
+            title = item.get('title')
             item_url = item['url']
             info = {'id': media_id}
             ext = determine_ext(item_url)
@@ -108,6 +107,9 @@ class NFLIE(NFLBaseIE):
             'timestamp': 1608009755,
             'thumbnail': r're:^https?://.*\.jpg$',
             'uploader': 'NFL',
+            'tags': 'count:6',
+            'duration': 157,
+            'categories': 'count:3',
         }
     }, {
         'url': 'https://www.chiefs.com/listen/patrick-mahomes-travis-kelce-react-to-win-over-dolphins-the-breakdown',
@@ -117,7 +119,8 @@ class NFLIE(NFLBaseIE):
             'ext': 'mp3',
             'title': 'Patrick Mahomes, Travis Kelce React to Win Over Dolphins | The Breakdown',
             'description': 'md5:12ada8ee70e6762658c30e223e095075',
-        }
+        },
+        'skip': 'HTTP Error 404: Not Found',
     }, {
         'url': 'https://www.buffalobills.com/video/buffalo-bills-military-recognition-week-14',
         'only_matching': True,


Test patch: