sitios maliciosos lista herramientas google funciones javascript google-chrome http google-chrome-extension error-handling

javascript - maliciosos - Extensiones de Chrome: errores de HTTP y red de captura de script de fondo



herramientas y funciones de google drive (2)

Estoy desarrollando una pequeña extensión de Chrome para uso personal en un caso muy específico (automatización de sitios web) pero tengo un problema. ¿Cómo puedo detectar un error de red en un script de fondo y llamar a una determinada función?

Implementé este método:

chrome.webRequest.onErrorOccurred.addListener( handleNetworkError, {urls: ["http://*/*", "https://*/*"] });

Captura algunos errores de red, por lo que veo manly ::net errores ::net , DNS que falla, redes cambiadas, etc.

Sin embargo, hoy noté que los errores HTTP como:

GET https://example.com 522 (Origin Connection Time-out)

no desencadenó al oyente, ¿cómo puedo hacer que funcione en esos también?


Con la ayuda del usuario @Xan, logré pensar en esto:

function extractStatus(line) { var match = line.match(/[^ ]* (/d{3}) (.*)/); if (match) return {code: match[1], message: match[2]}; else return undefined; } chrome.tabs.query({active: true, lastFocusedWindow: true }, function(tabsArray) { tab = tabsArray[0]; scope = {urls: ["https://example.com/*"], tabId: tab.id}; console.log("Listening for errors..."); // ::net errors chrome.webRequest.onErrorOccurred.addListener(handleNetworkError, scope); // HTTP errors chrome.webRequest.onHeadersReceived.addListener(function(details) { var status = extractStatus(details.statusLine); if (!status) return; if (status.code.charAt(0) == ''5'' || status.code.charAt(0) == ''4'') handleNetworkError(); }, scope); });


Supongo que desde la perspectiva de la pila de red de webRequest / Chrome, esta solicitud realmente se completó. Entonces necesitas conectar a otro evento, por ej.

function extractStatus(line) { var match = line.match(/[^ ]* (/d{3}) (.*)/); if(match) { return {code: match[1], message: match[2]}; } else { return undefined; } } chrome.webRequest.onHeadersReceived.addListener( function(details) { var status = extractStatus(details.statusLine); if(status) { // Do something based on status.code } }, {urls: ["<all_urls>"]} );

Tenga en cuenta que este evento tiene un bloqueo opcional: puede redirigir la solicitud si es necesario.

Obviamente, esto creará mucho trabajo para su extensión; en el fragmento de arriba, el oyente no está bloqueando, pero si lo haces bloqueando, ralentizará considerablemente tu Chrome: solo úsalo cuando sea absolutamente necesario y filtra por URL cuando corresponda.