2011-12-17 14 views
13

¿Puede, por ejemplo, Facebook.com ejecutar un script de control de versiones en mi navegador y averiguar si estoy ejecutando código HTML alterado con el uso de un script?¿Puede un sitio web saber si estoy ejecutando un UserScript?

¿Podría hacerse con una secuencia de comandos que pueda leer el código HTML en la caché y producir algún tipo de etiqueta hash que se envíe de vuelta al servidor y se compare con el código que se envió al cliente?

+0

Facebook no es HTML estático, por lo tanto, el hash es inútil, por lo tanto, impossibru. –

+1

¿Tiene motivos para creer que Facebook está detectando su usuario? Si es así, ¿por qué? ¿Cómo sospechas esto? –

+3

Facebook no se preocupa por su usuario, y de hecho, sus frecuentes cambios de interfaz los ayudan a luchar contra muchos scripts de usuario, especialmente los que no se mantienen activamente. – c69

Respuesta

21

Sí, en teoría, un sitio puede deducir la presencia de scripts en diversas situaciones.

Esto no es infalible y generalmente es demasiado problema para la insignificante "amenaza" para el sitio. (Por otra parte, algunos webmasters pueden ser obsesivos-paranoicos sobre tales cosas;.))

Algunos métodos, dependiendo de lo que hace el script (en ningún orden en particular):

  1. juego o sitios de subastas puede monitorear el tiempo (velocidad y regularidad) de los clics de "oferta".

  2. Un sitio puede AJAX-atrás el recuento de, por ejemplo, <script> nodos, en busca de extras.

  3. De manera similar, un sitio puede respaldar AJAX todo o parte del contenido de una página y compararlo con los valores esperados.

  4. Se pueden observar llamadas AJAX adicionales, o llamadas AJAX que no cumplen con los requisitos ocultos (y se les permite parecer tener éxito).

  5. Si el script usa unsafeWindow de la manera correcta (incorrecta), a page can detect that and even hijack (slightly) elevated privileges.

  6. Se pueden detectar "clics" que no fueron precedidos por eventos de mouseover. De hecho, he visto esto usado en la naturaleza.

  7. A page's javascript can often detect script-generated clicks (etc.) como diferentes a las generadas por los usuarios. (Gracias, c69, para el recordatorio.)

En última instancia, la ventaja es que el escritor userscript, sin embargo. Cualquier contramedida que tome una página web puede detectarse y frustrarse en el extremo del usuario. Incluso los usuarios habilitados y motivados pueden subvertir los plugins requeridos o personalizados, o los dongles de hardware necesarios.

+3

En Opera, la página ahora puede detectar clics falsos (a través de la propiedad '.isTrusted'), probablemente sea posible en otros navegadores pronto. – c69

+2

@ c69, [ha sido posible en Firefox por un tiempo] (http://help.dottoro.com/ljoljvsn.php) y tiene soporte limitado en IE9. –

+1

@MikeOrtiz, No. El usuario en sí mismo vive en un ámbito separado que la página no puede ver, incluso en el modo '@grant none'. ... Si el usuario crea nodos '

5

Actualización: Los métodos a continuación son completamente ineficaces desde Greasemonkey 3.3.



Sede (enlace no válido) How-to Detect Greasemonkey .

Javascript para detectar si GM es instalado (pero no si un script se ejecuta realmente en esa página):

Opción obsoleto 1:

if (Components.interfaces.gmIGreasemonkeyService) { 
    alert("I smell a monkey!"); 
} 


Opción obsoleta 2:

<script type="text/javascript" src="resource://greasemonkey/addons4.js"></script> 
<script type="text/javascript"> 
if (typeof GM_addonsStartup !== "undefined") { 
    alert("I smell a monkey!"); 
} 
</script> 
+0

¿Esto todavía es válido? – Edge

+1

@Edge, no, esto ya no es válido, ver la respuesta actualizada. –

Cuestiones relacionadas