2929 ("X-Crawlera-Version" , "" ),
3030 ("X-Crawlera-Version" , "1.36.3-cd5e44" ),
3131 ("Zyte-Request-Id" , "123456789" ),
32- ("zyte-error-type" , "foo" ),
3332)
3433
3534
@@ -160,7 +159,7 @@ def _assert_enabled(
160159 )
161160 assert mw .process_response (req , res , spider ) is res
162161 assert res .headers ["X-Crawlera-Error" ] == b"banned"
163- assert res .headers ["Zyte-Error" ] == b"banned"
162+ assert res .headers ["Zyte-Error-Type " ] == b"banned"
164163
165164 # max bans reached and close_spider called
166165 self .assertEqual (crawler .engine .fake_spider_closed_result , (spider , "banned" ))
@@ -482,7 +481,7 @@ def _test_stats(self, settings, prefix):
482481 )
483482
484483 res = self ._mock_zyte_smartproxy_response (
485- req .url , status = mw .ban_code , headers = {"Zyte-Error" : "somethingbad" }
484+ req .url , status = mw .ban_code , headers = {"Zyte-Error-Type " : "somethingbad" }
486485 )
487486 assert mw .process_response (req , res , spider ) is res
488487 self .assertEqual (crawler .stats .get_value ("{}/response" .format (prefix )), 2 )
@@ -497,7 +496,7 @@ def _test_stats(self, settings, prefix):
497496 crawler .stats .get_value ("{}/response/error/somethingbad" .format (prefix )), 1
498497 )
499498 self .assertEqual (res .headers ["X-Crawlera-Error" ], b"somethingbad" )
500- self .assertEqual (res .headers ["Zyte-Error" ], b"somethingbad" )
499+ self .assertEqual (res .headers ["Zyte-Error-Type " ], b"somethingbad" )
501500
502501 res = self ._mock_zyte_smartproxy_response (
503502 req .url ,
@@ -516,7 +515,7 @@ def _test_stats(self, settings, prefix):
516515 crawler .stats .get_value ("{}/response/banned" .format (prefix )), 1
517516 )
518517 self .assertEqual (res .headers ["X-Crawlera-Error" ], b"banned" )
519- self .assertEqual (res .headers ["Zyte-Error" ], b"banned" )
518+ self .assertEqual (res .headers ["Zyte-Error-Type " ], b"banned" )
520519
521520 res = self ._mock_zyte_smartproxy_response (
522521 req .url ,
@@ -672,7 +671,10 @@ def test_is_banned(self):
672671 res = Response (
673672 req .url ,
674673 status = 503 ,
675- headers = {"Zyte-Error" : "/limits/over-global-limit" },
674+ headers = {
675+ "Zyte-Request-Id" : "123456789" ,
676+ "Zyte-Error-Type" : "/limits/over-global-limit" ,
677+ },
676678 )
677679 res = mw .process_response (req , res , self .spider )
678680 self .assertFalse (mw ._is_banned (res ))
@@ -681,16 +683,26 @@ def test_is_banned(self):
681683 res = mw .process_response (req , res , self .spider )
682684 self .assertTrue (mw ._is_banned (res ))
683685 res = Response (
684- req .url , status = 520 , headers = {"Zyte-Error" : "/download/temporary-error" }
686+ req .url ,
687+ status = 520 ,
688+ headers = {
689+ "Zyte-Request-Id" : "123456789" ,
690+ "Zyte-Error-Type" : "/download/temporary-error" ,
691+ },
685692 )
686693 res = mw .process_response (req , res , self .spider )
694+ assert mw .crawler .stats .get_value ("zyte_smartproxy/response/banned" ) == 1
687695 self .assertTrue (mw ._is_banned (res ))
688696 res = Response (
689697 req .url ,
690698 status = 521 ,
691- headers = {"Zyte-Error" : "/download/internal-error" },
699+ headers = {
700+ "Zyte-Request-Id" : "123456789" ,
701+ "Zyte-Error-Type" : "/download/internal-error" ,
702+ },
692703 )
693704 res = mw .process_response (req , res , self .spider )
705+ assert mw .crawler .stats .get_value ("zyte_smartproxy/response/banned" ) == 2
694706 self .assertTrue (mw ._is_banned (res ))
695707
696708 @patch ("random.uniform" )
@@ -733,23 +745,23 @@ def test_noslaves_delays(self, random_uniform_patch):
733745 over_use_limit_response = self ._mock_zyte_smartproxy_response (
734746 ban_url ,
735747 status = 429 ,
736- headers = {"Zyte-Error" : "/limits/over-user-limit" },
748+ headers = {"Zyte-Error-Type " : "/limits/over-user-limit" },
737749 )
738750 mw .process_response (noslaves_req , over_use_limit_response , self .spider )
739751 self .assertEqual (slot .delay , backoff_step * 2 ** 1 )
740752
741753 over_domain_limit_response = self ._mock_zyte_smartproxy_response (
742754 ban_url ,
743755 status = 429 ,
744- headers = {"Zyte-Error" : "/limits/over-domain-limit" },
756+ headers = {"Zyte-Error-Type " : "/limits/over-domain-limit" },
745757 )
746758 mw .process_response (noslaves_req , over_domain_limit_response , self .spider )
747759 self .assertEqual (slot .delay , backoff_step * 2 ** 2 )
748760
749761 over_global_limit_response = self ._mock_zyte_smartproxy_response (
750762 ban_url ,
751763 status = 503 ,
752- headers = {"Zyte-Error" : "/limits/over-global-limit" },
764+ headers = {"Zyte-Error-Type " : "/limits/over-global-limit" },
753765 )
754766 mw .process_response (noslaves_req , over_global_limit_response , self .spider )
755767 self .assertEqual (slot .delay , max_delay )
0 commit comments