Pourquoi votre fichier PAC choisit la mauvaise carte réseau
Un ordinateur portable peut avoir plusieurs adresses locales. Une règle PAC basée sur myIpAddress() peut identifier une interface différente de celle que vous attendiez.
L'ordinateur portable est sur le Wi-Fi du bureau, le câble Ethernet est branché et une carte VPN est toujours présente. Votre fichier PAC demande à myIpAddress() sur quel réseau il se trouve. Cela semble raisonnable jusqu'à ce qu'il obtienne une adresse appartenant à la mauvaise carte.
Le détail manquant est que la fonction renvoie une seule adresse. Ce n'est pas un inventaire de toutes les interfaces, et elle ne contacte pas un site web pour découvrir votre IP publique. Une adresse privée, ou même un repli sur loopback, ne vous dit pas quelle adresse de sortie utilisera une requête via le proxy.
Une seule réponse pour une machine à plusieurs adresses
Le choix de l'interface réseau relève de l'implémentation du PAC. L'ancien conseil de réorganiser les cartes Windows peut décrire une version précise de navigateur et de système d'exploitation, mais c'est une mauvaise solution universelle. Chromium documente son propre algorithme de sélection et ses limites en cas de réseaux multiples ; un autre client n'est pas tenu de faire le même choix.
Commencez par identifier la valeur que le navigateur concerné a réellement fournie, puis comparez-la aux vérifications de sous-réseau de votre script. Faites-le séparément en Wi-Fi, en Ethernet et sur la connexion VPN approuvée. Une adresse qui semble surprenante peut tout de même respecter les règles de l'implémentation.
Faites dépendre la décision de moins de suppositions
Dans la mesure du possible, choisissez un proxy à partir du nom d'hôte de destination plutôt que d'une interface client supposée. Si une détection de réseau est nécessaire, utilisez un signal délibéré et documenté que votre organisation contrôle. La détection par DNS a aussi ses modes de défaillance : définissez donc ce qui se passe lorsque ce signal n'est pas disponible.
Certaines implémentations proposent myIpAddressEx(). Vérifiez sa prise en charge et son format de retour avant de l'adopter ; ce n'est pas un remplacement direct d'une simple chaîne IPv4. Enfin, vérifiez la route de requête obtenue de manière indépendante. Reconnaître correctement le sous-réseau du bureau et atteindre le proxy prévu sont deux résultats distincts.