1. import requests
  2. import time
  3. from urllib.parse import urlparse
  4. class SessionCookieErrorDetector:
  5. def __init__(self, max_retries=3, delay=5):
  6. self.max_retries = max_retries
  7. self.delay = delay
  8. self.failed_urls = []
  9. def check_session_cookie(self, url, max_retries=3, delay=5):
  10. """
  11. Checks if a session cookie is valid for a given URL.
  12. Handles potential errors and implements rate limiting.
  13. """
  14. for attempt in range(max_retries):
  15. try:
  16. response = requests.get(url, timeout=10) # Add timeout
  17. if response.status_code == 200:
  18. return True # Session cookie is valid
  19. elif response.status_code == 401:
  20. #Possible session cookie issue, but not always indicative of failure
  21. print(f"Status code 401 detected for {url}. Potentially session cookie issue.")
  22. return False
  23. else:
  24. print(f"Error: {response.status_code} for {url}")
  25. return False # Other errors indicate session cookie problem
  26. except requests.exceptions.RequestException as e:
  27. print(f"Request error for {url}: {e}")
  28. if attempt < max_retries - 1:
  29. time.sleep(delay)
  30. else:
  31. self.failed_urls.append(url) # Log URLs with repeated failures
  32. return False # Session cookie likely invalid
  33. return False # Should not reach here, but for safety
  34. def rate_limit(self):
  35. """
  36. Implements rate limiting to prevent excessive requests.
  37. """
  38. time.sleep(self.delay)
  39. print(f"Rate limiting: Sleeping for {self.delay} seconds.")
  40. if __name__ == '__main__':
  41. detector = SessionCookieErrorDetector()
  42. urls_to_check = [
  43. "https://example.com",
  44. "https://www.google.com",
  45. "https://httpstat.us/401", #Test 401
  46. "https://httpstat.us/500", #Test 500
  47. "https://nonexistentdomain.example" #Test connection error
  48. ]
  49. for url in urls_to_check:
  50. if detector.check_session_cookie(url):
  51. print(f"Session cookie valid for {url}")
  52. else:
  53. print(f"Session cookie invalid/problematic for {url}")
  54. detector.rate_limit()

Add your comment