2 votes

Modifier l'agent utilisateur d'IE

J'utilise WatiN pour automatiser Internet Explorer, et jusqu'à présent, c'est très bien. Cependant, j'aimerais vraiment pouvoir modifier l'agent utilisateur d'IE pour que le serveur pense qu'il s'agit en fait de Firefox ou d'un autre navigateur.

Une chaîne d'agent utilisateur de Firefox ressemble à quelque chose comme :

Mozilla/5.0 (Windows ; U ; Windows NT 6.1 ; en-US ; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

Avec le code suivant

RegistryKey ieKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent");
            ieKey.SetValue("", "Mozilla/5.0");
            ieKey.SetValue("Compatible", "Windows");
            ieKey.SetValue("Version", "U");
            ieKey.SetValue("Platform", "Windows NT 5.1; en-US");
            ieKey.DeleteSubKeyTree("Post Platform");

J'ai pu modifier la chaîne useragent d'IE de la manière suivante

Mozilla/4.0 (compatible ; MSIE 8.0 ; Windows NT 6.1 ; Trident/4.0 ; AskTbMP3R7/5.9.1.14019)

à

Mozilla/4.0 (Windows ; U ; Windows NT 6.1 ; Trident/4.0 ; en-US ; rv:1.9.2.13)

Maintenant, la question : comment supprimer la partie Trident/4.0 et ajouter la partie "Gecko/20101203 Firefox/3.6.13" après les parenthèses ?

J'aimerais vraiment faire cela de manière programmatique en C#, sans utiliser de modules complémentaires pour IE.

Merci d'avance.

4voto

EricLaw Points 28850

Il n'y a aucun moyen soutenu pour do this in C# without any IE Addons sauf si le contrôle WebBrowser s'exécute en mode in-proc, auquel cas vous pouvez utiliser l'attribut UrlMkSetSessionOption() API. Voir La chaîne User-Agent : Usage et abus

Si vous êtes prêt à utiliser add-ons voir http://www.enhanceie.com/ietoys/uapick.asp

Maintenant, il y a un non pris en charge que je ne recommanderais pas - à savoir, vous pourriez remplacer le COMPATIBLE avec le reste de la chaîne Firefox UA suivi d'un CRLF et le texte IGNORE: . L'en-tête HTTP est alors "enveloppé" dans un nouvel en-tête, de sorte que vous envoyez des en-têtes qui ressemblent à quelque chose comme :

User-Agent : Mozilla/5.0 (Windows ; U ; Windows NT 6.1 ; en-US ; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 IGNORE : MSIE 8.0 ; Windows NT 6.1 ; Trident/4.0 ; AskTbMP3R7/5.9.1.14019)

1voto

Spudley Points 85371

Je ne peux pas imaginer pourquoi tu voudrais faire ça. Il n'est pas rare que autre Je n'ai jamais entendu dire que quelqu'un voulait le faire dans l'autre sens, mais je n'ai jamais entendu dire que quelqu'un voulait le faire dans l'autre sens. Du moins, pas au cours des dix dernières années environ.

De toute façon, comme vous l'avez déjà constaté, ce n'est pas aussi facile à faire avec IE qu'avec les autres navigateurs.

Si vous voulez vraiment le faire, je vous suggère de passer par un proxy et de lui demander d'envoyer l'agent utilisateur usurpé pour vous. Cela devrait être relativement facile à écrire dans n'importe quel langage. Vous pouvez exécuter le proxy sur la machine locale où se trouve le navigateur, et tout sera transparent à la fois pour l'utilisateur du navigateur et pour le site Web (étant sur la machine locale, même l'adresse IP sera correcte, ce qui peut être un problème pour les proxys distants).

Pour ce que cela vaut, certaines applications antivirus/anti-malware le font déjà, avec des options permettant de bloquer l'agent utilisateur et les données de référence pour empêcher les sites de les suivre. Pour autant que je sache, ils utilisent à peu près exactement cette technique (ces mêmes proxies locaux sont également utilisés pour filtrer les logiciels malveillants avant qu'ils n'atteignent le navigateur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X