mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 06:37:07 -05:00 
			
		
		
		
	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