8000
Skip to content

[wikimedia] 403 forbidden on mediawiki commons both site and direct file link #16411

@zamkorus

Description

@zamkorus

Checklist

Region

Netherlands

Provide a description that is worded well enough to be understood

Issue happens for both link to media description site e.g. https://commons.wikimedia.org/wiki/File:Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm and direct media link https://upload.wikimedia.org/wikipedia/commons/2/2b/Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm

Provide verbose output that clearly demonstrates the problem

  • Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • If using API, add 'verbose': True to YoutubeDL params instead
  • Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

NORMAL:
PS C:\Users\msi\Desktop\photoswiki> yt-dlp -vU https://commons.wikimedia.org/wiki/File:Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm
[debug] Command-line config: ['-vU', 'https://commons.wikimedia.org/wiki/File:Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm']
[debug] Encodings: locale cp1250, fs utf-8, pref cp1250, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2026.03.17 from yt-dlp/yt-dlp [04d6974f5] (pip)
[debug] Python 3.14.0 (CPython AMD64 64bit) - Windows-11-10.0.26200-SP0 (OpenSSL 3.0.18 30 Sep 2025)
[debug] exe versions: ffmpeg 7.1-full_build-www.gyan.dev (setts), ffprobe 7.1-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2026.02.25, curl_cffi-0.14.0, mutagen-1.47.0, requests-2.33.1, sqlite3-3.50.4, urllib3-2.6.3, websockets-16.0, yt_dlp_ejs-0.8.0
[debug] JS runtimes: deno-2.1.2
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Plugin directories: none
[debug] Loaded 1864 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: stable@2026.03.17 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2026.03.17 from yt-dlp/yt-dlp)
[wikimedia.org] Extracting URL: https://commons.wikimedia.org/wiki/File:Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm
[wikimedia.org] Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract: Downloading webpage
ERROR: [wikimedia.org] Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract: Unable to download webpage: HTTP Error 403: Forbidden (caused by <HTTPError 403: Forbidden>)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 765, in extract
    ie_result = self._real_extract(url)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\wikimedia.py", line 33, in _real_extract
    webpage = self._download_webpage(url, video_id)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 1202, in _download_webpage
    return self.__download_webpage(url_or_request, video_id, note, errnote, None, fatal, *args, **kwargs)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 1153, in download_content
    res = getattr(self, download_handle.__name__)(url_or_request, video_id, **kwargs)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 976, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data,
                                 headers=headers, query=query, expected_status=expected_status,
                                 impersonate=impersonate, require_impersonation=require_impersonation)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 925, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 912, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query, extensions))
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\YoutubeDL.py", line 4260, in urlopen
    return self._request_director.send(req)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\common.py", line 117, in send
    response = handler.send(request)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\_helper.py", line 194, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\common.py", line 359, in send
    return self._send(request)
           ~~~~~~~~~~^^^^^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\_requests.py", line 361, in _send
    raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 403: Forbidden

DIRECT:
PS C:\Users\msi\Desktop\photoswiki> yt-dlp -vU https://upload.wikimedia.org/wikipedia/commons/2/2b/Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm
[debug] Command-line config: ['-vU', 'https://upload.wikimedia.org/wikipedia/commons/2/2b/Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm']
[debug] Encodings: locale cp1250, fs utf-8, pref cp1250, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2026.03.17 from yt-dlp/yt-dlp [04d6974f5] (pip)
[debug] Python 3.14.0 (CPython AMD64 64bit) - Windows-11-10.0.26200-SP0 (OpenSSL 3.0.18 30 Sep 2025)
[debug] exe versions: ffmpeg 7.1-full_build-www.gyan.dev (setts), ffprobe 7.1-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2026.02.25, curl_cffi-0.14.0, mutagen-1.47.0, requests-2.33.1, sqlite3-3.50.4, urllib3-2.6.3, websockets-16.0, yt_dlp_ejs-0.8.0
[debug] JS runtimes: deno-2.1.2
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Plugin directories: none
[debug] Loaded 1864 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: stable@2026.03.17 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2026.03.17 from yt-dlp/yt-dlp)
[generic] Extracting URL: https://upload.wikimedia.org/wikipedia/commons/2/2b/Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract.webm
[generic] Flexible_use_of_a_multi-purpose_tool_by_a_cow_video_abstract: Downloading webpage
ERROR: [generic] Unable to download webpage: HTTP Error 403: Forbidden (caused by <HTTPError 403: Forbidden>)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 765, in extract
    ie_result = self._real_extract(url)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\generic.py", line 819, in _real_extract
    full_response = self._request_webpage(url, video_id, headers=filter_dict({
        'Accept-Encoding': 'identity',
        'Referer': smuggled_data.get('referer'),
    }), impersonate=impersonate)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 925, in _request_webpage
    raise ExtractorError(errmsg, cause=err)

  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\extractor\common.py", line 912, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query, extensions))
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\YoutubeDL.py", line 4260, in urlopen
    return self._request_director.send(req)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\common.py", line 117, in send
    response = handler.send(request)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\_helper.py", line 194, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\common.py", line 359, in send
    return self._send(request)
           ~~~~~~~~~~^^^^^^^^^
  File "C:\Program Files\Python314\Lib\site-packages\yt_dlp\networking\_requests.py", line 361, in _send
    raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 403: Forbidden

Metadata

Metadata

Assignees

No one assigned

    Labels

    patch-availableThere is patch available that should fix this issue. Someone needs to make a PR with itsite-bugIssue with a specific website

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0