- JavaScript 81%
- CSS 18.4%
- HTML 0.6%
| public | ||
| server | ||
| src | ||
| .gitignore | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
Share
Colle un lien Instagram, TikTok, X, Bluesky, YouTube, Reddit, Facebook, Threads ou Mastodon : Share affiche le post (texte, images, vidéo) sans que le réseau social voie la personne qui le regarde, et donne le lien d’origine nettoyé de ses paramètres de pistage.
En ligne : https://share.antifat32.org
Fonctionnement
Le serveur récupère la page publique du post à la place du visiteur, en extrait le contenu, puis sert les images et les vidéos lui-même. Tant que le visiteur ne clique pas sur le lien d’origine, son navigateur ne contacte pas le réseau social.
- Rien n’est écrit sur disque : pas de journal, pas de base de données, seulement un cache en mémoire de quelques minutes.
- Les liens partagés depuis Share affichent une carte d’aperçu générée par le serveur.
- Le serveur refuse de contacter les adresses privées ou locales (
server/net.js).
Selon les réseaux, l’extraction passe par la page publique (balises Open Graph) ou par une API publique : api.fxtwitter.com pour X, public.api.bsky.app pour Bluesky. Les réseaux changent souvent leurs pages, et un réseau peut cesser de fonctionner sans prévenir.
Développer
Il faut Node.js 20 ou plus récent.
npm ci
npm run build # interface dans dist/
npm start # serveur sur http://127.0.0.1:8031
npm run dev lance l’interface seule, sans serveur, avec Vite.
Variables d’environnement du serveur :
| Variable | Rôle | Par défaut |
|---|---|---|
PORT |
Port d’écoute | 8031 |
ORIGIN |
Adresse publique du site, utilisée dans les liens et les cartes d’aperçu | https://share.antifat32.org |
SHARE_SECRET |
Clé qui signe les adresses des médias servis. À fixer en production, sinon elle change à chaque redémarrage | aléatoire |
Organisation
server/index.js: serveur HTTP, routes, cache.server/extract.js: détection du réseau et extraction du post.server/clean.js: nettoyage des liens.server/net.js: requêtes sortantes et protections contre les adresses internes.server/embed.js: cartes d’aperçu (Satori et resvg).src/: l’interface (React).
Licence
Le code est publié sous licence GNU Affero General Public License version 3 (AGPL-3.0-only), voir LICENSE.
Les polices de server/fonts/ et celles chargées par l’interface sont sous SIL Open Font License, les icônes Lucide sous licence ISC et les emojis Twemoji sous CC-BY 4.0.
Un projet d’AntiFAT32.