1
0

test_soft404.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/usr/bin/env python3
  2. """
  3. Script de test pour vérifier les codes HTTP 410 (Gone)
  4. Teste les anciennes URLs /youtube/ et /flux/
  5. """
  6. import requests
  7. import sys
  8. from urllib.parse import urljoin
  9. # Configuration
  10. BASE_URL = "https://www.duhaz.fr" # Changer en localhost pour tests locaux
  11. # URLs à tester (les 13 pages en Soft 404)
  12. test_urls = [
  13. "/youtube/tag/independants/",
  14. "/flux/hier/?pages=9",
  15. "/youtube/tag/fallout/",
  16. "/youtube/tag/jd/",
  17. "/flux/hier/?pages=2",
  18. "/youtube/tag/metrage/",
  19. "/youtube/outils/vignettes/",
  20. "/youtube/tag/360/",
  21. "/youtube/tag/2017/",
  22. "/youtube/tag/gym/",
  23. "/youtube/#/",
  24. "/youtube/tag/ark/",
  25. "/youtube/tag/fun/",
  26. ]
  27. def test_gone_responses():
  28. """Teste que les URLs retournent bien un 410 Gone"""
  29. print("\n" + "="*70)
  30. print("TEST DES RÉPONSES HTTP 410 (GONE)")
  31. print("="*70)
  32. print(f"\nBase URL: {BASE_URL}")
  33. print(f"URLs à tester: {len(test_urls)}\n")
  34. success = 0
  35. failures = 0
  36. for url_path in test_urls:
  37. url = urljoin(BASE_URL, url_path)
  38. print(f"Test: {url_path}")
  39. try:
  40. # Ne pas suivre les redirections
  41. response = requests.get(url, allow_redirects=False, timeout=10)
  42. # Vérifier le code de statut
  43. if response.status_code == 410:
  44. print(f" ✓ Code HTTP: {response.status_code} (Gone) - OK")
  45. print(" ✓ TEST RÉUSSI\n")
  46. success += 1
  47. elif response.status_code == 404:
  48. print(f" ⚠️ Code HTTP: {response.status_code} (Not Found)")
  49. print(" ⚠️ Acceptable mais 410 serait mieux")
  50. print(" ~ TEST ACCEPTABLE\n")
  51. success += 1
  52. elif response.status_code in [301, 302, 307, 308]:
  53. print(f" ✗ Code HTTP: {response.status_code} (Redirection)")
  54. print(f" ✗ Attendu: 410 (Gone)")
  55. if 'Location' in response.headers:
  56. print(f" ✗ Redirige vers: {response.headers['Location']}")
  57. print(" ✗ TEST ÉCHOUÉ\n")
  58. failures += 1
  59. else:
  60. print(f" ✗ Code HTTP: {response.status_code}")
  61. print(f" ✗ Attendu: 410 (Gone)")
  62. print(" ✗ TEST ÉCHOUÉ\n")
  63. failures += 1
  64. except requests.RequestException as e:
  65. print(f" ✗ Erreur de connexion: {e}")
  66. print(" ✗ TEST ÉCHOUÉ\n")
  67. failures += 1
  68. # Résumé
  69. print("=" * 70)
  70. print("RÉSUMÉ")
  71. print("=" * 70)
  72. print(f"Tests réussis: {success}/{len(test_urls)}")
  73. print(f"Tests échoués: {failures}/{len(test_urls)}")
  74. if failures == 0:
  75. print("\n✓ Tous les tests sont passés avec succès !")
  76. print("\n📊 Impact SEO attendu:")
  77. print(" - Google comprendra que ces pages n'existent plus")
  78. print(" - Les Soft 404 disparaîtront de la Search Console")
  79. print(" - Pas de pénalité SEO (code 410 est approprié)")
  80. return 0
  81. else:
  82. print(f"\n✗ {failures} test(s) ont échoué")
  83. return 1
  84. if __name__ == "__main__":
  85. print("\n⚠️ IMPORTANT: Configuration du test")
  86. print(f" URL de base: {BASE_URL}")
  87. print("\n Pour tester en local, modifiez BASE_URL dans le script:")
  88. print(' BASE_URL = "http://localhost:8000"\n')
  89. input("Appuyez sur Entrée pour continuer...")
  90. exit_code = test_gone_responses()
  91. sys.exit(exit_code)