6.4 KiB
Limier
Plateforme OSINT auto-hébergée : recherche d'informations publiquement accessibles à partir d'un pseudonyme, d'un prénom et nom, d'une adresse e-mail ou d'un nom de domaine.
Bâtie sur Maigret pour la recherche par pseudonyme, avec deux moteurs écrits pour l'occasion — Maigret ne couvre ni l'e-mail ni le domaine.
Le nom est un clin d'œil : un limier suit une piste, et Maigret doit le sien au commissaire de Simenon.
Ce que ça fait
Recherche par pseudonyme sur 3 300+ sites, avec extraction des données de profil : avatar, nom affiché, biographie, abonnés, date d'inscription.
Recherche par nom civil. « Hubert Cornet » est traité comme une seule
identité : les pseudonymes plausibles sont déduits par ordre de probabilité
(hubertcornet, hubert.cornet, hcornet, h.cornet…) puis recherchés
ensemble. La liste est affichée avant lancement.
Recherche par e-mail : profil Gravatar et comptes vérifiés qui y sont déclarés, posture de messagerie du domaine (MX, SPF, DMARC), détection des adresses jetables, fuites connues (optionnel), comptes rattachés (optionnel).
Recherche par domaine : enregistrement RDAP, DNS complet, et sous-domaines issus des journaux de transparence des certificats, séparés entre ceux qui résolvent encore et ceux qui sont historiques.
Des résultats notés, pas des pastilles vertes. Un scanner naïf considère « trouvé » tout site répondant 200 — alors que beaucoup rendent 200 sur une page « utilisateur inconnu ». Chaque résultat est jugé sur des signaux observables (profil extrait, nom affiché, avatar, métriques, classement du site) puis classé confirmé / probable / faible. Les signaux sont affichés : on voit pourquoi un résultat est confirmé.
Progression en direct. Les résultats arrivent au fil de l'eau, site par site, pas en bloc après deux minutes de sablier.
Architecture
| Composant | Rôle |
|---|---|
limier-web |
interface React compilée, servie par nginx |
limier-api |
FastAPI — acceptation, authentification, flux SSE |
limier-worker |
arq — exécution des recherches, travaux planifiés |
limier-postgres |
recherches, résultats, comptes, quotas |
limier-redis |
file de travaux et progression |
limier-holehe |
optionnel, isolé — licence GPLv3 |
limier-flaresolverr |
optionnel — contournement Cloudflare |
Détail dans docs/01-architecture.md.
Arborescence
limier/
├── backend/ API + worker (une image, deux commandes)
│ ├── src/limier/
│ │ ├── config.py toutes les variables d'environnement
│ │ ├── api/routes/ une route = un fichier
│ │ ├── auth/ OIDC Authentik, session par cookie signé
│ │ ├── db/ modèles SQLAlchemy
│ │ ├── engines/ contrat commun + un dossier par moteur
│ │ │ ├── base.py le contrat
│ │ │ ├── scoring.py la notation anti-faux-positifs
│ │ │ ├── username/ Maigret
│ │ │ ├── email/ Gravatar, DNS, fuites, holehe, pivot
│ │ │ └── domain/ RDAP, DNS, transparence des certificats
│ │ ├── jobs/ file arq, progression, travaux
│ │ ├── net/ client HTTP, pool de proxies
│ │ ├── privacy/ hachage des identifiants, conservation
│ │ └── quotas/ quotas mensuels, limitation de débit
│ ├── migrations/ Alembic
│ └── tests/
├── frontend/ React 19 + Vite, sans framework CSS
├── services/holehe/ microservice isolé (GPLv3)
├── deploy/ compose, config Traefik, .env.example
├── docs/ sept documents, voir ci-dessous
└── .gitea/workflows/ CI, publication, entretien
Documentation
| Fichier | Contenu |
|---|---|
01-architecture.md |
découpe, contrat des moteurs, où chercher quoi |
02-deploiement.md |
installation sur SLDOKP03 |
03-authentik.md |
groupes, fournisseur OAuth2, pièges |
04-moteurs.md |
sources, limites, notation |
05-rgpd.md |
conservation, effacement, ce qui reste à ta charge |
06-exploitation.md |
sortie réseau, entretien, pannes |
07-api.md |
routes, flux SSE, codes de refus |
Démarrage rapide
cp deploy/.env.example .env # renseigner les trois secrets
docker compose run --rm limier-api alembic upgrade head
docker compose up -d
curl -s https://limier.tips-of-mine.com/api/pret | jq
Développement :
cd backend && pip install -e ".[dev]" && pytest -q
cd frontend && npm ci && npm run dev
Deux points à connaître avant d'ouvrir au public
La sortie réseau. Une recherche émet 500 requêtes vers 500 domaines en
quelques secondes. Depuis une IP unique, cela déclenche des blocages et le taux
de sites non vérifiables monte vite. Le pool de proxies est prévu pour ça — c'est
le poste de coût principal d'une instance publique. Voir
06-exploitation.md.
Le RGPD. Un service public de recherche sur des personnes fait de toi un
responsable de traitement. Ce qui est implémenté : minimisation (le terme peut
n'être conservé que sous forme d'empreinte), purge automatique, export, demande
d'effacement avec liste d'exclusion. Ce qui reste à ta charge : base légale,
mentions légales, modération. Voir 05-rgpd.md.
Licences
Limier est sous licence MIT. Voir NOTICE.md pour les
composants tiers — en particulier services/holehe/, sous GPLv3, maintenu
comme programme séparé précisément pour cette raison.
Usage licite uniquement. L'outil n'interroge que des sources publiques, mais il ne distingue pas un usage légitime d'un harcèlement.