test05.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import requests
  2. # 初始化cookie列表
  3. cookies = [
  4. {'cookie': 'cookie1'},
  5. {'cookie': 'cookie2'},
  6. {'cookie': 'cookie3'},
  7. {'cookie': 'cookie4'},
  8. {'cookie': 'cookie5'},
  9. {'cookie': 'cookie6'},
  10. {'cookie': 'cookie7'},
  11. {'cookie': 'cookie8'},
  12. {'cookie': 'cookie9'},
  13. {'cookie': 'cookie10'}
  14. ]
  15. # 初始化超时计数器
  16. timeout_count = {cookie['cookie']: 0 for cookie in cookies}
  17. def make_request(cookie):
  18. try:
  19. response = requests.get('http://example.com', cookies=cookie, timeout=5)
  20. response.raise_for_status()
  21. return response
  22. except requests.exceptions.Timeout:
  23. return 'timeout'
  24. except requests.exceptions.RequestException as e:
  25. print(f"Request failed: {e}")
  26. return 'error'
  27. def main():
  28. global cookies, timeout_count
  29. for i in range(100):
  30. if not cookies:
  31. print("No more cookies available.")
  32. break
  33. all_cookies_failed = True
  34. for j in range(len(cookies)):
  35. current_cookie = cookies[(i + j) % len(cookies)]
  36. result = make_request(current_cookie)
  37. if result == 'timeout':
  38. timeout_count[current_cookie['cookie']] += 1
  39. print(f"Timeout for {current_cookie['cookie']}, count: {timeout_count[current_cookie['cookie']]}")
  40. if timeout_count[current_cookie['cookie']] >= 3:
  41. print(f"Removing {current_cookie['cookie']} from the pool.")
  42. cookies = [c for c in cookies if c != current_cookie]
  43. del timeout_count[current_cookie['cookie']]
  44. elif result == 'error':
  45. print(f"Error for {current_cookie['cookie']}")
  46. else:
  47. print(f"Request {i+1} successful with {current_cookie['cookie']}")
  48. timeout_count[current_cookie['cookie']] = 0 # Reset timeout count on success
  49. all_cookies_failed = False
  50. break
  51. if all_cookies_failed:
  52. print(f"All cookies failed for request {i+1}. Skipping to the next request.")
  53. if __name__ == "__main__":
  54. main()