mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-11-04 03:33:46 +00:00 
			
		
		
		
	[twitch] Fix authentication (closes #17024)
This commit is contained in:
		
							parent
							
								
									644921b372
								
							
						
					
					
						commit
						48afc6ca3e
					
				@ -4,6 +4,7 @@ from __future__ import unicode_literals
 | 
			
		||||
import itertools
 | 
			
		||||
import re
 | 
			
		||||
import random
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from .common import InfoExtractor
 | 
			
		||||
from ..compat import (
 | 
			
		||||
@ -26,7 +27,6 @@ from ..utils import (
 | 
			
		||||
    try_get,
 | 
			
		||||
    unified_timestamp,
 | 
			
		||||
    update_url_query,
 | 
			
		||||
    urlencode_postdata,
 | 
			
		||||
    url_or_none,
 | 
			
		||||
    urljoin,
 | 
			
		||||
)
 | 
			
		||||
@ -37,7 +37,8 @@ class TwitchBaseIE(InfoExtractor):
 | 
			
		||||
 | 
			
		||||
    _API_BASE = 'https://api.twitch.tv'
 | 
			
		||||
    _USHER_BASE = 'https://usher.ttvnw.net'
 | 
			
		||||
    _LOGIN_URL = 'https://www.twitch.tv/login'
 | 
			
		||||
    _LOGIN_FORM_URL = 'https://www.twitch.tv/login'
 | 
			
		||||
    _LOGIN_POST_URL = 'https://passport.twitch.tv/login'
 | 
			
		||||
    _CLIENT_ID = 'jzkbprff40iqj646a697cyrvl0zt2m6'
 | 
			
		||||
    _NETRC_MACHINE = 'twitch'
 | 
			
		||||
 | 
			
		||||
@ -77,21 +78,25 @@ class TwitchBaseIE(InfoExtractor):
 | 
			
		||||
            page_url = urlh.geturl()
 | 
			
		||||
            post_url = self._search_regex(
 | 
			
		||||
                r'<form[^>]+action=(["\'])(?P<url>.+?)\1', page,
 | 
			
		||||
                'post url', default=page_url, group='url')
 | 
			
		||||
                'post url', default=self._LOGIN_POST_URL, group='url')
 | 
			
		||||
            post_url = urljoin(page_url, post_url)
 | 
			
		||||
 | 
			
		||||
            headers = {'Referer': page_url}
 | 
			
		||||
            headers = {
 | 
			
		||||
                'Referer': page_url,
 | 
			
		||||
                'Origin': page_url,
 | 
			
		||||
                'Content-Type': 'text/plain;charset=UTF-8'
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            try:
 | 
			
		||||
                response = self._download_json(
 | 
			
		||||
                    post_url, None, note,
 | 
			
		||||
                    data=urlencode_postdata(form),
 | 
			
		||||
                    data=json.dumps(form).encode(),
 | 
			
		||||
                    headers=headers)
 | 
			
		||||
            except ExtractorError as e:
 | 
			
		||||
                if isinstance(e.cause, compat_HTTPError) and e.cause.code == 400:
 | 
			
		||||
                    response = self._parse_json(
 | 
			
		||||
                        e.cause.read().decode('utf-8'), None)
 | 
			
		||||
                    fail(response.get('message') or response['errors'][0])
 | 
			
		||||
                    fail(response.get('error_description') or response.get('error_code'))
 | 
			
		||||
                raise
 | 
			
		||||
 | 
			
		||||
            if 'Authenticated successfully' in response.get('message', ''):
 | 
			
		||||
@ -105,7 +110,7 @@ class TwitchBaseIE(InfoExtractor):
 | 
			
		||||
                headers=headers)
 | 
			
		||||
 | 
			
		||||
        login_page, handle = self._download_webpage_handle(
 | 
			
		||||
            self._LOGIN_URL, None, 'Downloading login page')
 | 
			
		||||
            self._LOGIN_FORM_URL, None, 'Downloading login page')
 | 
			
		||||
 | 
			
		||||
        # Some TOR nodes and public proxies are blocked completely
 | 
			
		||||
        if 'blacklist_message' in login_page:
 | 
			
		||||
@ -115,6 +120,7 @@ class TwitchBaseIE(InfoExtractor):
 | 
			
		||||
            login_page, handle, 'Logging in', {
 | 
			
		||||
                'username': username,
 | 
			
		||||
                'password': password,
 | 
			
		||||
                'client_id': self._CLIENT_ID,
 | 
			
		||||
            })
 | 
			
		||||
 | 
			
		||||
        # Successful login
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user