reflect objeto es6 javascript proxy

javascript - objeto - proxy handler apk



Evitar que el proxy de red móvil inyecte JavaScript (13)

Agregué a /etc/hosts

1.2.3.4 localhost

Parece haberlo arreglado.

Estoy utilizando una conexión a internet basada en una red móvil y el código fuente se está reescribiendo cuando presentan el sitio al usuario final.

En el localhost mi sitio web se ve bien, pero cuando navego por el servidor remoto a través de la conexión de red móvil, el sitio se ve mal.

Al revisar el código fuente, descubrí que se está inyectando un fragmento de código de JavaScript en mis páginas, lo que deshabilita algunos CSS que hacen que el sitio se vea mal.

No quiero compresión de imagen o ancho de banda en lugar de mi CSS bien diseñado.

¿Cómo puedo evitar o impedir que el proveedor de la red móvil (Vodafone en este caso) inyecte su código JavaScript en mi código fuente?


BMI js no es solo en Vodafone. Verginmedia UK y T-Mobile UK también te ofrecen esta característica adicional habilitada de forma predeterminada y gratuita. ;-) En T-mobile se llama "Acelerador de banda ancha móvil". Puede visitar: http://accelerator.t-mobile.co.uk o http://1.2.3.50/ para configurarlo.

En caso de que lo anterior no se aplique a usted o por alguna razón, no es una opción que podría configurar su proxy local (Polipo w / wo Tor) También hay un complemento de Firefox llamado "blocksite" o como un restablecimiento de enfoque más drástico conexión tcp a 1.2.3.0/24:80 en su firewall. Pero desafortunadamente eso no arreglaría el daño.

¡Lo suficientemente divertido como para que el soporte de banda ancha / móvil de T-mobile y Verginmedia no sea consciente de esta función! (2011.10.11)


Ciertamente no eres el primero. Desafortunadamente, muchos ISP inalámbricos han estado utilizando este enfoque burdo e indeseable para la compresión. Viene de Bytemobile .

Lo que hace es tener un proxy que recomprime todas las imágenes que obtienes más pequeñas de forma predeterminada (haciendo que la calidad de la imagen sea significativamente peor). Luego, inyecta crudamente un script en su documento que agrega una opción para cargar la imagen adecuada para cada imagen recomprimida. Desafortunadamente, dado que el guión es un JS al estilo de la década de 1990, escrito horriblemente, ocupa todo su espacio de nombres, secuestra sus controladores de eventos y tiene una gran posibilidad de estropear sus propios guiones.

No conozco una forma de detener la inyección en sí misma, a menos que se use HTTPS. Pero lo que podrías hacer es detectar o sabotear el guión. Por ejemplo, si agrega una secuencia de comandos cerca del final del documento (entre la inclusión de la secuencia de comandos 1.2.3.4 y el desencadenante de la secuencia de comandos en línea) para neutralizar el enganche de carga que utiliza:

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

entonces el script no se ejecutaría, por lo que sus eventos y DOM se quedarían solos. Por otro lado, la secuencia de comandos inicial aún habría cubierto su espacio de nombres con basura, y cualquier problema de marcado que cause seguirá allí. Además, el usuario quedará atascado con las imágenes recomprimidas, no podrá obtener los originales.

Podrías intentar simplemente haciéndole saber al usuario:

<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>


Encabezado ("Cache-Control: no-transform");

use el código php anterior en cada archivo php y se librará de la inyección de código 1.2.3.4.

Eso es todo.

Yo también sufría del mismo problema, ahora está rectificado. Intentalo.



Es posible que su proveedor haya habilitado una función de Bytemobile Unison llamada "personalización sin cliente". Intente acceder a la URL fija http://1.2.3.50/ups/ - si está configurada, terminará en una página que le ofrecerá desactivar todas las funciones que no le gusten. Incluyendo inyección de Javascript.

¡Buena suerte! Alex


Estoy sorprendido de que nadie haya puesto esto como respuesta todavía. La verdadera solución es:

UTILIZAR HTTPS!

Esta es la única manera de evitar que los ISP (o cualquier otra persona) inspeccionen todo el tráfico, indagando a sus visitantes y modificando su sitio web en vuelo.

Con la llegada de Let''s Encrypt , obtener un certificado ahora es gratis y fácil. Realmente no hay razón para no usar HTTPS en esta época.

También debe usar una combinación de redirecciones y HSTS para mantener a todos sus usuarios en HTTPS.


Ok nada me funciona. Luego reemplazo la imagen url cada segundo porque cuando mi DOM se actualiza, el problema está aquí nuevamente. Otra solución es usar solo el estilo de fondo auto incluido en las páginas. Nada es limpio

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 }


PHP: Encabezado ("Cache-Control: no-transform"); ¡Gracias! Me alegro de haber encontrado esta página.

Esa secuencia de comandos del inyector estaba arruinando el código fuente de mi página php, lo que me hizo pensar que cometí un error en mi código PHP al ver la fuente de la página. A pesar de que el script fue bloqueado con Firefox NoScript añadido. Todavía estaba arruinando mi código. Bueno, después de ese dilema irritante, quería deshacerme de él por completo y no solo bloquearlo con los complementos de Adblock o Noscript Firefox o solo en mi página de PHP.

  1. DETENGA http: // 1.2.3.4 Completamente en Firefox : Obtén el complemento: Modificar encabezados .
  2. Vaya a las opciones de adición de encabezado de modificación ... ahora en la pestaña Encabezado.
  3. Seleccione Acción: Elija AÑADIR.
  4. Para el nombre del encabezado escriba: cache-control
  5. Para el tipo de valor de encabezado en: no-transform
  6. Para comentarios escriba en: Bloque 1.2.3.4
  7. Haga clic en Agregar ... Luego haga clic en Iniciar.

¡El script 1.2.3.4 no se inyectará en más páginas! ¡sí!

Ya no veo que 1.2Script esté bloqueado por NoScript. porque no esta ahi sí.

Pero seguiré agregando: PHP: Encabezado ("Cache-Control: no-transform"); a mis páginas php.


Puedes usar esto en tus páginas. Todavía se comprime y pone todo en línea, pero no romperá los scripts como jquery porque escapará a todo basado en los estándares W3C.

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

En su servidor puede configurar el control de cahce

"Cache-Control: no-transform"

¡Esto detendrá TODAS las modificaciones y presentará su sitio como está!

Documentos de referencia aquí

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

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

El sitio web muestra un error de JavaScript en iPad / iPhone con 3G pero no con WiFi


Si está escribiendo sus propios sitios web, agregar un encabezado funcionó para mí:

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

Asegúrese de usarlo antes de enviar cualquier dato al navegador.


Si lo está obteniendo en un sitio que posee o está desarrollando, entonces simplemente puede anular la función configurándola en nulo. Esto es lo que funcionó bien para mí.

bmi_SafeAddOnload = null;

En cuanto a obtenerlo en otros sitios que visite, entonces probablemente podría abrir la consola de devtools y simplemente ingresar eso allí y borrarlo si una página tarda mucho en cargarse. Aún no he probado eso.


Una solución efectiva que encontré fue editar el archivo de hosts ( /etc/hosts en sistemas de tipo Unix / Linux, C:/Windows/System32/drivers/etc en Windows) para tener:

null 1.2.3.4

Que efectivamente asigna todas las solicitudes a 1.2.3.4 a null . Probado con mi banda ancha móvil Crazy Johns (propiedad de Vofafone). Si su proveedor utiliza una dirección IP diferente para el script inyectado, simplemente cámbielo a esa IP.