Implementing correct handling of 403 and the other codes that should trigger a SessionError

After #812, we discussed with @janbuchar that currently the trigger for SessionError based on status codes is not working correctly. To be more precise, when using the http client, it doesn't trigger at all.

There are several points that need to be clarified in this case:

  • Should blocked_status_codes in Session always take priority over any error status codes in BaseHttpClient and trigger session rotation instead of request retry?
  • Should additional_http_error_status_codes and ignore_http_error_status_codes be considered in the is_blocked_status_code method in Session, or should we only consider status codes defined in blocked_status_codes in Session?

Additionally: In PlaywrightCrawler, we have the opposite situation. Since we don't use an http client, we only have errors related to SessionError.