2011-10-16 13 views
30

Al depurar una aplicación cliente que usa un backend de Google, he agregado algunas versiones de depuración de las funciones y las he insertado usando el editor de scripts Chrome Developer Tools.Reemplazar el archivo JavaScript remoto con una copia de depuración local usando Greasemonkey o userscript

Sin embargo, hay un número de limitaciones con este enfoque, primero es que el editor no parece funcionar siempre con archivos minimizados, y cuando el archivo JS tiene una longitud de 35K, esto es un problema.

Otro problema es que toda la inicialización que se realiza durante el tiempo de carga, utiliza las funciones originales "sin parchear", por lo tanto, esto no es ideal.

Me gustaría reemplazar el archivo javascript.js remoto con mi propia copia local, presumiblemente usando algunas expresiones regulares en el nombre del archivo, o cualquier estrategia que sea adecuada, me complace usar Firefox o Chrome, si uno es más fácil que el otro.

+0

Duplicado de [Reemplazar la versión jQuery de una página con Greasemonkey] (http://stackoverflow.com/questions/7700728/replace-jquery-version-of-a-page-with-greasemonkey) - que muestra cómo reemplace el JS remoto con una versión local. –

+1

@Brock Adams esa solución es específica de Windows y no funcionará en un sistema operativo unix-y. No sé si eso importa para OP, pero estaría bien si alguien tuviera una solución universal. –

+0

@Daniel Mendel, hay 2 soluciones allí. Probablemente, uno trabajará para el OP como odds-are él está en Windows. La otra solución no se limita a Windows, sino que también explica las limitaciones que implican hacer esto con un UserScript o Greasemonkey (aunque la respuesta puede funcionar mejor cuando se transporta a Chrome, algo que no probé ya que solo uso Chrome escasamente). –

Respuesta

19

Básicamente, como se identificó @BrockAdams, hay un par de soluciones para este tipo de problemas según los requisitos, y siguen uno de dos métodos.

  1. la API del navegador switcharoo.
  2. La interceptación basada en proxy befiddlement.

la API del navegador switcharoo. Tanto Firefox como Chrome admiten extensiones de navegador que pueden aprovechar las API específicas de la plataforma para registrar manejadores de eventos para "onbeforeload" o "onBeforeRequest" en el caso de Firefox y Chrome, respectivamente. Las API de Chrome son actualmente experimentales, por lo tanto, es probable que estas herramientas estén mejor desarrolladas en Firefox. 2 herramientas que definitivamente hacen algo como lo que se requiere son AdBlock plus y Jsdeminifier, ambos con el código fuente disponible.

El punto clave para estas 2 aplicaciones Firefox es que interceptan la solicitud Web antes el navegador se pone sus manos en él y operar en el otro lado del escenario encrpytion HTTP/HTTPS, por lo tanto, se puede ver la respuesta descifrado, sin embargo, como se identificó en the other post que no hacen todo, aunque el jsdeminifier fue muy útil, no encontré un complemento de Firefox para hacer exactamente lo que quería, pero puedo ver de esos plugins anteriores, que es posible con firefox y Chrome. Aunque en realidad no hacen el truco como se requiere.

El proxy de intercepción basada befiddlement Esta es sin duda la mejor opción en un entorno HTTP plano, hay manojo entero de poderes como pivoxy, fiddler2, Charles proxy HTTP Web, y es de suponer algunos que yo no miro específicamente como snort que admite filtrado de algún tipo.

La solución más simple para mí fue foxyproxy y privoxy en firefox, y configuré user.action y user.filter para detectar la url de la página, y luego para aplicar un filtro que reemplazó la etiqueta src original, para mi propio.

El caso https. proxy vs plugin Cuando la solicitud es https, el proxy no puede ver la url de la solicitud o el cuerpo de la respuesta, por lo que no puede hacer las cosas geniales de intercambio. Sin embargo, hay una opción disponible para aquellos a los que les gusta jugar con su navegador. Y ese es el proxy SSL man-in-the-middle.El Charles Web HTTP proxy parece ser la solución principal a este problema. Básicamente, la forma en que funciona es que cuando su navegador realiza una solicitud al servidor HTTPS remoto, el proxy ssl intercepta la solicitud y desde la dirección IP del servidor genera un certificado de servidor sobre la marcha, que firma con su propia CA raíz. y envía de vuelta al navegador. El navegador obviamente se queja del certificado autofirmado, pero aquí puede optar por instalar el certificado CA de raíz del proxy ssl en el navegador, confundiendo el navegador y permitiendo que el proxy ssl sea el intermediario y realice reemplazos y filtros en la respuesta sin procesar cuerpo.

Alternativa rodar su propia extensión de cromo Decidí rodar mi propia extensión de cromo, que estoy planeando poner a disposición. Actualmente está en un estado muy difícil de codificar a mis propios requisitos, pero funciona bastante bien, incluso para las solicitudes de https y otro beneficio es que una solución de complemento de navegador puede integrarse más estrechamente con las herramientas de desarrollo del navegador.

+0

También estoy realmente interesado en desarrollar una solución de este tipo (extensión FF o Chrome). ¿Crees que sería posible ver tu complemento o entender el enfoque? –

+0

Extensión FF se puede encontrar en la parte inferior de la página de descargas de Charles http://www.charlesproxy.com/download/ –

10

Hay una herramienta más Requestly - Extensión de Chrome que se puede utilizar para reescribir las URL y reemplazar sus bibliotecas de producción con bibliotecas locales alojadas con una configuración muy fácil y una interfaz muy amigable.

Tener un vistazo a esto:

enter image description here

PD: Sé que esto fue respondida pero todavía respondí esto teniendo en cuenta que será muy beneficioso para los futuros lectores.

+1

Gran herramienta. ¡Gracias! – advncd

+0

Requestly también está disponible para Firefox. Descargue desde aquí: http://www.requestly.in/ – sachinjain024

Cuestiones relacionadas