À propos du projet

FireX Proxy est une extension de navigateur pour Chrome/Chromium et Firefox qui agit comme un commutateur de proxy pour les points de terminaison HTTP, HTTPS, SOCKS4 et SOCKS5. Elle existe depuis plus de dix ans et a déjà atteint des millions d'utilisateurs ; l'infrastructure hébergée d'origine n'est plus en service, et le projet fonctionne désormais de manière serverless et indépendante, sans comptes ni dépendance aux serveurs FireX Proxy. L'extension permet aux utilisateurs d'ajouter des proxys manuellement, de synchroniser des proxys depuis un ou plusieurs fichiers texte distants, et d'appliquer des règles de contournement natives du navigateur pour les hôtes qui ne doivent pas utiliser le proxy. Un planificateur GitHub Actions met à jour la source de proxys du dépôt par défaut (`proxies.txt`) toutes les six heures. Le planificateur récupère des flux publics de proxys spécifiques à chaque protocole, les normalise au format source, supprime les doublons et filtre les adresses non routables/privées. Il peut aussi être exécuté localement avec `make update-proxies` ou prévisualisé avec `npm run update:proxies -- --dry-run --limit 20`. Comme les listes publiques de proxys vieillissent rapidement, l'extension utilise en option une application compagnon en Rust appelée `firex-native`. Cette application native s'exécute sur l'ordinateur de l'utilisateur, teste directement les proxys candidats, mesure le temps de réponse, s'arrête lorsqu'assez de proxys fonctionnels sont trouvés et renvoie la progression à l'interface de l'extension. Sans FireX Native, l'extension fonctionne toujours comme un commutateur de proxy normal avec ajout manuel, synchronisation des sources, connexion/déconnexion et règles de contournement. Le projet est construit à partir d'une base de code unique pour Chrome et Firefox. Les commandes de développement incluent `make dev` et `make dev-firefox` pour le mode développement, et `make build-chrome` / `make build-firefox` pour les bundles de production écrits dans `dist/`. L'outillage de publication pour l'application native est fourni via `make native-manifest` et `make native-release VERSION=0.1.2`, qui met à jour la version de la crate Rust, actualise `Cargo.lock`, synchronise `native-manifest.json`, crée un tag de version et déclenche les builds d'installateurs et la publication des ressources de version.