26
26
from scrapy .http import Request
27
27
from scrapy .utils .misc import md5sum
28
28
from scrapy .utils .log import failure_to_exc_info
29
- from scrapy .utils .python import to_bytes
29
+ from scrapy .utils .python import to_bytes , to_native_str
30
30
31
31
logger = logging .getLogger (__name__ )
32
32
@@ -199,7 +199,7 @@ def _onsuccess(result):
199
199
if age_days > self .EXPIRES :
200
200
return # returning None force download
201
201
202
- referer = request . headers . get ( 'Referer' )
202
+ referer = _get_referer ( request )
203
203
logger .debug (
204
204
'File (uptodate): Downloaded %(medianame)s from %(request)s '
205
205
'referred in <%(referer)s>' ,
@@ -225,7 +225,7 @@ def _onsuccess(result):
225
225
226
226
def media_failed (self , failure , request , info ):
227
227
if not isinstance (failure .value , IgnoreRequest ):
228
- referer = request . headers . get ( 'Referer' )
228
+ referer = _get_referer ( request )
229
229
logger .warning (
230
230
'File (unknown-error): Error downloading %(medianame)s from '
231
231
'%(request)s referred in <%(referer)s>: %(exception)s' ,
@@ -237,7 +237,7 @@ def media_failed(self, failure, request, info):
237
237
raise FileException
238
238
239
239
def media_downloaded (self , response , request , info ):
240
- referer = request . headers . get ( 'Referer' )
240
+ referer = _get_referer ( request )
241
241
242
242
if response .status != 200 :
243
243
logger .warning (
@@ -339,3 +339,11 @@ def _warn():
339
339
def file_key (self , url ):
340
340
return self .file_path (url )
341
341
file_key ._base = True
342
+
343
+
344
+ def _get_referer (request ):
345
+ """ Return Referer HTTP header suitable for logging """
346
+ referrer = request .headers .get ('Referer' )
347
+ if referrer is None :
348
+ return referrer
349
+ return to_native_str (referrer , errors = 'replace' )
0 commit comments