J'utilise une connexion Internet basée sur le réseau mobile et le code source est réécrit quand ils présentent le site à l'utilisateur final.
Dans l'hôte local, mon site semble bien, mais lorsque je navigue sur le site depuis le serveur distant via la connexion au réseau mobile, le site semble mal.
En vérifiant le code source, j'ai trouvé qu'un code JavaScript est injecté dans mes pages qui désactive les CSS qui rendent le site mal visé.
Je ne veux pas de compression d'image ou de compression de bande passante au lieu de mon CSS bien conçu.
Comment puis-je empêcher ou arrêter le fournisseur de réseau mobile (Vodafone dans ce cas) de proxy injectant leur JavaScript dans mon code source?
Vous pouvez l'utiliser sur vos pages. Il comprime toujours et met tout en ligne, mais il ne brise pas les scripts comme jquery car il échappera à tout en fonction des normes 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 contrôle cahce
"Cache-Control: no-transform"
Cela arrêtera TOUTES les modifications et présentera votre site tel quel!
Les références sont 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
Le site Web affiche une erreur JavaScript sur iPad / iPhone sous 3G mais pas sous WiFi
Vous n'êtes certainement pas le premier. Malheureusement, de nombreux ISP sans fil ont utilisé cette approche crasseuse et indésirable de la compression. Il vient de Bytemobile .
Ce qu'il fait, c'est qu'un proxy recomprime toutes les images que vous récupérez par défaut (rendant la qualité de l'image nettement plus grave). Ensuite, il injecte grossièrement un script dans votre document qui ajoute une option pour charger l'image appropriée pour chaque image recomprimée. Malheureusement, puisque le script est un JS horriblement écrit en 1990, il craps dans tout votre espace de noms, détourne vos gestionnaires d'événements et pose de grandes chances de gâcher vos propres scripts.
Je ne connais pas un moyen d'arrêter l'injection elle-même, à moins d'utiliser HTTPS. Mais ce que vous pourriez faire, c'est de détecter ou de saboter le script. Par exemple, si vous ajoutez un script près de la fin du document (entre l'inclusion du script 1.2.3.4 et le déclencheur du script en ligne) pour neutraliser le hook de recharge, il utilise:
<script type="text/javascript"> bmi_SafeAddOnload= function() {}; </script>
Alors le script ne fonctionnerait pas, donc vos événements et DOM seraient laissés seuls. D'autre part, le script initial aurait encore marqué votre espace de noms avec des déchets, et tout problème de balisage qu'il cause sera toujours là. En outre, l'utilisateur sera coincé avec les images recomprimées, incapables d'obtenir les originaux.
Vous pouvez essayer de laisser savoir à l'utilisateur:
<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>
Votre fournisseur pourrait avoir activé une fonctionnalité Bytemobile Unison appelée «personnalisation sans client». Essayez d'accéder à l'URL fixe http://1.2.3.50/ups/ – si elle est configurée, vous finirez sur une page qui vous offrira pour désactiver toutes les fonctionnalités que vous n'aimiez pas. Y compris l'injection Javascript.
Bonne chance! Alex.
Si vous écrivez vos propres sites Web, l'ajout d'un en-tête m'a fonctionné:
PHP: Header("Cache-Control: no-transform"); C#: Response.Cache.SetNoTransforms(); VB.Net: Response.Cache.SetNoTransforms()
Assurez-vous de l'utiliser avant que les données ne soient envoyées au navigateur.
Je suis surpris que personne ne l'ait encore répondu. La vraie solution est la suivante:
Utilisez HTTPS!
C'est le seul moyen d'empêcher les FAI (ou toute autre personne) d'inspecter tout votre trafic, de snooping sur vos visiteurs et de modifier votre site en vol.
Avec l'avènement de Let's Encrypt , obtenir un certificat est maintenant gratuit et facile. Il n'y a vraiment aucune raison de ne pas utiliser HTTPS en ce jour et l'âge.
Vous devriez également utiliser une combinaison de redirections et HSTS pour garder tous vos utilisateurs sur HTTPS.
J'ai trouvé un tour. Ajoutez simplement:
<!--<![-->
Après:
<html>
Plus d'informations (en allemand):
BMI js, ce n'est pas seulement sur Vodafone. Verginmedia UK et T-Mobile UK vous offrent également cette fonction supplémentaire activée par défaut et gratuitement. 😉 Dans T-mobile, il s'appelle «Mobile Broadband Accelerator», vous pouvez visiter: http://accelerator.t-mobile.co.uk ou http://1.2.3.50/ pour le configurer.
Dans le cas où ce qui précède ne s'applique pas à vous ou pour une raison quelconque, ce n'est pas une option que vous pourriez éventuellement configurer votre proxy local (Polipo w / wo Tor). Il existe également un addon Firefox appelé "blocks" ou comme une réinitialisation de l'approche plus drastique Tcp à 1.2.3.0/24:80 sur votre pare-feu. Mais malheureusement, cela ne résoudrait pas les dégâts.
Un support T-mobile et Verginmedia mobile / haut débit assez drôle n'est pas au courant de cette fonctionnalité! (2011.10.11)
PHP: En-tête ("Cache-Control: no-transform"); Merci! Je suis content d'avoir trouvé cette page.
Ce script Injector était en train de gâcher mon code source de la page php me faisant penser que j'ai fait une erreur dans mon codage php lors de la visualisation de la source de la page. Même si le script a été bloqué avec Firefox, NoScript ajouté. Il s'agissait encore de mon code. Eh bien, après ce dilemme irritant, je voulais me débarrasser complètement et pas seulement le bloquer avec adblock ou nosfox addups Firefox ou juste sur ma page php.
Le script 1.2.3.4 ne sera plus injecté dans plus de pages! Ouais!
Je ne vois plus 1.2.3.4 être bloqué par NoScript. Parce que ce n'est pas là. Ouais.
Mais je vais encore ajouter: PHP: Header ("Cache-Control: no-transform"); À mes pages php.
Si vous l'obtenez sur un site que vous possédez ou que vous développez, vous pouvez simplement annuler la fonction en la définissant à nulle. C'est ce qui m'a bien fonctionné.
bmi_SafeAddOnload = null;
Pour ce qui est de l'obtenir sur d'autres sites que vous visitez, alors vous pourriez probablement ouvrir la console devtools et entrer ici et effacer si une page prend beaucoup de temps à charger. Je n'ai pas encore testé cela.
J'ai ajouté à /etc/hosts
1.2.3.4 localhost
On dirait l'avoir réparé.
Ok, rien ne fonctionne pour moi. Ensuite, je remplace l'URL de l'image à chaque seconde, car lorsque mon DOM est mis à jour, le problème est à nouveau ici. Une autre solution n'utilise que le style de fond automatiquement inclus dans les pages. Rien n'est propre.
setInterval(function(){ imageUpdate(); }, 1000); function imageUpdate() { console.log('######imageUpdate'); var image = document.querySelectorAll("img"); for (var num = 0; num < image.length; num++) { if (stringBeginWith(image[num].src, "http://1.1.1.1/bmi/***yourfoldershere***")) { var str=image[num].src; var res=str.replace("http://1.1.1.1/bmi/***yourfoldershere***", ""); image[num].src = res; console.log("replace"+str+" by "+res); /* other solution is to push img src in data-src and push after dom loading all your data-src in your img src var data-str=image[num].data-src; image[num].src = data-str; */ } } } function stringEndsWith(string, suffix) { return string.indexOf(suffix, string.length - suffix.length) !== -1 } function stringBeginWith(string, prefix) { return string.indexOf(prefix, prefix.length-string.length) !== -1 }
Une solution efficace que j'ai trouvé était de modifier le fichier de vos hôtes ( /etc/hosts
sur les systèmes de type Unix / Linux, C:\Windows\System32\drivers\etc
sur Windows) pour avoir:
null 1.2.3.4
Ce qui permet de repérer toutes les requêtes vers 1.2.3.4
pour 1.2.3.4
. Testé avec mon haut débit mobile Crazy Johns (appartenant à Vofafone). Si votre fournisseur utilise une adresse IP différente pour le script injecté, il suffit de le modifier à cette adresse IP.
En-tête ("Cache-Control: no-transform");
Utilisez le code php ci-dessus dans votre fichier php chaque et vous éliminerez l'injection de code 1.2.3.4.
C'est tout.
Je souffre aussi du même problème, maintenant il est corrigé. Essayer.