mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-15 07:42:42 +00:00
[vk] Workaround buggy new.vk.com Set-Cookie headers
This commit is contained in:
parent
089657ed1f
commit
75ca6bcee2
1 changed files with 18 additions and 1 deletions
|
@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..compat import compat_str
|
from ..compat import compat_str
|
||||||
|
@ -190,7 +191,7 @@ class VKIE(InfoExtractor):
|
||||||
if username is None:
|
if username is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
login_page = self._download_webpage(
|
login_page, url_handle = self._download_webpage_handle(
|
||||||
'https://vk.com', None, 'Downloading login page')
|
'https://vk.com', None, 'Downloading login page')
|
||||||
|
|
||||||
login_form = self._hidden_inputs(login_page)
|
login_form = self._hidden_inputs(login_page)
|
||||||
|
@ -200,6 +201,22 @@ class VKIE(InfoExtractor):
|
||||||
'pass': password.encode('cp1251'),
|
'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(
|
request = sanitized_Request(
|
||||||
'https://login.vk.com/?act=login',
|
'https://login.vk.com/?act=login',
|
||||||
urlencode_postdata(login_form))
|
urlencode_postdata(login_form))
|
||||||
|
|
Loading…
Reference in a new issue