aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp')
-rw-r--r--yt_dlp/__init__.py13
-rw-r--r--yt_dlp/options.py25
2 files changed, 24 insertions, 14 deletions
diff --git a/yt_dlp/__init__.py b/yt_dlp/__init__.py
index 79b9a7679..47ee3cc02 100644
--- a/yt_dlp/__init__.py
+++ b/yt_dlp/__init__.py
@@ -396,12 +396,17 @@ def validate_options(opts):
except Exception as err:
raise ValueError(f'Invalid playlist-items {opts.playlist_items!r}: {err}')
- geo_bypass_code = opts.geo_bypass_ip_block or opts.geo_bypass_country
- if geo_bypass_code is not None:
+ opts.geo_bypass_country, opts.geo_bypass_ip_block = None, None
+ if opts.geo_bypass.lower() not in ('default', 'never'):
try:
- GeoUtils.random_ipv4(geo_bypass_code)
+ GeoUtils.random_ipv4(opts.geo_bypass)
except Exception:
- raise ValueError('unsupported geo-bypass country or ip-block')
+ raise ValueError(f'Unsupported --xff "{opts.geo_bypass}"')
+ if len(opts.geo_bypass) == 2:
+ opts.geo_bypass_country = opts.geo_bypass
+ else:
+ opts.geo_bypass_ip_block = opts.geo_bypass
+ opts.geo_bypass = opts.geo_bypass.lower() != 'never'
opts.match_filter = match_filter_func(opts.match_filter, opts.breaking_match_filter)
diff --git a/yt_dlp/options.py b/yt_dlp/options.py
index a2f508552..362a648cd 100644
--- a/yt_dlp/options.py
+++ b/yt_dlp/options.py
@@ -520,21 +520,26 @@ def create_parser():
dest='cn_verification_proxy', default=None, metavar='URL',
help=optparse.SUPPRESS_HELP)
geo.add_option(
+ '--xff', metavar='VALUE',
+ dest='geo_bypass', default="default",
+ help=(
+ 'How to fake X-Forwarded-For HTTP header to try bypassing geographic restriction. '
+ 'One of "default" (Only when known to be useful), "never", '
+ 'a two-letter ISO 3166-2 country code, or an IP block in CIDR notation'))
+ geo.add_option(
'--geo-bypass',
- action='store_true', dest='geo_bypass', default=True,
- help='Bypass geographic restriction via faking X-Forwarded-For HTTP header (default)')
+ action='store_const', dest='geo_bypass', const='default',
+ help=optparse.SUPPRESS_HELP)
geo.add_option(
'--no-geo-bypass',
- action='store_false', dest='geo_bypass',
- help='Do not bypass geographic restriction via faking X-Forwarded-For HTTP header')
+ action='store_const', dest='geo_bypass', const='never',
+ help=optparse.SUPPRESS_HELP)
geo.add_option(
- '--geo-bypass-country', metavar='CODE',
- dest='geo_bypass_country', default=None,
- help='Force bypass geographic restriction with explicitly provided two-letter ISO 3166-2 country code')
+ '--geo-bypass-country', metavar='CODE', dest='geo_bypass',
+ help=optparse.SUPPRESS_HELP)
geo.add_option(
- '--geo-bypass-ip-block', metavar='IP_BLOCK',
- dest='geo_bypass_ip_block', default=None,
- help='Force bypass geographic restriction with explicitly provided IP block in CIDR notation')
+ '--geo-bypass-ip-block', metavar='IP_BLOCK', dest='geo_bypass',
+ help=optparse.SUPPRESS_HELP)
selection = optparse.OptionGroup(parser, 'Video Selection')
selection.add_option(