Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
RedditOSINT — OSINT Reddit par nom d'utilisateur. Découvrez les publications indexées, les commentaires, le contenu supprimé et actif, les schémas d'activité, les identifiants exposés et un score d'exposition global. | Kitploit
Outils/GitHubGitHub/albertrg99/redditosint
OSINT (Renseignement de Sources Ouvertes)ReconnaissanceOSINT pour l'Ingénierie SocialeScripting et AutomatisationExfiltration de DonnéesCollecte d'InformationsProtection de la Vie PrivéeIngénierie SocialeUtilitaires et FrameworksRenseignement sur les Menaces
4117il y a 1 jourPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
albertrg99/redditosint

RedditOSINT

OSINT Reddit par nom d'utilisateur. Découvrez les publications indexées, les commentaires, le contenu supprimé et actif, les schémas d'activité, les identifiants exposés et un score d'exposition global.

Voir le dépôt

RedditOSINT

Reddit OSINT par nom d'utilisateur. Fournissez un nom d'utilisateur et l'outil renvoie tout ce que les archives publiques de Reddit ont indexé pour ce compte : publications, commentaires, ce qui a été supprimé et ce qui est toujours actif, schémas d'activité, identifiants divulgués et un score d'exposition.

Aucune dépendance, aucune clé API, aucune connexion. Juste python3.

image

python3 reddit_osint.py someuser

La même analyse est également disponible sous forme d'outils MCP pour les clients LLM, voir serveur MCP.

pip install -r requirements.txt && python mcp_server.py

Ce qu'il fait et pourquoi il existe

Reddit supprime des choses, mais les archives de données tierces conservent la copie qui existait avant la suppression (ou du moins le marqueur [removed] / [deleted]). Cet outil interroge ces archives et reconstruit le profil d'activité d'un compte.

C'est la prémisse derrière l'outil web h3kz-reddint, qui sert de référence à ce script : il réimplémente ce pipeline (deux sources, fusion, regex PII, graphe, score) sous forme de CLI autonome, avec des tests et une prise en charge optionnelle de proxy.

Les sources

SourceCe que c'estRôle
Arctic Shift (arctic-shift.photon-reddit.com)Archive Reddit gratuite, successeur communautaire de Pushshift. Couvre 2022→aujourd'hui et conserve le scrape original (selftext, removed_by_category, media_metadata, flair). Pas de clé API, limite de débit par IP.Source principale. Fournit 100 % des données utiles.
PullPush (api.pullpush.io)Un autre index des mêmes données Reddit (dumps historiques Pushshift).Repli. Interrogé en parallèle et fusionné par id. Son API subreddit renvoie 404, il ne sert donc que pour les posts/commentaires.
reddit.com—Jamais interrogé. Utilisé uniquement pour construire les URLs permalink dans le rapport. L'API officielle de Reddit n'est pas utilisée (pas de connexion), c'est pourquoi cela fonctionne sur des comptes suspendus.

Mesuré sur un compte échantillon réel : Arctic Shift a renvoyé 39 posts / 139 commentaires, PullPush a renvoyé 38 posts avec des IDs qui se chevauchent. Arctic Shift l'emporte ; --source arctic est plus rapide et suffisant.


