web-dev-qa-db-fra.com

Simuler la manipulation du fichier etc / hosts dans Google Chrome

Comment puis-je configurer Chrome pour qu'il référence les recherches de nom d'hôte localement et non à partir du fichier etc/hosts standard?

Lors du débogage d’un site Web, il est parfois utile de configurer des entrées dans C:\Windows\system32\drivers\etc\hosts qui remplacent certains domaines par localhost, me permettant ainsi de tester des versions à la volée de sites Web ou de domaines susceptibles d'entrer en conflit avec des sites réels.

Puis-je configurer Google Chrome de manière à simuler et à simplifier ce processus?

Je ne modifierai pas l'instance de navigateur pour qu'elle se comporte comme si etc/hosts avait été modifié, même si cela pouvait représenter un risque de sécurité trop important pour une extension.

29
ripper234

Je viens de trouver le Host Switch Plus Extension Chrome qui fait exactement cela;)

11
mettjus

Un moyen d’atteindre votre objectif réel n’implique aucune extension, ni même Chrome, du tout. Pour ce faire, vous devez configurer un serveur HTTP proxy intelligent, y pointer Chrome, puis ajouter des règles de réécriture au serveur proxy qui réécrit les URL sous la couverture.

Beaucoup de gens le font, avec différents serveurs HTTP proxy - trop pour les couvrir en détail dans une réponse donnée ici. Ils le font pour zapper des publicités, des bugs Web, etc., mais le principe et le mécanisme sont identiques à ce que vous voulez faire. Ils veulent que le navigateur WWW récupère une URL particulière comme d'habitude, mais que le contenu reçu soit celui d'une autre URL (locale ou autre). Le navigateur Web n'a besoin que de savoir qu'il communique avec Internet via un serveur proxy.

Pour un exemple, voir le Ad Zapper sur SourceForge . C'est un script Perl qui fonctionne conjointement avec le serveur HTTP proxy Squid pour réécrire les URL à la volée dans le serveur proxy. Comme vous pouvez le constater à partir de sa base de données de configuration, son mécanisme a été utilisé à diverses fins, notamment pour veiller à ce que les articles "imprimables" soient toujours visibles sur les services de presse et pour se débarrasser des redirections publicitaires aléatoires sur les sites pornographiques sur Internet.

Notez que cela est bien meilleur que ce que vous faites avec le fichier hosts, qui est un mécanisme inapproprié pour manipuler le service WWW. hosts ne traite que le nom → recherches d’adresses, simule tout le reste (sauf le navigateur WWW) qui doit faire nom → recherches d’adresses, et (comme vous le savez probablement déjà) Le nom d'hôte réécrit doit également être configuré en tant qu'hôte virtuel sur le serveur HTTP du contenu cible. Un serveur HTTP proxy de réécriture de ce type, en revanche, traite les URL et n'affecte que les navigateurs HTTP et WWW configurés pour l'utiliser en premier lieu . Ainsi, il peut faire des choses comme seulement réécrire les URL JavaScript et laisser tout le reste du même site WWW seul; réécrire tout un lot de noms d’hôtes en un seul; et faire (encore plus) la correspondance de motif. (Remarquez qu'il y a des cas de ce type dans la base de données de configuration d'Ad Zapper.) Vous pouvez par exemple faire en sorte qu'un navigateur Web visualise le monde via le proxy de réécriture et qu'un autre le visualise directement, sur une seule machine simultanément.

7
JdeBP

J'ai utilisé (et utilise toujours) HostAdmin religieusement, mais devoir vider le cache ou ouvrir une nouvelle fenêtre incognito à chaque fois a toujours été une corvée. L’année dernière, j’ai développé une extension Chrome afin de remédier à une situation similaire. J’en ai récemment publié une version très approximative dans le Chrome Web Store. Elle s’appelle LiveHosts .

L’essentiel est que, bien que @JdeBP ait raison et que la mise en place d’un proxy soit la bonne solution, ce n’est souvent pas une option. Une extension Chrome ne peut pas répliquer exactement ce qui se passe lorsque vous modifiez le fichier hôte, ce que LiveHosts fait actuellement:

  • vous permet de configurer plusieurs entrées de nom d’hôte/IP;
  • détecter les demandes à l'un des noms d'hôte définis;
  • rediriger la demande vers l'adresse IP souhaitée avec l'en-tête d'hôte HTTP approprié;
  • ajoutez une référence visuelle (et laide, j'admets) dans l'URL de la barre d'adresse, qui ressemblera à quelque chose comme http://127.0.0.1/www.example.com/whateverelse;
  • autoriser différents appariements hôte/IP dans différents onglets en même temps.

Ce n'est pas joli, mais c'est assez bon pour le développeur web standard qui tente de basculer rapidement d'un environnement à l'autre. Il y a bien sûr quelques mises en garde:

  • selon le serveur, les parties d'une page Web faisant référence à l'URL du site (telles que les attributs href et src) peuvent être différentes de l'original;
  • window.location a une valeur différente qui peut potentiellement effacer les extraits de code JavaScript;
  • la plupart des requêtes d'origine croisée ne fonctionneront pas.
4
Aioros

Le plugin Hôtes virtuels est le seul qui fonctionne pour moi comme prévu.

Accédez aux hôtes virtuels d'un serveur sans recourir à la redirection d'hôte ou à DNS.

0
JDL