mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 05:37:07 -05:00 
			
		
		
		
	[vk] Workaround buggy new.vk.com Set-Cookie headers
This commit is contained in:
		@@ -3,6 +3,7 @@ from __future__ import unicode_literals
 | 
			
		||||
 | 
			
		||||
import re
 | 
			
		||||
import json
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
from .common import InfoExtractor
 | 
			
		||||
from ..compat import compat_str
 | 
			
		||||
@@ -190,7 +191,7 @@ class VKIE(InfoExtractor):
 | 
			
		||||
        if username is None:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        login_page = self._download_webpage(
 | 
			
		||||
        login_page, url_handle = self._download_webpage_handle(
 | 
			
		||||
            'https://vk.com', None, 'Downloading login page')
 | 
			
		||||
 | 
			
		||||
        login_form = self._hidden_inputs(login_page)
 | 
			
		||||
@@ -200,6 +201,22 @@ class VKIE(InfoExtractor):
 | 
			
		||||
            'pass': password.encode('cp1251'),
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        # https://new.vk.com/ serves two same remixlhk cookies in Set-Cookie header
 | 
			
		||||
        # and expects the first one to be set rather than second (see
 | 
			
		||||
        # https://github.com/rg3/youtube-dl/issues/9841#issuecomment-227871201).
 | 
			
		||||
        # As of RFC6265 the newer one cookie should be set into cookie store
 | 
			
		||||
        # what actually happens.
 | 
			
		||||
        # We will workaround this VK issue by resetting the remixlhk cookie to
 | 
			
		||||
        # the first one manually.
 | 
			
		||||
        cookies = url_handle.headers.get('Set-Cookie')
 | 
			
		||||
        if sys.version_info[0] >= 3:
 | 
			
		||||
            cookies = cookies.encode('iso-8859-1')
 | 
			
		||||
        cookies = cookies.decode('utf-8')
 | 
			
		||||
        remixlhk = re.search(r'remixlhk=(.+?);.*?\bdomain=(.+?)(?:[,;]|$)', cookies)
 | 
			
		||||
        if remixlhk:
 | 
			
		||||
            value, domain = remixlhk.groups()
 | 
			
		||||
            self._set_cookie(domain, 'remixlhk', value)
 | 
			
		||||
 | 
			
		||||
        request = sanitized_Request(
 | 
			
		||||
            'https://login.vk.com/?act=login',
 | 
			
		||||
            urlencode_postdata(login_form))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user