Prérequis

  • Python 3.9+ (testé sur 3.13)
  • Pas de pip install. Uniquement la bibliothèque standard.
  • Pour les proxies SOCKS : pip install pysocks (optionnel, nécessaire uniquement pour socks5://)
  • Pour le serveur MCP uniquement : pip install -r requirements.txt (FastMCP). Le CLI n'en a pas besoin.

Utilisation

Basique

python3 reddit_osint.py someuser

Affiche le rapport au format JSON sur stdout (résumé uniquement, sans le vidage par élément) et journalise sur stderr.

Enregistrement du rapport complet

python3 reddit_osint.py someuser --json report.json
python3 reddit_osint.py someuser --json report.json --quiet > /dev/null

report.json inclut la clé all_items avec chaque publication et commentaire (texte, subreddit, score, date, statut, permalien). Le résumé à l'écran l'omet afin de ne pas déverser 200 Ko.

Filtres

python3 reddit_osint.py someuser --subreddit dotnet       # one subreddit only
python3 reddit_osint.py someuser --keywords "kubernetes"  # posts mentioning X
python3 reddit_osint.py someuser --over18 true            # NSFW only
python3 reddit_osint.py someuser --source arctic          # single source (faster)
python3 reddit_osint.py someuser --max-pages 10           # cap pagination (100 items/page)
python3 reddit_osint.py someuser --delay 1.0             # slower, better with proxies
python3 reddit_osint.py someuser --rate-limit-retries 0   # fail fast when throttled

Proxies

python3 reddit_osint.py someuser --proxies proxies.txt

proxies.txt, un proxy par ligne. Formats acceptés :

http://1.2.3.4:8080
https://1.2.3.4:8443
socks5://1.2.3.4:1080
socks5://user:[email protected]:1080
1.2.3.4:8080              # no scheme -> assumed http://
# comments and blank lines are ignored

Les doublons sont supprimés. Si le fichier ne contient aucun proxy valide, le script se termine avec le code 2 et n'effectue aucune requête.

Rotation. Les proxys sont parcourus en round-robin. Lorsqu'une requête revient avec un code de blocage/limitation de débit, ce proxy est mis en cooldown pendant --cooldown secondes et le script passe au suivant :

FlagDefaultWhat it does
--proxies FILE—Proxy list. Without it: direct connection.
--cooldown SECONDS30How long a banned proxy stays sidelined.
--max-attempts N(proxies+1) × 3Attempt ceiling per request before giving up.
--no-direct-fallbackoffWait instead of connecting directly when all proxies are cooling down.
--shuffle-proxiesoffShuffle the list at startup (spreads load from the first request).
--proxy-statsoffAdds proxy_stats to the report: ok / banned / errors per proxy.
--rate-limit-retries N2Retries of the whole page with exponential backoff (30 s, 60 s, capped at 120 s) when the API answers 429/422.

Les codes traités comme un bannissement (ils font tourner le proxy) : 401 403 407 422 429 500 502 503 504 520 521 522 523 524, plus tout 400/409 dont le corps contient slow down / rate limit / too many requests / timeout. Arctic Shift utilise 422 "Timeout. Maybe slow down a bit" pour la limitation de débit, il est donc délibérément traité comme un bannissement.

Un 404 ne fait pas tourner le proxy : c'est une mauvaise requête, pas un mauvais proxy, et réessayer ailleurs ne le corrigera pas.

Backoff. Après un bannissement, il attend min(cooldown, 10 s) — cela s'applique aussi aux connexions directes, ce qui est là où cela fait le plus mal. Si une page épuise ses tentatives, fetch_all réessaie la page avec un backoff exponentiel (--rate-limit-retries, 2 tentatives par défaut = 30 s et 60 s). C'est ce qui empêche le script de perdre silencieusement des commentaires lorsqu'il déclenche une limitation de débit en cours d'exécution.

Exemple de log avec rotation :

[proxy] http://1.2.3.4:8080 blocked (429), backing off 10s -> rotating
[proxy] http://5.6.7.8:1080 failed (Connection refused), rotating
[proxy] direct connection blocked (422), backing off 10s -> rotating
[!] arctic/comments rate limited, backing off 30s (retry 1/2)

Lorsque tous les proxys sont en période de refroidissement, le script attend la plus longue période de refroidissement restante et réessaie (ou utilise une connexion directe, sauf si --no-direct-fallback a été passé).

Avertissement : un proxy est le chemin de sortie que votre IP emprunte vers un tiers. Si vous ne faites pas confiance au fournisseur de proxy, n'en utilisez pas avec cet outil.

Variables d'environnement

VariableObjectif
REDDIT_OSINT_ARCTICRemplacer l'URL Arctic Shift (miroirs, tests).
REDDIT_OSINT_PULLPUSHRemplacer l'URL PullPush.

Quelles informations il extrait

Champs bruts des API

id, title, selftext, body, author, subreddit, created_utc, score, permalink, url, over_18, num_comments, link_flair_text, preview.images, media_metadata, removed_by_category.

Classification du statut

StatutDétection
removedTexte = [removed] ou [ Removed by Reddit ], ou removed_by_category présent (posts) → un modérateur l'a supprimé.
deletedTexte = [deleted] ou author == "[deleted]" → l'auteur l'a supprimé.
liveTout le reste.

C'est tout l'intérêt de l'outil : l'archive capture le fait de la suppression même lorsqu'elle n'a pas de contenu, et cela seul constitue une métadonnée utile.

Télécharger l’outil