es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ignorar la anulación de XMLHttpRequest

Quiero crear una extensión de Chrome para resolver captchas de hcaptcha. Actualmente, estoy utilizando algunas API para resolver captchas y encontrar “data-sitekey” y otros parámetros.

Sin embargo, en el sitio de Hcaptcha hay un bloque que actualmente no puedo saltar.

Este bloque sobrescribe (con ofuscación) “XMLHttpRequest” y, en particular, el método “send” permitiendo solicitudes solo a algunos dominios, y obviamente necesito enviar una solicitud a un dominio personalizado, por lo que cuando intento hacerlo, se produce una excepción.

Mi intento:

En la extensión tengo dos archivos: “content.js” e “inject.js”.

“content.js” simplemente inyecta “inject.js” antes de que la página se cargue:

function injectScript() {
    var s = document.createElement('script');
    s.setAttribute('charset', 'UTF-8');
    s.src = chrome.runtime.getURL('inject.js');
    s.onload = function() {
        //this.remove();
    };
    (document.head || document.documentElement).prepend(s);
}
injectScript();

En “inject.js” hay un “interval” que intenta encontrar y analizar los datos del captcha necesarios para resolverlo, y después de analizarlos, los envía al servidor del solucionador mediante una solicitud Ajax.

He probado diferentes métodos, agregando al inicio de “inject.js”:

1) Una variable que contiene el objeto “XMLHttpRequest” original: “var dihdkn278dm = XMLHttpRequest”, y luego creando un objeto “dihdkn278dm” en lugar de un objeto “XMLHttpRequest”.
2) Una variable que contiene el objeto “XMLHttpRequest” original: “var dihdkn278dm = new XMLHttpRequest()”, y luego en lugar de crear un objeto de solicitud, lo uso.
3) Una variable que contiene la función “send” de “XMLHttpRequest” (sí, solo “código nativo”).

Sin embargo, cuando llega el momento de llamar a “send” en el código, ya está sobrescrito.

¿Ideas de cómo evitarlo? ¿Solo inspeccionar el código ofuscado?

  • “fetch” también está sobrescrito.
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para crear una extensión de Chrome solucionadora de hcaptcha

    Como experto en tecnología de la información especializado en javascript, google-chrome-extension, overriding, deobfuscation, hcaptcha, estás intentando crear una extensión de Chrome solucionadora de hcaptcha. Puedes utilizar alguna API para resolver los captchas y encontrar data-sitekey y otros parámetros. Sin embargo, en el sitio de Hcaptcha hay un bloqueo que no puedes evitar.

    Este bloqueo sobrescribe (con obfuscation) la clase XMLHttpRequest y, en particular, su método send, permitiendo solo hacer solicitudes a algunos dominios. Necesitas enviar una solicitud a un dominio personalizado, pero cuando lo intentas, se lanza una excepción.

    Has intentado diferentes métodos para evadir el bloqueo, pero sin éxito, como crear una variable que contenga la clase XMLHttpRequest original o su función send, o inspeccionar el código obfuscated.

    La única posible solución parece ser desobfuscar el código y encontrar una manera de evitar el bloqueo. Este proceso puede llevar tiempo, pero puede ser la única opción para crear la extensión de Chrome solucionadora de hcaptcha.

Comments are closed.