Repository: yt-dlp
Issue: [rh:urllib] Cannot use file:// url if HTTPS proxy specified 
Labels: bug,regression,core:networking,low-priority

### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

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

### Checklist

- [X] I'm reporting a bug unrelated to a specific site
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [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 [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and 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)

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

Low priority issue but if you provide an HTTPS proxy and try to use a file (or data?) url it will fail as the urllib handler does not support HTTPS proxies.

file urls do not need a proxy. Same goes for data urls too.

This may not be restricted to just HTTPS proxies. Other options that only apply for HTTP requests may also cause similar issues.

Perhaps the file and data url handling should be split out into a separate request handler. Alternatively can try mangle exclusions into `UrllibRH` but that might get messy.

### 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] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
yt-dlp -v file:///tmp/test --enable-file --proxy https://10.255.255.255
[debug] Command-line config: ['-v', 'file:///tmp/test', '--enable-file', '--proxy', 'https://10.255.255.255']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.11.16 from yt-dlp/yt-dlp [24f827875] (pip)
[debug] Python 3.11.6 (CPython x86_64 64bit) - Linux-6.6.6-1-default-x86_64-with-glibc2.38 (OpenSSL 3.1.4 24 Oct 2023, glibc 2.38)
[debug] exe versions: ffmpeg 6.0.1 (fdk,setts), ffprobe 6.0.1
[debug] Optional libraries: Cryptodome-3.19.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.31.0, sqlite3-3.44.2, urllib3-2.1.0, websockets-12.0
[debug] Proxy map: {'all': 'https://10.255.255.255'}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1901 extractors
[generic] Extracting URL: file:///tmp/test
[generic] test: Downloading webpage
ERROR: To use an HTTPS proxy for this request, one of the following dependencies needs to be installed: requests
Traceback (most recent call last):
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/YoutubeDL.py", line 4052, in urlopen
    return self._request_director.send(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/networking/common.py", line 127, in send
    raise NoSupportingHandlers(unsupported_errors, unexpected_errors)
yt_dlp.networking.exceptions.NoSupportingHandlers: Unable to handle request: Unsupported url scheme: "file" (requests), Unsupported proxy type: "https" (urllib)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/YoutubeDL.py", line 1567, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/YoutubeDL.py", line 1702, in __extract_info
    ie_result = ie.extract(url)
                ^^^^^^^^^^^^^^^
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/extractor/common.py", line 715, in extract
    ie_result = self._real_extract(url)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/extractor/generic.py", line 2439, in _real_extract
    full_response = self._request_webpage(url, video_id, headers=filter_dict({
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/extractor/common.py", line 847, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/coletdjnz/.local/share/pipx/venvs/yt-dlp/lib64/python3.11/site-packages/yt_dlp/YoutubeDL.py", line 4062, in urlopen
    raise RequestError(
yt_dlp.networking.exceptions.RequestError: To use an HTTPS proxy for this request, one of the following dependencies needs to be installed: requests
```