#!/usr/bin/env python3 """ Script de test pour vérifier les codes HTTP 410 (Gone) Teste les anciennes URLs /youtube/ et /flux/ """ import requests import sys from urllib.parse import urljoin # Configuration BASE_URL = "https://www.duhaz.fr" # Changer en localhost pour tests locaux # URLs à tester (les 13 pages en Soft 404) test_urls = [ "/youtube/tag/independants/", "/flux/hier/?pages=9", "/youtube/tag/fallout/", "/youtube/tag/jd/", "/flux/hier/?pages=2", "/youtube/tag/metrage/", "/youtube/outils/vignettes/", "/youtube/tag/360/", "/youtube/tag/2017/", "/youtube/tag/gym/", "/youtube/#/", "/youtube/tag/ark/", "/youtube/tag/fun/", ] def test_gone_responses(): """Teste que les URLs retournent bien un 410 Gone""" print("\n" + "="*70) print("TEST DES RÉPONSES HTTP 410 (GONE)") print("="*70) print(f"\nBase URL: {BASE_URL}") print(f"URLs à tester: {len(test_urls)}\n") success = 0 failures = 0 for url_path in test_urls: url = urljoin(BASE_URL, url_path) print(f"Test: {url_path}") try: # Ne pas suivre les redirections response = requests.get(url, allow_redirects=False, timeout=10) # Vérifier le code de statut if response.status_code == 410: print(f" ✓ Code HTTP: {response.status_code} (Gone) - OK") print(" ✓ TEST RÉUSSI\n") success += 1 elif response.status_code == 404: print(f" ⚠️ Code HTTP: {response.status_code} (Not Found)") print(" ⚠️ Acceptable mais 410 serait mieux") print(" ~ TEST ACCEPTABLE\n") success += 1 elif response.status_code in [301, 302, 307, 308]: print(f" ✗ Code HTTP: {response.status_code} (Redirection)") print(f" ✗ Attendu: 410 (Gone)") if 'Location' in response.headers: print(f" ✗ Redirige vers: {response.headers['Location']}") print(" ✗ TEST ÉCHOUÉ\n") failures += 1 else: print(f" ✗ Code HTTP: {response.status_code}") print(f" ✗ Attendu: 410 (Gone)") print(" ✗ TEST ÉCHOUÉ\n") failures += 1 except requests.RequestException as e: print(f" ✗ Erreur de connexion: {e}") print(" ✗ TEST ÉCHOUÉ\n") failures += 1 # Résumé print("=" * 70) print("RÉSUMÉ") print("=" * 70) print(f"Tests réussis: {success}/{len(test_urls)}") print(f"Tests échoués: {failures}/{len(test_urls)}") if failures == 0: print("\n✓ Tous les tests sont passés avec succès !") print("\n📊 Impact SEO attendu:") print(" - Google comprendra que ces pages n'existent plus") print(" - Les Soft 404 disparaîtront de la Search Console") print(" - Pas de pénalité SEO (code 410 est approprié)") return 0 else: print(f"\n✗ {failures} test(s) ont échoué") return 1 if __name__ == "__main__": print("\n⚠️ IMPORTANT: Configuration du test") print(f" URL de base: {BASE_URL}") print("\n Pour tester en local, modifiez BASE_URL dans le script:") print(' BASE_URL = "http://localhost:8000"\n') input("Appuyez sur Entrée pour continuer...") exit_code = test_gone_responses() sys.exit(exit_code)