Une extension puissante de gestion de proxy pour navigateur, compatible avec Chrome/Firefox/Edge, supportant la gestion multi-scénarios, vous permettant de configurer et de basculer facilement entre différents proxies réseau.
- HTTP - Proxy HTTP traditionnel
- HTTPS - Proxy HTTPS sécurisé
- SOCKS5 - Proxy SOCKS5 avec support TCP/UDP
- SOCKS4 - Compatibilité proxy SOCKS4 legacy
- Chrome - Utilise Manifest V3 + Service Worker
- Firefox - Utilise Manifest V3 + l'API
proxy.onRequestpour l'interception des requêtes proxy - Edge - Parfaitement compatible avec les extensions Chrome, basé sur le noyau Chromium
| Mode | Description |
|---|---|
| Désactiver | Désactiver le proxy, utiliser la connexion réseau par défaut du système |
| Manuel | Sélectionner manuellement un proxy depuis la liste |
| Automatique | Sélectionner automatiquement le proxy correspondant selon les règles d'URL (mode PAC) |
- Support Multi-scénarios: Créer différents ensembles de configurations de proxy (ex: Entreprise, Domicile, Environnement de développement)
- Basculement Rapide: Changement en un clic des listes de proxy entre différents scénarios
- Gestion Flexible: Support de l'ajout, renommage, suppression et tri des scénarios
- Migration de Proxy: Support du déplacement des proxies entre différents scénarios
- Application automatique: Sélection et application automatiques du proxy lors du changement de scénario en mode manuel
- Support multi-format: Prend en charge les formats d'abonnement AutoProxy, SwitchyLegacy, SwitchyOmega, PAC
- Mise à jour automatique: Prend en charge la mise à jour automatique planifiée (1min/6h/12h/1jour)
- Inversion des règles: Prend en charge l'inversion des règles de correspondance et de contournement de l'abonnement (mode liste blanche/noire)
- Aperçu des règles: Visualisation rapide des règles de correspondance et de contournement extraites de l'abonnement
- ID unique: Chaque proxy et scénario possède un ID unique pour une gestion précise
- Adresses bypassant le proxy (
bypass_rules): Domaines/IP de connexion directe en mode manuel - Adresses utilisant le proxy (
include_rules): Domaines nécessitant un accès proxy en mode automatique - Politique de repli: Choisir la connexion directe ou le refus en cas d'échec en mode automatique
- Prise en charge du joker
*et de la correspondance de domaine - Convient aux scénarios où différents sites web utilisent différents proxies
- Authentification par nom d'utilisateur/mot de passe
- Traitement automatique des demandes d'authentification du serveur proxy
- Stockage sécurisé des identifiants
- Test de connexion: Vérifier la disponibilité du proxy
- Mesure de latence: Tester le temps de réponse du proxy
- Test en lot: Tester tous les proxies en un clic
- Indicateurs de couleur: Vert(<500ms) / Orange(≥500ms) / Rouge(Echec)
- Détecter les paramètres proxy actuels du navigateur
- Vérifier si l'extension contrôle correctement le proxy
- Identifier si d'autres extensions contrôlent le proxy
- Fournit des résultats d'état, d'avertissement et d'erreur
- Visualisation du script: Voir le contenu du script PAC généré automatiquement
- Liste des règles: Affichage clair de toutes les règles de correspondance de proxy actives
- Support de débogage: Dépannage facile des problèmes de correspondance en mode automatique
- Mode Clair: Pour une utilisation de jour
- Mode Sombre: Pour une utilisation de nuit
- Basculement automatique: Changer automatiquement de thème selon l'heure (configurable)
| Type de stockage | Contenu de stockage | Description |
|---|---|---|
| Stockage local (local) | Liste des proxies, paramètres de thème, paramètres de langue, configuration de synchronisation | Toujours activé, assurant la disponibilité hors ligne et la persistance des données |
| Synchronisation cloud (sync) | Données de configuration complètes (stockage par morceaux) | Optionnel, utilise le stockage par morceaux pour contourner les limites de quota |
- Utilise l'API
chrome.storage.sync(Chrome) oubrowser.storage.sync(Firefox) - Synchronisation automatique via le compte Chrome/Firefox
- Convient à la synchronisation multi-appareils avec le même compte navigateur
- Stockage par morceaux: Les données de configuration sont automatiquement divisées en morceaux (7KB par morceau) pour contourner la limite de quota de 8KB par élément
- Intégrité des données: Utilise des sommes de contrôle pour assurer l'intégrité des données de synchronisation
- Opérations atomiques: L'opération Push efface les anciennes données avant d'écrire les nouvelles pour assurer la cohérence
- Affichage du quota: Affichage en temps réel du quota utilisé/total (100KB) et du nombre de morceaux
- Synchronisation de configuration entre navigateurs et appareils via GitHub Gist
- Nécessite la configuration d'un Personal Access Token GitHub
- Prise en charge du push/pull manuel ou de la synchronisation automatique
- Le contenu de la configuration est chiffré, les informations sensibles sont automatiquement effacées lors de l'exportation
| Élément de configuration | Description |
|---|---|
| Clé d'accès | GitHub Personal Access Token (doit avoir les permissions gist) |
| Nom de fichier | Nom de fichier dans Gist, par défaut proxy_assistant_config.json |
| ID Gist | Reconnaissance et sauvegarde automatiques, aucune saisie manuelle requise |
| Opération | Description |
|---|---|
| Push | Charger la configuration locale vers le cloud/Gist |
| Pull | Télécharger la configuration depuis le cloud/Gist vers local |
| Tester la connexion | Vérifier la validité du Gist Token et l'état de la configuration |
- Exporter la configuration: Générer un fichier JSON contenant toutes les informations de proxy, paramètres de thème, paramètres de langue, etc.
- Importer la configuration: Prise en charge de la restauration de la configuration depuis un fichier JSON
- Sécurité des données: Le fichier d'exportation efface automatiquement les informations sensibles (Token, mot de passe)
- Compatibilité de format: Prise en charge de l'importation de fichiers de configuration des anciennes versions
Cette extension prend en charge les langues suivantes :
| Langue | Code | État |
|---|---|---|
| 简体中文 | zh-CN | ✅ Pris en charge |
| 繁體中文 | zh-TW | ✅ Pris en charge |
| English | en | ✅ Pris en charge |
| 日本語 | ja | ✅ Pris en charge |
| Français | fr | ✅ Pris en charge |
| Deutsch | de | ✅ Pris en charge |
| Español | es | ✅ Pris en charge |
| Português | pt | ✅ Pris en charge |
| Русский | ru | ✅ Pris en charge |
| 한국어 | ko | ✅ Pris en charge |
ProxyAssistant/
├── conf/ # Exemple de configuration
│ └── demo.json # Fichier de configuration example
├── readme/ # Documentation multilingue
│ ├── README-zh-TW.md # Chinois traditionnel
│ ├── README-en.md # Anglais
│ ├── README-ja.md # Japonais
│ ├── README-fr.md # Français
│ ├── README-de.md # Allemand
│ ├── README-es.md # Espagnol
│ ├── README-pt.md # Portugais
│ ├── README-ru.md # Russe
│ └── README-ko.md # Coréen
├── src/ # Code source
│ ├── manifest_chrome.json # Configuration de l'extension Chrome (Manifest V3)
│ ├── manifest_firefox.json # Configuration de l'extension Firefox
│ ├── main.html # Page de paramètres
│ ├── popup.html # Page popup
│ ├── _locales/ # Ressources d'internationalisation
│ ├── js/
│ │ ├── main.js # Logique principale de la page de paramètres
│ │ ├── popup.js # Logique principale du popup
│ │ ├── worker.js # Service en arrière-plan (Chrome: Service Worker)
│ │ ├── i18n.js # Prise en charge de l'internationalisation
│ │ ├── storage.js # Module de gestion du stockage
│ │ ├── proxy.js # Module de gestion du proxy
│ │ ├── scenarios.js # Module de gestion des scénarios
│ │ ├── sync.js # Module de synchronisation des données
│ │ ├── subscription.js # Module d'abonnement
│ │ ├── theme.js # Module de changement de thème
│ │ ├── detection.js # Module de détection proxy
│ │ ├── validator.js # Module de validation des données
│ │ ├── language.js # Module de sélection de langue
│ │ ├── utils.js # Module d'utilitaires
│ │ ├── config.js # Module de constantes de configuration
│ │ ├── version.js # Module de gestion de version
│ │ └── jquery.js # Bibliothèque jQuery
│ ├── css/
│ │ ├── main.css # Styles de la page de paramètres (y compris les composants communs)
│ │ ├── popup.css # Styles du popup
│ │ ├── theme.css # Styles du thème
│ │ ├── tabs.css # Styles des onglets
│ │ └── eye-button.css # Styles du bouton d'affichage du mot de passe
│ └── images/ # Ressources d'images
│ ├── icon-16.png
│ ├── icon-32.png
│ ├── icon-48.png
│ ├── icon-128.png
│ └── logo-128.png
├── public/ # Ressources publiques
│ └── img/ # Images de démonstration et promotionnelles
├── tests/ # Tests
│ ├── jest.config.js # Configuration Jest
│ ├── setup.js # Configuration de l'environnement de test
│ ├── __mocks__/ # Fichiers Mock
│ │ └── chrome.js # Chrome API Mock
│ ├── unit/ # Tests unitaires
│ ├── integration/ # Tests d'intégration
│ └── e2e/ # Tests de bout en bout
├── script/ # Scripts de construction
│ └── build.sh # Script de construction de l'extension
├── release/ # Notes de version
│ └── *.md # Journaux de mise à jour des versions
├── doc/ # Répertoire de documentation
├── build/ # Répertoire de sortie de construction
├── package.json # Dépendances du projet
├── package-lock.json # Verrouillage des versions des dépendances
├── Makefile # Entrée de commande de construction
├── jest.config.js # Configuration Jest (pointe vers tests/jest.config.js)
├── AGENTS.md # Guide de développement
└── LICENSE # Licence MIT
Méthode 1 (Recommandée): Installer depuis le Chrome Web Store
- Ouvrez Chrome et accédez au Chrome Web Store
- Recherchez "Assistant Proxy"
- Cliquez sur "Ajouter à Chrome"
Méthode 2: Installation locale
- Option A (Utilisation du code source): Téléchargez le code source, renommez
src/manifest_chrome.jsonenmanifest.json, puis chargez le répertoiresrc - Option B (Utilisation du package):
- Accédez à la page GitHub Releases
- Téléchargez le fichier
proxy-assistant-chrome-x.x.x.zip - Extrayez le fichier ZIP téléchargé dans un répertoire任意
- Ouvrez Chrome et accédez à
chrome://extensions/ - Activez le "Mode développeur" en haut à droite
- Cliquez sur le bouton "Charger l'extension décompressée" en haut à gauche
- Sélectionnez le dossier extrait à l'étape 3
- L'extension apparaîtra dans la liste des extensions après une installation réussie
Méthode 1 (Recommandée): Installer depuis les modules complémentaires Firefox
- Ouvrez Firefox et accédez aux Modules complémentaires Firefox
- Recherchez "Assistant Proxy"
- Cliquez sur "Ajouter à Firefox"
Méthode 2: Installation locale
- Téléchargez le package d'extension Firefox (fichier
.xpi) depuis le répertoire release - Ouvrez Firefox et accédez à
about:addons - Cliquez sur l'icône d'engrenage → Installer depuis un fichier
- Sélectionnez le fichier
.xpitéléchargé
Le navigateur Edge est basé sur le noyau Chromium et peut installer directement les extensions Chrome.
Méthode 1 (Recommandée): Installer depuis le Chrome Web Store
- Ouvrez Edge et accédez à
edge://extensions/ - Dans la section "Trouver de nouvelles extensions", cliquez sur "Obtenir des extensions depuis Chrome Web Store", accédez au Chrome Web Store
- Recherchez "Assistant Proxy"
- Cliquez sur "Obtenir" puis "Ajouter à Microsoft Edge"
Méthode 2: Installation locale
- Accédez à la page GitHub Releases
- Téléchargez le fichier
proxy-assistant-chrome-x.x.x.zip - Extrayez le fichier ZIP téléchargé dans un répertoire任意
- Ouvrez Edge et accédez à
edge://extensions/ - Activez le "Mode développeur" en bas à gauche
- Cliquez sur le bouton "Sélectionner le répertoire décompressé"
- Sélectionnez le dossier extrait à l'étape 3
- L'extension apparaîtra dans la liste des extensions après une installation réussie
- Cliquez sur l'icône de l'extension pour ouvrir le popup
- Cliquez sur le bouton "Paramètres" pour ouvrir la page de paramètres
- Cliquez sur le bouton "Ajouter un proxy" pour ajouter un nouveau proxy
- Remplissez les informations du proxy :
- Nom du proxy
- Type de protocole (HTTP/HTTPS/SOCKS4/SOCKS5)
- Adresse du proxy (IP ou domaine)
- Numéro de port
- (Optionnel) Nom d'utilisateur et mot de passe
- (Optionnel) Configuration des règles d'URL
- Cliquez sur le bouton "Enregistrer"
Mode Manuel:
- Sélectionnez le mode "Manuel" dans le popup
- Sélectionnez un proxy dans la liste
- Le statut "Connecté" indique qu'il est actif
Mode Automatique:
- Sélectionnez le mode "Automatique" dans le popup
- Configurez les règles d'URL pour chaque proxy dans la page de paramètres
- Les proxies sont automatiquement sélectionnés selon le site web que vous consultez
Prérequis:
- Node.js >= 14
- npm >= 6
- Navigateur Chrome / Firefox (pour les tests)
- web-ext (pour construire le XPI Firefox, optionnel)
Installer les dépendances:
make test_init
# ou
npm install| Commande | Description |
|---|---|
make test |
Exécuter tous les tests (unitaire + intégration + e2e) |
make test_nocache |
Exécuter les tests sans cache |
make test_unit |
Exécuter uniquement les tests unitaires |
make test_integration |
Exécuter uniquement les tests d'intégration |
make test_e2e |
Exécuter uniquement les tests e2e |
make test_clean |
Nettoyer le cache de test et les fichiers de couverture |
Utilisation directe de npm:
npm test # Exécuter tous les tests
npm run test:unit # Exécuter uniquement les tests unitaires
npm run test:integration # Exécuter uniquement les tests d'intégration
npm run test:e2e # Exécuter uniquement les tests e2e
npm run test:watch # Exécuter les tests en mode watch
npm run test:coverage # Exécuter les tests et générer un rapport de couverture| Commande | Description |
|---|---|
make build |
Construire les extensions Chrome et Firefox |
make clean |
Nettoyer les artefacts de construction |
make test_clean |
Nettoyer le cache de test et les fichiers de couverture |
Spécifier la version:
make build VERSION=dev
# ou
./script/build.sh devArtefacts de construction:
build/
├── ProxyAssistant_{VERSION}_chrome.zip # Package d'installation Chrome
├── ProxyAssistant_{VERSION}_chrome.tar.gz # Package source Chrome
├── ProxyAssistant_{VERSION}_firefox.zip # Package d'installation Firefox
├── ProxyAssistant_{VERSION}_firefox.tar.gz # Package source Firefox
└── ProxyAssistant_{VERSION}_firefox.xpi # Package d'extension officiel Firefox
Installation locale Chrome:
- Renommer
src/manifest_chrome.jsonenmanifest.json - Ouvrir Chrome, accéder à
chrome://extensions/ - Activer le "Mode développeur"
- Cliquer sur "Charger l'extension décompressée"
- Sélectionner le répertoire
src
Installation locale Firefox:
- Utiliser
make buildpour générer le fichier XPI - Ouvrir Firefox, accéder à
about:addons - Cliquer sur l'icône d'engrenage → Installer depuis un fichier
- Sélectionner le fichier
.xpigénéré
- Indentation: 2 espaces
- Guillemets: Guillemets simples
- Nommage: camelCase, les constantes utilisent UPPER_SNAKE_CASE
- Point-virgule: Utilisation cohérente
Pour les spécifications détaillées, veuillez consulter AGENTS.md
Prise en charge des règles de correspondance suivantes :
# Correspondance exacte
google.com
# Correspondance de sous-domaine
.google.com
www.google.com
# Correspondance avec joker
*.google.com
*.twitter.com
# Adresse IP
192.168.1.1
10.0.0.0/8
En mode automatique, lorsque la connexion proxy échoue :
| Politique | Description |
|---|---|
| Connexion directe (DIRECT) | Contourner le proxy, se connecter directement au site cible |
| Refus de connexion (REJECT) | Refuser la demande |
Le mode automatique utilise les scripts PAC (Proxy Auto-Config) :
- Sélectionne automatiquement le proxy selon l'URL actuelle
- Correspond dans l'ordre de la liste proxy, retourne le premier proxy correspondant
- Prise en charge de la politique de repli
- Restaure automatiquement la dernière configuration au démarrage du navigateur
| Action | Méthode |
|---|---|
| Déplier/Replier la carte proxy | Cliquer sur l'en-tête de la carte |
| Déplier/Replier toutes les cartes | Cliquer sur le bouton "Tout déplier/replier" |
| Réorganiser par glisser-déposer | Faire glisser la poignée sur l'en-tête de la carte |
| Afficher/Masquer le mot de passe | Cliquer sur l'icône'œil du champ mot de passe |
| Activer/Désactiver un seul proxy | Utiliser l'interrupteur sur la carte |
| Tester un seul proxy | Cliquer sur le bouton "Test de connexion" |
| Tester tous les proxies | Cliquer sur le bouton "Tout tester" |
| Fermer rapidement le popup | Appuyer sur la touche ESC sur la page |
- Exporter la configuration: Cliquez sur "Exporter la configuration" pour télécharger un fichier JSON
- Importer la configuration: Cliquez sur "Importer la configuration" et sélectionnez un fichier JSON pour restaurer
La configuration inclut :
- Toutes les informations de proxy
- Paramètres du thème
- Heures du mode nuit
- Paramètres de langue
- État de la synchronisation
Cliquez sur le bouton "Détecter l'effet du proxy" pour :
- Afficher le mode proxy actuel du navigateur
- Vérifier si l'extension contrôle correctement le proxy
- Détecter si d'autres extensions ont pris le contrôle
- Obtenir un diagnostic et des suggestions
- Chrome utilise la spécification Manifest V3
- Service Worker remplace les pages d'arrière-plan
- Firefox utilise background scripts + onRequest API
- Prend en charge le stockage de synchronisation natif du navigateur et la synchronisation GitHub Gist
| Module | Fichier | Description |
|---|---|---|
| Principal | main.js | Logique de la page de paramètres, gestion des scénarios, proxy CRUD, tri par glisser-déposer, import/export, détection proxy |
| Popup | popup.js | Interaction avec l'interface du popup, affichage de l'état du proxy, basculement rapide du proxy, affichage de correspondance automatique |
| Arrière-plan | worker.js | Gestion de la configuration du proxy, génération du script PAC, gestion de l'authentification, test du proxy, mise à jour automatique de l'abonnement, surveillance des changements de stockage |
| Stockage | storage.js | Gestion du stockage local/cloud, synchronisation par morceaux, validation des données, import/export de configuration |
| i18n | i18n.js | Prise en charge multilingue, changement en temps réel, chargement dynamique des traductions |
| Thème | theme.js | Basculement entre thème clair/sombre, changement automatique selon l'heure |
| Scénarios | scenarios.js | Support multi-scénarios, basculement de scénario, renommer/supprimer/trier des scénarios |
| Synchronisation | sync.js | Synchronisation native du navigateur, synchronisation GitHub Gist |
| Abonnement | subscription.js | Analyse d'abonnement proxy (AutoProxy/SwitchyLegacy/SwitchyOmega/PAC), mise à jour automatique |
| Proxy | proxy.js | Rendu de la liste de proxies, édition, test, tri par glisser-déposer |
| Détection | detection.js | Détection de l'état du proxy, détection du contrôle de l'extension, détection des conflits |
| Validateur | validator.js | Validation du format IP/domaine/port/règle |
| Utilitaires | utils.js | Fonctions utilitaires communes, assistants d'opérations DOM |
| Langue | language.js | Gestion de l'interaction du menu déroulant de langue |
| Configuration | config.js | Constantes de configuration par défaut, gestion de la configuration système |
chrome.storage.local: Stockage local (toujours utilisé)chrome.storage.sync: Stockage de synchronisation cloud (optionnel)chrome.storage.session: Stockage de session (informations d'authentification, cache d'état)- Suit le principe du local-first, résout les problèmes de quota de synchronisation
- Stockage par morceaux (7KB par morceau) contourne la limite de quota de 8KB
| Version | Description |
|---|---|
| v1 | Format initial |
| v2 | Ajout du support des scénarios |
| v3 | Ajout du support d'abonnement |
| v4 | Statut de désactivation de proxy unifié, utilisation d'IDs uniques, inversion des règles d'abonnement |
| Fonctionnalité | Chrome | Firefox |
|---|---|---|
| Mode Manuel | ✅ | ✅ |
| Mode Automatique | ✅ | ✅ |
| Authentification Proxy | ✅ | ✅ |
| Test Proxy | ✅ | ✅ |
| Changement de Thème | ✅ | ✅ |
| Synchronisation | ✅ | ✅ |
| Détection Proxy | ✅ | ✅ |
| Abonnement | ✅ | ✅ |
- JavaScript natif + jQuery: Sans dépendance de framework, léger
- Manifest V3: Chrome utilise Service Worker, Firefox utilise background scripts
- Script PAC: Script de configuration automatique du proxy généré dynamiquement en mode automatique
- Authentification proxy: Utilise l'API
webRequestAuthProviderpour traiter les demandes d'authentification - Synchronisation par morceaux: Algorithme de chunking personnalisé pour résoudre les limites de quota Chrome storage.sync
- Analyse d'abonnement: Prise en charge de l'analyse et conversion automatiques de plusieurs formats d'abonnement
- Configurer différents proxies pour différents environnements réseau
- Utiliser le proxy d'entreprise pour le réseau professionnel
- Utiliser le proxy VPN pour le réseau domestique
- Basculement rapide en un clic
- Connexion directe pour les sites nationaux
- Certains sites via le proxy
- Sélection automatique basée sur le domaine
- Importer plusieurs proxies
- Tester la latence en lot
- Sélectionner le proxy optimal
- Exporter le fichier de configuration
- Partager avec les membres de l'équipe
- Configuration de proxy unifiée
-
Description des permissions: L'extension nécessite les permissions suivantes :
proxy: Gérer les paramètres proxystorage: Stocker les configurationswebRequest/webRequestAuthProvider: Gérer les demandes d'authentification<all_urls>: Accéder à toutes les URL de sites web
-
Conflits avec d'autres extensions: En cas de conflits proxy, veuillez désactiver les autres extensions de type proxy/VPN
-
Sécurité: Les identifiants sont stockés localement dans le navigateur, veuillez assurer la sécurité de votre appareil
-
Exigences réseau: Assurez-vous que le serveur proxy est accessible
-
Limitation Firefox: Version minimale requise pour Firefox : 142.0
MIT License - Voir le fichier LICENSE pour plus de détails
Les rapports d'issues et les pull requests sont les bienvenus !
Pour des questions ou suggestions, veuillez soumettre vos commentaires via GitHub Issues.
Si ce projet vous aide, pensez à lui donner une Star ⭐ !





