Commit a363faaf authored by Oncela's avatar Oncela
Browse files

Replace scan.js

parent 78bf10cc
// Étape #2 : détecte les requêtes HTTP faites par les nom de domaines listés dans domains.js
// détecte les requêtes HTTP faites par les nom de domaines listés dans domains.js et le envoie à tabs.js
// Lorsque le navigateur reçoit une requête HTTP (depuis n'importe quelle URL et à partir de n'importe quel onglet),
// exécute la fonction d'analyse en lui passant en paramètre les détails de la requêtes
// L'analyse intervient avant que le navigateur ait répondu à la requête (false pour analyser après)
if (true)
browser.webRequest.onBeforeRequest.addListener(scan, {urls: ["<all_urls>"]});
else
browser.webRequest.onCompleted.addListener(scan, {urls: ["<all_urls>"]});
// Lorsque le navigateur fait une requête HTTP (depuis n'importe quelle URL et à partir de n'importe quel onglet),
// exécute la fonction d'analyse en lui passant en paramètre les détails de la requête et de son header
browser.webRequest.onBeforeSendHeaders.addListener(scan , {urls: ["<all_urls>"] } , ["requestHeaders"] );
// Analyse une requête
function scan(request)
{
// Si la requête a été faite depuis un onglet
if (request.tabId != -1)
{
// Pour chaque nom de domaine listé dans domain.js
for (var i = 0; i < companies.length; i++)
// Si l'extention est active
if (extension.running)
{
for (var j = 0; j < companies[i].domains.length; j++)
// Recherche le referer et l'host de la requête
var referer = 0;
var host = 0;
for (var header of request.requestHeaders)
{
// Isole le nom de domaine de l'URL d'où vient la requête
var url = request.url;
url = url.substr(url.indexOf("://")+3);
url = url.substr(0, url.indexOf("/"));
if (header.name == "referer")
referer = header.value;
else if (header.name == "host")
host = header.value;
}
// Si le nom de domaine de la requête contient celui listé dans domain.js
if (url.indexOf(companies[i].domains[j]) != -1)
// Si la requête a été faite depuis un onglet et si elle a un referer et un host
if (request.tabId != -1 && referer && host)
{
// Récupère l'identifiant de l'onglet d'où est partie la requête
var id = request.tabId;
// Commence la comparaison
var keepScanning = true;
// Pour chaque nom de domaine de chaque entreprise
for (var i = 0; i < companies.length && keepScanning == true; i++)
{
for (var j = 0; j < companies[i].domains.length && keepScanning == true; j++)
{
// Si l'host de la requête contient le nom de domaine
if (host.indexOf(companies[i].domains[j]) != -1)
{
// Arrête l'analyse si le referer contient un des noms de domaine associés à l'entreprise
for (var domain of companies[i].domains)
{
if (referer.indexOf(domain) != -1)
{
var keepScanning = false;
break;
}
}
// Prépare les information à afficher à l'utilisateur
var info = {};
info.index = i; // Index de l'entreprise dont le nom de domaine correspond à celui de la requête
info.title = companies[i].title; // Nom de l'entreprise dont le nom de domaine correspond à celui de la requête
info.domain = companies[i].domains[j]; // Nom de domaine correspondant à celui de la requête
info.url = request.url; // URL complète de la requête
info.content = request.type; // Type de ressource proposé (image, script, css...)
info.index = i; // Index de l'entreprise dont le nom de domaine correspond à celui de l'host la requête
info.title = companies[i].title; // Nom de l'entreprise
info.content = request.type; // Type de ressource demandée par la requête (image, script, css...)
info.url = request.url; // URL complète de la ressource demandée par la requête
info.date = request.timeStamp; // Date de la requête
// Passe les informations à l'objet chargé de les envoyer sur l'onglet correspondant, où elles seront affichées
tabs.update(id, info);
// Passe les informations à tabs.js
tabs.update(request.tabId, info);
// Arrête l'analyse
keepScanning = false;
break;
}
}
}
}
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment