{"record":{"id":"bdaa3c25bb71894a","repo":"yt-dlp/yt-dlp","slug":"clean-html-payload-0-1-1","errorCode":null,"errorMessage":"{clean_html(payload[0][1:-1])}","messagePattern":"\\{clean_html\\(payload\\[0\\]\\[1:-1\\]\\)\\}","errorType":"exception","errorClass":"ExtractorError","httpStatus":null,"severity":"error","filePath":"yt_dlp/extractor/vk.py","lineNumber":111,"sourceCode":"            data=urlencode_postdata(login_form))\n\n        if re.search(r'onLoginFailed', login_page):\n            raise ExtractorError(\n                'Unable to login, incorrect username and/or password', expected=True)\n\n    def _download_payload(self, path, video_id, data, fatal=True):\n        endpoint = f'https://vk.com/{path}.php'\n        data['al'] = 1\n        code, payload = self._download_json(\n            endpoint, video_id, data=urlencode_postdata(data), fatal=fatal,\n            headers={\n                'Referer': endpoint,\n                'X-Requested-With': 'XMLHttpRequest',\n            })['payload']\n        if code == '3':\n            self.raise_login_required()\n        elif code == '8':\n            raise ExtractorError(clean_html(payload[0][1:-1]), expected=True)\n        return payload\n\n\nclass VKIE(VKBaseIE):\n    IE_NAME = 'vk'\n    IE_DESC = 'VK'\n    _EMBED_REGEX = [r'<iframe[^>]+?src=([\"\\'])(?P<url>https?://vk(?:(?:video)?\\.ru|\\.com)/video_ext\\.php.+?)\\1']\n    _VALID_URL = r'''(?x)\n                    https?://\n                        (?:\n                            (?:\n                                (?:(?:m|new|vksport)\\.)?vk(?:(?:video)?\\.ru|\\.com)/video_|\n                                (?:www\\.)?daxab\\.com/\n                            )\n                            ext\\.php\\?(?P<embed_query>.*?\\boid=(?P<oid>-?\\d+).*?\\bid=(?P<id>\\d+).*)|\n                            (?:\n                                (?:(?:m|new|vksport)\\.)?vk(?:(?:video)?\\.ru|\\.com)/(?:.+?\\?.*?z=)?(?:video|clip)|\n                                (?:www\\.)?daxab\\.com/embed/","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/yt-dlp/yt-dlp/blob/81ecd58b1394793e6da9998cc19fdb45657f1685/yt_dlp/extractor/vk.py#L93-L129","documentation":"Error \"{clean_html(payload[0][1:-1])}\" thrown in yt-dlp/yt-dlp.","triggerScenarios":"VK's login response contains an HTML error payload (e.g. security check or blocked login) that the extractor cleans and relays as the error message.","commonSituations":"See trigger scenarios.","solutions":["Read the VK error message shown in the payload for the cause","Log in via a browser and export cookies to bypass the failing login path","Update yt-dlp if VK changed its login flow"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"81ecd58b1394793e6da9998cc19fdb45657f1685","analyzedAt":"2026-08-22T12:21:25.439Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}