mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-12 10:11:07 +01:00
[VrtNU] Fix XSRF token (#588)
PR: https://github.com/ytdl-org/youtube-dl/pull/29614 Authored-by: pgaig
This commit is contained in:
parent
c31be5b009
commit
888299e6ca
@ -1,7 +1,6 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import json
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from .gigya import GigyaBaseIE
|
from .gigya import GigyaBaseIE
|
||||||
@ -17,6 +16,7 @@
|
|||||||
str_or_none,
|
str_or_none,
|
||||||
strip_or_none,
|
strip_or_none,
|
||||||
url_or_none,
|
url_or_none,
|
||||||
|
urlencode_postdata
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -265,7 +265,7 @@ class VrtNUIE(GigyaBaseIE):
|
|||||||
'expected_warnings': ['Unable to download asset JSON', 'is not a supported codec', 'Unknown MIME type'],
|
'expected_warnings': ['Unable to download asset JSON', 'is not a supported codec', 'Unknown MIME type'],
|
||||||
}]
|
}]
|
||||||
_NETRC_MACHINE = 'vrtnu'
|
_NETRC_MACHINE = 'vrtnu'
|
||||||
_APIKEY = '3_0Z2HujMtiWq_pkAjgnS2Md2E11a1AwZjYiBETtwNE-EoEHDINgtnvcAOpNgmrVGy'
|
_APIKEY = '3_qhEcPa5JGFROVwu5SWKqJ4mVOIkwlFNMSKwzPDAh8QZOtHqu6L4nD5Q7lk0eXOOG'
|
||||||
_CONTEXT_ID = 'R3595707040'
|
_CONTEXT_ID = 'R3595707040'
|
||||||
|
|
||||||
def _real_initialize(self):
|
def _real_initialize(self):
|
||||||
@ -276,35 +276,38 @@ def _login(self):
|
|||||||
if username is None:
|
if username is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
auth_data = {
|
auth_info = self._download_json(
|
||||||
'APIKey': self._APIKEY,
|
'https://accounts.vrt.be/accounts.login', None,
|
||||||
'targetEnv': 'jssdk',
|
note='Login data', errnote='Could not get Login data',
|
||||||
'loginID': username,
|
headers={}, data=urlencode_postdata({
|
||||||
'password': password,
|
'loginID': username,
|
||||||
'authMode': 'cookie',
|
'password': password,
|
||||||
}
|
'sessionExpiration': '-2',
|
||||||
|
'APIKey': self._APIKEY,
|
||||||
auth_info = self._gigya_login(auth_data)
|
'targetEnv': 'jssdk',
|
||||||
|
}))
|
||||||
|
|
||||||
# Sometimes authentication fails for no good reason, retry
|
# Sometimes authentication fails for no good reason, retry
|
||||||
login_attempt = 1
|
login_attempt = 1
|
||||||
while login_attempt <= 3:
|
while login_attempt <= 3:
|
||||||
try:
|
try:
|
||||||
# When requesting a token, no actual token is returned, but the
|
self._request_webpage('https://token.vrt.be/vrtnuinitlogin',
|
||||||
# necessary cookies are set.
|
None, note='Requesting XSRF Token', errnote='Could not get XSRF Token',
|
||||||
|
query={'provider': 'site', 'destination': 'https://www.vrt.be/vrtnu/'})
|
||||||
|
|
||||||
|
post_data = {
|
||||||
|
'UID': auth_info['UID'],
|
||||||
|
'UIDSignature': auth_info['UIDSignature'],
|
||||||
|
'signatureTimestamp': auth_info['signatureTimestamp'],
|
||||||
|
'client_id': 'vrtnu-site',
|
||||||
|
'_csrf': self._get_cookies('https://login.vrt.be').get('OIDCXSRF').value,
|
||||||
|
}
|
||||||
|
|
||||||
self._request_webpage(
|
self._request_webpage(
|
||||||
'https://token.vrt.be',
|
'https://login.vrt.be/perform_login',
|
||||||
None, note='Requesting a token', errnote='Could not get a token',
|
None, note='Requesting a token', errnote='Could not get a token',
|
||||||
headers={
|
headers={}, data=urlencode_postdata(post_data))
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'Referer': 'https://www.vrt.be/vrtnu/',
|
|
||||||
},
|
|
||||||
data=json.dumps({
|
|
||||||
'uid': auth_info['UID'],
|
|
||||||
'uidsig': auth_info['UIDSignature'],
|
|
||||||
'ts': auth_info['signatureTimestamp'],
|
|
||||||
'email': auth_info['profile']['email'],
|
|
||||||
}).encode('utf-8'))
|
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 401:
|
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 401:
|
||||||
login_attempt += 1
|
login_attempt += 1
|
||||||
|
Loading…
Reference in New Issue
Block a user