|
|
@ -547,6 +547,34 @@ class InfoExtractor(object):
|
|
|
|
|
|
|
|
|
|
|
|
return encoding
|
|
|
|
return encoding
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __check_blocked(self, content):
|
|
|
|
|
|
|
|
first_block = content[:512]
|
|
|
|
|
|
|
|
if ('<title>Access to this site is blocked</title>' in content and
|
|
|
|
|
|
|
|
'Websense' in first_block):
|
|
|
|
|
|
|
|
msg = 'Access to this webpage has been blocked by Websense filtering software in your network.'
|
|
|
|
|
|
|
|
blocked_iframe = self._html_search_regex(
|
|
|
|
|
|
|
|
r'<iframe src="([^"]+)"', content,
|
|
|
|
|
|
|
|
'Websense information URL', default=None)
|
|
|
|
|
|
|
|
if blocked_iframe:
|
|
|
|
|
|
|
|
msg += ' Visit %s for more details' % blocked_iframe
|
|
|
|
|
|
|
|
raise ExtractorError(msg, expected=True)
|
|
|
|
|
|
|
|
if '<title>The URL you requested has been blocked</title>' in first_block:
|
|
|
|
|
|
|
|
msg = (
|
|
|
|
|
|
|
|
'Access to this webpage has been blocked by Indian censorship. '
|
|
|
|
|
|
|
|
'Use a VPN or proxy server (with --proxy) to route around it.')
|
|
|
|
|
|
|
|
block_msg = self._html_search_regex(
|
|
|
|
|
|
|
|
r'</h1><p>(.*?)</p>',
|
|
|
|
|
|
|
|
content, 'block message', default=None)
|
|
|
|
|
|
|
|
if block_msg:
|
|
|
|
|
|
|
|
msg += ' (Message: "%s")' % block_msg.replace('\n', ' ')
|
|
|
|
|
|
|
|
raise ExtractorError(msg, expected=True)
|
|
|
|
|
|
|
|
if ('<title>TTK :: Доступ к ресурсу ограничен</title>' in content and
|
|
|
|
|
|
|
|
'blocklist.rkn.gov.ru' in content):
|
|
|
|
|
|
|
|
raise ExtractorError(
|
|
|
|
|
|
|
|
'Access to this webpage has been blocked by decision of the Russian government. '
|
|
|
|
|
|
|
|
'Visit http://blocklist.rkn.gov.ru/ for a block reason.',
|
|
|
|
|
|
|
|
expected=True)
|
|
|
|
|
|
|
|
|
|
|
|
def _webpage_read_content(self, urlh, url_or_request, video_id, note=None, errnote=None, fatal=True, prefix=None, encoding=None):
|
|
|
|
def _webpage_read_content(self, urlh, url_or_request, video_id, note=None, errnote=None, fatal=True, prefix=None, encoding=None):
|
|
|
|
content_type = urlh.headers.get('Content-Type', '')
|
|
|
|
content_type = urlh.headers.get('Content-Type', '')
|
|
|
|
webpage_bytes = urlh.read()
|
|
|
|
webpage_bytes = urlh.read()
|
|
|
@ -588,25 +616,7 @@ class InfoExtractor(object):
|
|
|
|
except LookupError:
|
|
|
|
except LookupError:
|
|
|
|
content = webpage_bytes.decode('utf-8', 'replace')
|
|
|
|
content = webpage_bytes.decode('utf-8', 'replace')
|
|
|
|
|
|
|
|
|
|
|
|
if ('<title>Access to this site is blocked</title>' in content and
|
|
|
|
self.__check_blocked(content)
|
|
|
|
'Websense' in content[:512]):
|
|
|
|
|
|
|
|
msg = 'Access to this webpage has been blocked by Websense filtering software in your network.'
|
|
|
|
|
|
|
|
blocked_iframe = self._html_search_regex(
|
|
|
|
|
|
|
|
r'<iframe src="([^"]+)"', content,
|
|
|
|
|
|
|
|
'Websense information URL', default=None)
|
|
|
|
|
|
|
|
if blocked_iframe:
|
|
|
|
|
|
|
|
msg += ' Visit %s for more details' % blocked_iframe
|
|
|
|
|
|
|
|
raise ExtractorError(msg, expected=True)
|
|
|
|
|
|
|
|
if '<title>The URL you requested has been blocked</title>' in content[:512]:
|
|
|
|
|
|
|
|
msg = (
|
|
|
|
|
|
|
|
'Access to this webpage has been blocked by Indian censorship. '
|
|
|
|
|
|
|
|
'Use a VPN or proxy server (with --proxy) to route around it.')
|
|
|
|
|
|
|
|
block_msg = self._html_search_regex(
|
|
|
|
|
|
|
|
r'</h1><p>(.*?)</p>',
|
|
|
|
|
|
|
|
content, 'block message', default=None)
|
|
|
|
|
|
|
|
if block_msg:
|
|
|
|
|
|
|
|
msg += ' (Message: "%s")' % block_msg.replace('\n', ' ')
|
|
|
|
|
|
|
|
raise ExtractorError(msg, expected=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return content
|
|
|
|
return content
|
|
|
|
|
|
|
|
|
|
|
|