mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[extractor/common] Allow calling _initialize_geo_bypass from extractors (#11970)
This commit is contained in:
		| @@ -379,12 +379,31 @@ class InfoExtractor(object): | ||||
|  | ||||
|     def initialize(self): | ||||
|         """Initializes an instance (authentication, etc).""" | ||||
|         self.__initialize_geo_bypass() | ||||
|         self._initialize_geo_bypass(self._GEO_COUNTRIES) | ||||
|         if not self._ready: | ||||
|             self._real_initialize() | ||||
|             self._ready = True | ||||
|  | ||||
|     def __initialize_geo_bypass(self): | ||||
|     def _initialize_geo_bypass(self, countries): | ||||
|         """ | ||||
|         Initialize geo restriction bypass mechanism. | ||||
|  | ||||
|         This method is used to initialize geo bypass mechanism based on faking | ||||
|         X-Forwarded-For HTTP header. A random country from provided country list | ||||
|         is selected and a random IP brlonging to this country is generated. This | ||||
|         IP will be passed as X-Forwarded-For HTTP header in all subsequent | ||||
|         HTTP requests. | ||||
|         Method does nothing if no countries are specified. | ||||
|  | ||||
|         This method will be used for initial geo bypass mechanism initialization | ||||
|         during the instance initialization with _GEO_COUNTRIES. | ||||
|  | ||||
|         You may also manually call it from extractor's code if geo countries | ||||
|         information is not available beforehand (e.g. obtained during | ||||
|         extraction) or due to some another reason. | ||||
|         """ | ||||
|         if not countries: | ||||
|             return | ||||
|         if not self._x_forwarded_for_ip: | ||||
|             country_code = self._downloader.params.get('geo_bypass_country', None) | ||||
|             # If there is no explicit country for geo bypass specified and | ||||
| @@ -393,8 +412,8 @@ class InfoExtractor(object): | ||||
|             if (not country_code and | ||||
|                     self._GEO_BYPASS and | ||||
|                     self._downloader.params.get('geo_bypass', True) and | ||||
|                     self._GEO_COUNTRIES): | ||||
|                 country_code = random.choice(self._GEO_COUNTRIES) | ||||
|                     countries): | ||||
|                 country_code = random.choice(countries) | ||||
|             if country_code: | ||||
|                 self._x_forwarded_for_ip = GeoUtils.random_ipv4(country_code) | ||||
|                 if self._downloader.params.get('verbose', False): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․