Hice UserScripts y ahora estoy atascado.
Dentro de mi HTML hay una etiqueta de secuencia de comandos, y dentro de la etiqueta de secuencia de comandos hay lo siguiente:
<script> setTimeout = function(){} </script>No hay forma de usar la función, es inútil.
¿Como puedo resolver esto?
Estaba pensando en usar una forma de configurar la función como main = setTimeout() y puedo restablecerla después de cargar el script. Volver a como setTimeout = main .
También estoy tratando de permanecer (principalmente) sin ser detectado, a diferencia de ejecutar todo el código en un entorno diferente como un iframe. Sé que puedes usar setInterval y luego romper el ciclo, pero esto es solo un ejemplo.
Ejecute su script de usuario antes de que la página tenga la oportunidad de sobrescribirlo. Use // @run-at document-start en el bloque de metadatos (combinado con la inyección instantánea de secuencias de comandos en la sección Avanzada de la configuración de Tampermonkey), y luego podría hacerlo en su secuencia de comandos de usuario:
const origSetTimeout = window.setTimeout; // proceed with your script, referencing origSetTimeout que continuará funcionando incluso después de que se cargue la página y haya sobrescrito el setTimeout original. (Si bien podría reasignar window.setTimeout al original más tarde, eso sería detectable, si eso es realmente una preocupación).
Las variables declaradas en el script de usuario, incluso en el nivel superior, no se filtrarán al alcance de la página, así que no se preocupe por la exposición de origSetTimeout , aunque se podrían detectar otras acciones realizadas en el script de usuario.