Add faked X-Forwarded-For to formats' HTTP headers
This commit is contained in:
		| @@ -864,8 +864,14 @@ class YoutubeDL(object): | ||||
|             if self.params.get('playlistrandom', False): | ||||
|                 random.shuffle(entries) | ||||
|  | ||||
|             x_forwarded_for = ie_result.get('__x_forwarded_for_ip') | ||||
|  | ||||
|             for i, entry in enumerate(entries, 1): | ||||
|                 self.to_screen('[download] Downloading video %s of %s' % (i, n_entries)) | ||||
|                 # This __x_forwarded_for_ip thing is a bit ugly but requires | ||||
|                 # minimal changes | ||||
|                 if x_forwarded_for: | ||||
|                     entry['__x_forwarded_for_ip'] = x_forwarded_for | ||||
|                 extra = { | ||||
|                     'n_entries': n_entries, | ||||
|                     'playlist': playlist, | ||||
| @@ -1250,6 +1256,11 @@ class YoutubeDL(object): | ||||
|         if cookies: | ||||
|             res['Cookie'] = cookies | ||||
|  | ||||
|         if 'X-Forwarded-For' not in res: | ||||
|             x_forwarded_for_ip = info_dict.get('__x_forwarded_for_ip') | ||||
|             if x_forwarded_for_ip: | ||||
|                 res['X-Forwarded-For'] = x_forwarded_for_ip | ||||
|  | ||||
|         return res | ||||
|  | ||||
|     def _calc_cookies(self, info_dict): | ||||
| @@ -1392,6 +1403,9 @@ class YoutubeDL(object): | ||||
|             full_format_info = info_dict.copy() | ||||
|             full_format_info.update(format) | ||||
|             format['http_headers'] = self._calc_headers(full_format_info) | ||||
|         # Remove private housekeeping stuff | ||||
|         if '__x_forwarded_for_ip' in info_dict: | ||||
|             del info_dict['__x_forwarded_for_ip'] | ||||
|  | ||||
|         # TODO Central sorting goes here | ||||
|  | ||||
|   | ||||
| @@ -384,7 +384,10 @@ class InfoExtractor(object): | ||||
|             for _ in range(2): | ||||
|                 try: | ||||
|                     self.initialize() | ||||
|                     return self._real_extract(url) | ||||
|                     ie_result = self._real_extract(url) | ||||
|                     if self._x_forwarded_for_ip: | ||||
|                         ie_result['__x_forwarded_for_ip'] = self._x_forwarded_for_ip | ||||
|                     return ie_result | ||||
|                 except GeoRestrictedError as e: | ||||
|                     if (not self._downloader.params.get('bypass_geo_restriction_as_country', None) and | ||||
|                             self._BYPASS_GEO and | ||||
|   | ||||
		Reference in New Issue
	
	Block a user