Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C2LIA

Extension Chrome + backend Spring Boot qui analysent une page web (texte, DOM, vidéo, audio) et calculent un score de crédibilité de 0 à 100, avec le détail des techniques de manipulation détectées (dark patterns) et une évaluation de contenu généré par IA.

Les résultats sont des signaux d'alerte, pas des certitudes absolues.

🟢 propre (>80) · 🟡 attention (50-80) · 🔴 manipulateur (<50)


Ce que ça détecte

Module Technique Ce qu'il repère
Web règles heuristiques (DOM/regex) fausse urgence (compteur qui se réinitialise), bouton de refus caché, faux stock limité
Texte LLM local (Ollama phi3) + RAG faux avis / preuve sociale, langage culpabilisant (FOMO)
Vidéo détecteur d'images IA (HuggingFace) contenu vidéo généré par IA
Audio modèle audio (Qwen omni) voix synthétique / clonée

Chaque module ne s'active que si le contenu correspondant existe sur la page (pas de pénalité pour un module sans matière à analyser).

Architecture

Extension Chrome (content script + popup + dashboard)
        │  POST /api/analyze  (JSON)
        ▼
Backend Spring Boot
  AnalysisController → AnalysisService (orchestrateur)
        │
        ├── WebAnalysisService     (règles DOM/regex)
        ├── TextAnalysisService    (Ollama phi3 + RAG sur dark-patterns.json)
        ├── VideoAnalysisService   (ffmpeg → frames → HuggingFace)
        ├── AudioAnalysisService   (ffmpeg → extrait audio → Qwen omni)
        ├── ScoreService           (agrège alertes + coefficients → score)
        └── ReputationService      (historique des scans, H2)

Structure du dépôt

HACKIWHA_extension/
├── backend/                          Spring Boot (Java 17)
│   ├── pom.xml
│   └── src/main/
│       ├── java/com/adguard/
│       │   ├── AdGuardApplication.java
│       │   ├── controller/AnalysisController.java   # POST /api/analyze
│       │   ├── service/
│       │   │   ├── AnalysisService.java             # orchestrateur des 4 modules
│       │   │   ├── WebAnalysisService.java
│       │   │   ├── TextAnalysisService.java
│       │   │   ├── VideoAnalysisService.java
│       │   │   ├── AudioAnalysisService.java
│       │   │   ├── EmbeddingService.java            # embeddings pour le RAG
│       │   │   ├── DatasetLoader.java               # charge dark-patterns.json au démarrage
│       │   │   ├── ScoreService.java
│       │   │   └── ReputationService.java
│       │   ├── repository/                          # accès données (JPA + JDBC)
│       │   ├── model/                                # entités JPA (ScanHistory, SiteReputation)
│       │   ├── dto/                                  # contrat JSON (Alert, AnalysisRequest/Response...)
│       │   └── config/AppProperties.java             # config centralisée (Ollama, HF, Qwen, coefficients)
│       └── resources/
│           ├── application.yml
│           └── dark-patterns.json                    # dataset RAG (exemples de dark patterns)
│
├── extension/                        Extension Chrome (Manifest V3)
│   ├── manifest.json
│   ├── content-script.js             extrait texte / DOM / médias de la page
│   ├── background.js                 appelle l'API backend
│   ├── popup.html / .css / .js       badge + score + alertes
│   └── dashboard.html / .css / .js   détail complet, historique, export JSON
│
└── demo/                              pages de test (propre, manipulatrice, avec vidéo)

Prérequis

  • Java 17+
  • Maven
  • Ollama en local, avec les modèles :
    ollama pull phi3
    ollama pull nomic-embed-text
  • ffmpeg installé et accessible dans le PATH (ou configuré via FFMPEG_PATH)
  • Clés API (optionnelles — sans elles, les modules vidéo/audio sont simplement inactifs) :
    • HuggingFace : token d'inférence → variable d'environnement HF_TOKEN
    • Qwen (DashScope) : clé API → variable d'environnement QWEN_KEY

Lancer le backend

cd backend
# Windows (PowerShell)
$env:HF_TOKEN="hf_xxx"; $env:QWEN_KEY="sk-xxx"; mvn spring-boot:run

# macOS / Linux
HF_TOKEN=hf_xxx QWEN_KEY=sk-xxx mvn spring-boot:run

Le backend démarre sur http://localhost:8080 (base H2 en mémoire, aucune installation de base de données requise). Au premier démarrage, DatasetLoader charge automatiquement dark-patterns.json en base pour le RAG.

Tester rapidement :

curl -X POST http://localhost:8080/api/analyze \
  -H "Content-Type: application/json" \
  -d @backend/test-payload.json

Charger l'extension

  1. chrome://extensions
  2. Activer le mode développeur
  3. Charger l'extension non empaquetée → sélectionner le dossier extension/
  4. Ouvrir n'importe quelle page → cliquer sur l'icône C2LIA → Analyser la page

Le bouton Voir le détail ouvre un tableau de bord complet (score, détail par module, historique, export JSON).

Pages de démo

Le dossier demo/ contient des pages prêtes à tester :

  • propre.html — page sans piège (score attendu ~100)
  • manipulatrice.html — cumule fausse urgence, faux stock, bouton de refus caché, faux avis
  • video-reelle.html — inclut une vidéo pour tester les modules vidéo/audio

Configuration

Tout se règle dans backend/src/main/resources/application.yml, sous la clé adguard :

adguard:
  scaleFactor: 20.0        # sensibilité du score global
  coefficients:             # poids de gravité par pattern détecté
    fake_review: 1.5
    ai_generated_video: 1.5
    synthetic_voice: 1.3
    fake_urgency: 1.0
    fake_stock: 1.0
    hidden_decline_button: 0.8
    fomo_language: 0.6

Sécurité

Les clés API (HF_TOKEN, QWEN_KEY) sont lues uniquement depuis des variables d'environnement et ne doivent jamais être committées en dur dans application.yml.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages