scripts script for chrome adsbypasser greasemonkey userscripts tampermonkey

greasemonkey - script - ¿Por qué el uso de las teclas downloadURL y updateURL se denomina inusual y cómo funcionan?



tampermonkey scripts (1)

Estaba leyendo el wiki de GM para determinar la diferencia entre @downloadURL y @updateURL (lo cual no hice). Pero lo que me confundió aún más es que ambos no están asesorados:

Es inusual especificar este valor. La mayoría de los scripts deberían omitirlo.

Estoy sorprendido por eso, ya que es la única forma en que los scripts se actualizan automáticamente y no veo por qué no se deben usar estas claves.

El wiki en sí es bastante deficiente y no se recomiendan otras fuentes del foro, así que tengo que preguntar aquí. También agradecería información más detallada sobre estas claves.


El uso de esas claves es desalentado principalmente por el desarrollador líder de Greasemonkey. La mayoría de los demás, incluido el equipo de Tampermonkey, no sienten la necesidad de recibir tal advertencia.
También tenga en cuenta que esas directivas no siempre son necesarias para que funcionen las actualizaciones automáticas.

Algunas razones por las que diría que era inusual y que la mayoría de los scripts deberían omitirlo:

  1. En la mayoría de los casos, no es necesario, vea cómo funcionan las actualizaciones y cómo funcionan esas directivas, a continuación.
  2. Agregar y usar esas directivas son solo más elementos que el escritor del script debe verificar y mantener. ¿Por qué trabajar si no es necesario?
  3. La implementación de la actualización y esas directivas han sido defectuosas y, quizás, no se han implementado bien en Greasemonkey.
  4. Tampermonkey y otros motores implementan actualizaciones y esas directivas de una manera ligeramente diferente. Esto significa que el código que funciona en Tampermonkey puede fallar en Greasemonkey.

Tenga en cuenta que esa entrada en la wiki fue hecha por el desarrollador principal de Greasemonkey (Arantius) ; así que no era solo el ruido de la wiki.

Cómo funcionan las actualizaciones:

Las actualizaciones del script se realizan en 4 fases:

  1. La fase habilitada y / o las actualizaciones "forzadas".
  2. La fase de verificación .
  3. La fase de descarga .
  4. La fase de análisis e instalación.

Para esta pregunta, solo nos interesan las fases de verificación y descarga . Establecemos que las actualizaciones están habilitadas y que la secuencia de comandos actualizada era válida e instalada correctamente.

Al actualizar los scripts, Greasemonkey (y Tampermonkey) descargan los archivos dos veces :

  1. La primera descarga, controlada por el valor updateURL del updateURL , es solo para verificar la @version (y la fecha) del archivo (si corresponde) y la fecha, para ver si hay una actualización disponible.
  2. La segunda descarga, controlada por el valor downloadURL del script, es la descarga real del nuevo script para instalar. Esta descarga solo ocurrirá si el archivo del servidor tiene un número de @version más @version que el archivo local y / o si el archivo del servidor tiene una fecha posterior a la del archivo local. (Tenga en cuenta que hay diferencias críticas entre los motores de secuencias de comandos).

    Consulte "Por qué podría usar @downloadURL y @updateURL", a continuación, por las razones por las que se utilizan 2 descargas de archivos.


Cómo funcionan @downloadURL y @updateURL :

@downloadURL simplemente anula la ubicación interna predeterminada de "descargar URL".
@updateURL simplemente invalida la ubicación interna predeterminada de "actualización de URL" (o verificación).
En la mayoría de los casos, no hay necesidad de hacer esto. Vea abajo.

  1. Al instalar un script de usuario, Greasemonkey registra automáticamente la ubicación de la instalación. No se necesita ninguna directriz. Por defecto, aquí es donde Greasemonkey buscará actualizaciones y descargará las actualizaciones.
  2. Pero, si se especifica @downloadURL , Greasemonkey comprobará y descargará desde la ubicación especificada en lugar de la ubicación almacenada.
  3. Pero, si se especifica @updateURL , Greasemonkey verificará (no descargará) desde la ubicación de "actualización" dada.

Entonces: @updateURL reemplaza tanto a @downloadURL como a la ubicación predeterminada para verificar solo las operaciones.
Mientras que: @downloadURL anula la ubicación predeterminada tanto para la comprobación como para la descarga (a menos que @updateURL esté presente).


Por qué puedes usar @downloadURL y @updateURL :

Primero, hay 2 descargas y potencialmente 2 ubicaciones diferentes, principalmente por razones de velocidad y ancho de banda . Considere un escenario en el que un script de usuario muy grande tiene miles de usuarios:

  • Los navegadores de esos usuarios martillarían constantemente la comprobación del servidor host para ver si había una actualización disponible. La mayoría de las veces, uno no lo estaría y el archivo grande se descargaría una y otra vez innecesariamente. Esto tiene que ser un problema para sitios como el ahora userscripts.org .
  • Por lo tanto, se desarrolló un sistema mediante el cual se creaba un archivo separado para contener información de la versión (y la fecha). Entonces el servidor ahora tendría veryLarge.user.js y veryLarge.meta.js
  • veryLarge.meta.js se actualizaría (por el desarrollador) cada vez que el script de usuario fuera y solo contendría el Bloqueo de Metadatos de veryLarge.user.js .
  • Por lo tanto, los miles de navegadores simplemente descargarían repetidamente el veryLarge.meta.js , mucho más veryLarge.meta.js , lo que ahorra tiempo a todos y ahorra ancho de banda al servidor.

Hoy en día, tanto Greasemonkey como Tampermonkey buscarán automáticamente un archivo *.meta.js , por lo que normalmente no es necesario especificar uno por separado.

Entonces, ¿por qué explícitamente especificar @downloadURL y / o @updateURL ? Algunas posibles razones:

  1. La secuencia de comandos se puede instalar de varias maneras o desde múltiples fuentes (cortar y pegar, archivos copiados localmente, servidor secundario, etc.) y solo desea mantener una versión "maestra".
  2. Desea realizar un seguimiento de cuántas descargas iniciales y / o de actualizaciones tiene su script .
  3. @downloadURL es también una forma práctica de "auto-documentarse" de grabar / transportar desde donde el usuario obtuvo el script.
  4. Desea que el archivo *.meta.js en un servidor diferente al del script de usuario por alguna razón.
  5. Posiblemente problemas http contra https (necesito profundizar en esto algún día).
  6. Eres un tipo malo y quieres que el script actualice una versión maliciosa en una fecha futura desde un servidor que controlas, de ahí no es desde donde se instaló el script.


Algunas diferencias entre Greasemonkey y Tampermonkey:

(Advertencia: no he verificado todo esto desde hace tiempo. Sujeto a cambios de todos modos, ya que Tampermonkey mejora constantemente (y Greasemonkey también cambia mucho)).

  1. Tampermonkey requiere una directiva @version tanto en el archivo actual como en el más reciente. Así es como Tampermonkey determina si hay una actualización disponible.

    Greasemonkey también usará este método, así que siempre incluya @version en los scripts que desee actualizar automáticamente.

    Sin embargo, Greasemonkey también requiere que el archivo de actualización sea más reciente. Y si no hay una versión presente, Greasemonkey solo comparará las fechas. Tenga en cuenta que esto ha causado problemas en Greasemonkey en el pasado y también asume tontamente que muchas máquinas diferentes están sincronizadas con precisión con la fecha y hora correctas.

  2. Greasemonkey solo se actualizará de https:// esquemas por defecto, pero opcionalmente puede configurarse para permitir los esquemas http:// y ftp:// .

  3. Ambos motores nunca permiten actualizaciones de file:// esquemas.