@@ -269,7 +269,8 @@ async def _download_request(self, request: Request, spider: Spider) -> Response:
269269 "**" ,
270270 self ._make_request_handler (
271271 method = request .method ,
272- scrapy_headers = request .headers ,
272+ url = request .url ,
273+ headers = request .headers ,
273274 body = request .body ,
274275 encoding = request .encoding ,
275276 ),
@@ -399,7 +400,12 @@ def close_browser_context_callback() -> None:
399400 return close_browser_context_callback
400401
401402 def _make_request_handler (
402- self , method : str , scrapy_headers : Headers , body : Optional [bytes ], encoding : str = "utf8"
403+ self ,
404+ method : str ,
405+ url : str ,
406+ headers : Headers ,
407+ body : Optional [bytes ],
408+ encoding : str = "utf8" ,
403409 ) -> Callable :
404410 async def _request_handler (route : Route , playwright_request : PlaywrightRequest ) -> None :
405411 """Override request headers, method and body."""
@@ -417,17 +423,18 @@ async def _request_handler(route: Route, playwright_request: PlaywrightRequest)
417423 else :
418424 overrides ["headers" ] = final_headers = await _maybe_await (
419425 self .process_request_headers (
420- self .browser_type_name , playwright_request , scrapy_headers
426+ self .browser_type_name , playwright_request , headers
421427 )
422428 )
423429 # the request that reaches the callback should contain the final headers
424- scrapy_headers .clear ()
425- scrapy_headers .update (final_headers )
430+ headers .clear ()
431+ headers .update (final_headers )
426432 del final_headers
427433
428- if playwright_request .is_navigation_request ():
434+ # if the request is triggered by scrapy, not playwright
435+ if playwright_request .url == url :
429436 overrides ["method" ] = method
430- if body is not None :
437+ if body :
431438 overrides ["post_data" ] = body .decode (encoding )
432439
433440 try :
@@ -469,13 +476,14 @@ async def _log_request(request: PlaywrightRequest) -> None:
469476def _make_response_logger (context_name : str ) -> Callable :
470477 async def _log_request (response : PlaywrightResponse ) -> None :
471478 referrer = await response .header_value ("referer" )
472- logger .debug (
473- "[Context=%s] Response: <%i %s> (referrer: %s)" ,
474- context_name ,
475- response .status ,
476- response .url ,
477- referrer ,
478- )
479+ log_args = [context_name , response .status , response .url , referrer ]
480+ if 300 <= response .status < 400 :
481+ location = await response .header_value ("location" )
482+ log_args .append (location )
483+ msg = "[Context=%s] Response: <%i %s> (referrer: %s, location: %s)"
484+ else :
485+ msg = "[Context=%s] Response: <%i %s> (referrer: %s)"
486+ logger .debug (msg , * log_args )
479487
480488 return _log_request
481489
0 commit comments