45 votes

Comment arrêter l'injection javascript du proxy vodafone?

Bonjour, il y Je suis à l'aide d'un réseau mobile en fonction de la connexion internet et je suis en train de charger mon site web sur un serveur. Dans le localhost mon site a l'air bien, mais quand je suis en naviguant sur le site à partir du serveur distant le site est de mauvaise qualité. Vérification du code source et de recherches sur google, j'ai trouvé, un morceau de code javascript est injecté à mes pages ce qui est de la désactivation de la CSS qui rend l'air mauvais et que le coupable url est: http://1.2.3.4/bmi-int-js/bmi.js Si vous n'êtes pas un mobile utilisateur de l'internet, vous ne pouvez pas accéder à cette url. Je pense que je ne suis pas le premier face à ce problème. De toute façon, je ne veux pas de compression d'image ou une largeur de Bande de compression à la place de mon bien-conçu CSS. Donc, quelqu'un, dites-moi comment arrêter l'injection de javascript que vodafone proxy injection?

Toute aide sera appréciée.

43voto

ppumkin Points 3543

Vous pouvez l'utiliser sur vos pages. - Il encore des compresses et de tout mettre inline, mais il l'habitude de casser des scripts comme jquery, car il va échapper à tout basé sur les Standards du W3C

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Sur votre serveur, vous pouvez définir le cahce de contrôle

"Cache-Control: no-transform"

Cela va arrêter TOUTES les modifications et de présenter votre site tel qu'il est!

Référence docs ici

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5

http://stuartroebuck.blogspot.com/2010/08/official-way-to-bypassing-data.html

Site Web des expositions erreur JavaScript sur iPad / iPhone, en vertu de la 3G mais pas en WiFi

34voto

bobince Points 270740

Vous n'êtes certainement pas le premier. Malheureusement, de nombreux sans-fil les Fsi ont été à l'aide de cette crasse et malvenue de l'approche de la compression. Il s'agit de Bytemobile.

Ce qu'il fait est d'avoir un proxy recompresser toutes les images que vous chercher plus petits par défaut (fabrication de qualité d'image nettement moins bon). Puis il grossièrement injecte un script dans votre document qui ajoute une option pour charger l'image appropriée pour chaque recomprimé image. Malheureusement, depuis le script est horriblement écrit des années 1990, de style JS, il chie partout dans votre espace de noms, détourne vos gestionnaires d'événements et se trouve une grande chance de gâcher vos propres scripts.

Je ne sais pas de manière à arrêter l'injection elle-même, bref de l'aide de HTTPS. Mais ce que vous pourriez faire est de détecter ou de saboter le script. Par exemple, si vous ajoutez un script près de la fin du document (entre le 1.2.3.4 inclusion de script et le script en ligne de déclenchement) pour stériliser le onload de crochet qu'il utilise:

<script type="text/javascript">
    bmi_SafeAddOnload= function() {};
</script>

ensuite, le script ne s'exécute pas, de sorte que vos événements et DOM serait laissé seul. Sur l'autre main le script initial aurait encore jonché de votre espace de noms avec l'ordure, et n'importe quelle balise problèmes qu'elle engendre sera toujours là. Aussi, l'utilisateur sera coincé avec le recomprimé images, impossible d'obtenir les originaux.

Vous pouvez essayer de laisser l'utilisateur de savoir:

<script type="text/javascript">
    if ('bmi_SafeAddOnload' in window) {
        var el= document.createElement('div');
        el.style.border= 'dashed red 2px';
        el.appendChild(document.createTextNode(
            'Warning. Your wireless ISP is using an image recompression system '+
            'that will make pictures look worse and which may stop this site '+
            'from working. There may be a way for you to disable this feature. '+
            'Please see your internet provider account settings, or try '+
            'using the HTTPS version of this site.'
        ));
        document.body.insertBefore(el, document.body.firstChild);
    }
</script>

8voto

Alexander Janssen Points 926

Votre fournisseur a peut-être activé une fonctionnalité de Bytemobile Unison appelée "personnalisation sans client". Essayez d'accéder à l'URL fixe http://1.2.3.50/ups/ - s'il est configuré, vous vous retrouverez sur une page qui vous proposera de désactiver toutes les fonctionnalités que vous n'aimez pas. Y compris l'injection Javascript.

Bonne chance! Alex

7voto

Russell Harkins Points 31

Si vous écrivez vous-même vos sites Web, l'ajout d'un en-tête a fonctionné pour moi:

 PHP:
    Header("Cache-Control: no-transform");
C#:
    Response.Cache.SetNoTransforms();
VB.Net:
    Response.Cache.SetNoTransforms()
 

Assurez-vous de l'utiliser avant que des données aient été envoyées au navigateur.

6voto

mgutt Points 784

J'ai trouvé un truc. Il suffit d'ajouter:

 <!--<![
 

Après:

 <html>
 

Plus d'informations (en allemand):

http://www.programmierer-forum.de/bmi-speedmanager-und-co-deaktivieren-als-webmaster-t292182.htm#3889392

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