mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-21 20:46:36 -05:00
[extractor/common] Move censorship checks to a separate method and add check for just another ISP
This commit is contained in:
parent
b3633fa0ce
commit
4457823dda
1 changed files with 29 additions and 19 deletions
|
@ -547,6 +547,34 @@ def _guess_encoding_from_content(content_type, webpage_bytes):
|
||||||
|
|
||||||
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 @@ def _webpage_read_content(self, urlh, url_or_request, video_id, note=None, errno
|
||||||
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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue