IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

json + javascript


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut json + javascript
    bonjour a tous je développe une extension chrome, qui bloque une liste d’URL définie par moi même, actuellement plus de 2 millions d'urls, que j'update toutes les semaines, mon extension chrome fonctionne nickel mais le problème c'est que toutes les URL sont stockées dans le background.js

    voici mon manifest.json:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    {
    "name":"blocker",
    "description":"myapp",
    "version":"1.0",
    "manifest_version":2,
    "permissions": [
            "http://*/*",
            "https://*/*",
            "webRequest",
            "webRequestBlocking",
            "webNavigation",
            "storage",
            "unlimitedStorage"
    ]      
    ,"icons":{"48":"icon.png"},
    "background":{
        "scripts": ["background.js"]
    },
    "browser_action":{
        "default_popup":"popup.html",
        "default_icon":"icon.png"},
    	"content_scripts": [
    		{
    			"matches": ["*://*/*"],
    			"js": ["disablef12.js"]
    		}
    	]
    }
    en gros j'ai remplace mon code background.js:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
    return {cancel: true}; 
    }, { urls: 
    [
    "*://*.url1/*",
    "*://*.url2/*",
    etc...
    ]},["blocking"]),
    on m'a conseillé de remplacer mon code background.js par ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var URL= {
    "http://url1": false,
    "https://url2": false,
    "http://url3": false
    etc...
    };
    chrome.webRequest.onBeforeRequest.addListener(function(details) { return {cancel: !URL[details.url] }; }, null,["blocking"]);
    le problème c'est que le deuxième code la, ne fonctionne pas, ça ne bloque plus mes URL...
    quelqu’un peut m'aider, merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Pour reprendre la discussion (dommage que le topic ait été supprimé et non censuré, au moins on aurait gardé l'historique), je viens corriger mon propre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return{cancel:URL[details.url]===false }
    sinon en principe toutes les URL qui n'étaient pas dans la liste seraient bloquées, ce qui je me doute n'est pas ce que tu veux.

    En creusant un peu la doc, je m'aperçois que le paramètre filtre doit être explicitement passé à {urls: ["<all_urls>"]}, pour cibler toutes les URL. Ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var AUTHORIZED_URLS= { "http://url1": false, "https://url2": false, "http://url3": false etc... }; chrome.webRequest.onBeforeRequest.addListener(function(details) { return {cancel: AUTHORIZED_URLS[details.url]===false }; }, {urls: ["<all_urls>"]},["blocking"]);
    Toutefois, la doc dit aussi que cibler toutes les URL pour un filtrage est moins efficace que de stipuler les urls en second argument de addListener. Auquel cas je ne comprends pas d'où peut venir la lenteur, si c'est la façon recommandée de faire. Enfin, tu peux toujours tester comme ça et voir s'il y a une différence.
    One Web to rule them all

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    un tout gran merci a toi sylvain, test le seul qui m'aide je vais tester ca de suite

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    comem je le disais, ton aide m'a apporté un gros depanage, le script fonctionne nickel, et ce malgré les millions d'urls que j'ai mis,

    Autre question, est il possible de faire en sorte que au lieu que les urls soient dans le background.js, ils soient ailleurs, dans un autre fichier planqué sur le hdd, que le background.js bloquerait? afin que les urls, soient le moins visibles aux utilisateurs trop curieux

    quand je vois le script aussi nu sur la console c'est flippant

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Non, à partir du moment où c'est stocké en clair côté client, n'importe quel curieux peut récupérer les informations très facilement, peu importe le fichier où elles se trouvent. A la rigueur, tu peux essayer d'obfusquer les données ou de faire de la comparaison de hashs. Mais je pense que n'importe quel amateur de crypto sera capable de décoder ça assez vite.
    One Web to rule them all

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    justement coté client, ca ne peut pas se faire, mais est ce qu'il n'y a pas moyen de stocker les urls sur un fichier dans un serveur et de faire en sorte que le background cheque les urls dans le fichier sur le serveur? plutot que de stocker ca sur le hdd?

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Ton background.js s'exécute côté client, ce n'est pas lui qui va faire des actions sur un fichier stocké côté serveur. Par contre, tu peux envisager un WebService prenant en paramètre l'URL en entrée et qui donne en sortie le statut autorisé/pas autorisé. De cette manière, la liste complète pourrait être totalement invisible. Seulement, cela implique de faire une requête vers ton serveur à chaque URL chargée par le navigateur : autrement dit doubler le nombre de requêtes ! Donc ça ne me paraît pas une bonne idée.
    One Web to rule them all

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    Si background.js peut être "minified"/"obfuscated" c'est à peu près tout ce qui peut être fait.


    devYan.

  9. #9
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    bonjour imothep85,

    Citation Envoyé par imothep85
    je développe une extension chrome, qui bloque une liste d’URL définie par moi même
    si tu souhaites bloquer l'accès à certains sites web pourquoi ne pas utiliser le fichier hosts du système d'exploitation ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    j'ai egalemment fait un fichier host et tésté... avec 127.0.0.0 url, le probleme cest que la ou je bosse on a un serveur interne, et du coup ca a foutu le borel monstre tout le reseau etait saturé par les appels, alors jai tout mis en 0.0.0.0 la ca marchait

    le probleme c'est que je ne veux pas que l'utilisateur puisse acceder a ces millions d'urls que j'update toutes les semaines

    de plus windows vista, bloque le host, mais y a moyen de le copier et l'installer manuellement,
    windows 7 c'est pire car microsoft security essential trouve le fichier host, voit les urls et l'efface, javais beau remettre les urls dans le host il etait aussitot vidé, pareil pour avast, il effacait les urls....donc host, non.

  11. #11
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    Quand tu modifiais le fichier hosts tu étais bien en mode administrateur ?
    Sinon comme tu as un serveur, tu dois peut-être configurer le pare-feu ? (je me trompe peut-être, je ne suis pas spécialiste dans ce domaine)

    Ta solution a des défauts à mes yeux : quelqu'un peut supprimer ou désactiver ton extension. Et comme tu l'as indiqué, elle ne fonctionne que sous Chrome. De plus il faut penser à l'installer sur tous les PC puisque le fichier des url est du coté client. (désolé je suis pessimiste )

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    oui je suis en mode super admin sur ma machine, le probleme cest que une fois mon fichier host modifié il lancait des requettes sans arret, du coup toutes les machines du reseau etaient super lentes pour acceder au web.
    avec 0.0.0.0 ca marche nikel, mais le host est utilisable par nimporte qui, il a un avantage, il fonctionne partout, mac/pc/linux etc

    mais comme je le disais les os recents effacent, vident le host automatiquement, car certains des urls inclus dedans sont des sites de scam, et les antivirus les considerent comme une menace.
    de plus dans beaucoup de boites, les logiciels sont tous pirates, tres peu de logiciels officiels...mais ca c'est aun autre debat.


    bref, mon app extension chrome fonctionne nickel, il faudrait juste que je puisse la bloquer/forcer a ce quelle reste installée ou un truc du genre ou ajouter un mot de passer pour y acceder

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    je viens de remarque que le script pour lequel tu mas aidé, "SylvainPV" ne bloque plus les pages des sites, il ne bloque que les noms de domaines, mais si un site s'apelle par ex, "cucu.com/cucu.jpg" lui ne sera pas bloqué, alors qu'avec l'ancien system tout ce qui dependait du nom de domaine etait bloqué....c'est tres tres problematique...

    ta methode fonctione, elle bloque les sites mais pas tout ce qui en depend, je vviens de retester, mes 2millions d'urls/noms de domaines eux sotn bien bloqués, mai sir je vaus sur l'un deux, qui ne fonctionne pas, et que j'ajoute /gallery.....ben c'est la cata...car on y a acces :s

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function simple_domain(url)    {
        var matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
        return matches[1];
    }


    donc pour l'instant dans mon background j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var AUTHORIZED_URLS= {
    "http://url1/": false,
    };
    chrome.webRequest.onBeforeRequest.addListener(function(details) { return {cancel: AUTHORIZED_URLS[details.url]===false }; }, {urls: ["<all_urls>"]},["blocking"]);



    je replace le code par ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function simple_domain(url)   
    = {
    "http://url1/"
    };
     
     {
        var matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
        return matches[1];
    }

  15. #15
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    c'est un peu le système de "l'accord parentale" non?

    celui qui peu gérer ca c'est logiquement le routeur ( la box, le serveur entreprise, l'ordi...) , pas vraiment besoin de faire une extension si?

    genre, tu donnes a ta box la liste des urls pas permises... une fois pas semaine, tu met ca en tache chron , et je pense même que tu peu peu faire du server to server donc mettre ta list en service ailleurs sur la toile.

    peu être j'imagine mais je pense que c'est proche de la réalité

    Conception / Dev

  16. #16
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Citation Envoyé par imothep85 Voir le message
    je viens de remarque que le script pour lequel tu mas aidé, "SylvainPV" ne bloque plus les pages des sites, il ne bloque que les noms de domaines, mais si un site s'apelle par ex, "cucu.com/cucu.jpg" lui ne sera pas bloqué, alors qu'avec l'ancien system tout ce qui dependait du nom de domaine etait bloqué....c'est tres tres problematique...

    ta methode fonctione, elle bloque les sites mais pas tout ce qui en depend, je vviens de retester, mes 2millions d'urls/noms de domaines eux sotn bien bloqués, mai sir je vaus sur l'un deux, qui ne fonctionne pas, et que j'ajoute /gallery.....ben c'est la cata...car on y a acces :s
    Oui, je t'avais prévenu, c'est beaucoup moins flexible que les regex et il faut que l'URL corresponde EXACTEMENT. Si tu veux récupérer le domaine, tu peux l'extraire en JavaScript mais du coup tu perds un peu le gain de performance initial. Voilà un benchmark comparant les perfs de 3 façons de récupérer le domaine :
    http://jsperf.com/hostname-from-url

    La plus rapide (mais aussi la plus simple, à voir si elle gère tous les cas) est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function simple_domain(url)    {
        var matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
        return matches[1];
    }
    donc tu l'appliques sur details.url pour récupérer le domaine et ensuite voir s'il est présent dans ta blacklist.
    One Web to rule them all

  17. #17
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    Ton sujet me fais penser à ce que fait un fichier PROXY (.pac)


    devYan.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    avec tout ca je n'ai pa d'aide
    il faut savoir que je bosse sur ce logiciel depuis + d'un an, j'ai durant ce temps constitué une base de donées de plus de 2millions d'urls, porno,pedo,snuff,scams,hacks,pay per view, viagra & drugs, astro, etc etc etc la liste est longue de ce que mon extension bloque.
    tout ce qui est inutilise, arnaque, etc ets listé dans mon extension, ce qui fait qu'au final l'utilisateur ne risque pas de tomber sur des sites indesirables, et cest bien mieux qun quelquonque logiciel avec mot clefs, car souvent ca fout le bordel.

    donc si on peu me guider dans l'application du code dans cette derniere etape c'est nikel

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par imothep85 Voir le message
    donc si on peu me guider dans l'application du code dans cette derniere etape c'est nikel
    As-tu regardé à quoi correspond un fichier PAC et si cela ne pourrais pas répondre à ton besoin ?


    devYan.

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    comme je le dis je developpe une extension chrome, il ne faut pas oublier que les extensions chromes s'updatent automatiquement, des que je fais la mise a jour sur le webstore, ce qui est super pratique l'utilisateur n'a rie na faire, je ne peux pas dire a tous les gens de faire la mise a jour de le fichier a chaque fois
    j'update ma database tous les jours, et quand je bosse bien je liste jusqua 4000 sites par jour....

    bref non pas de pak et pas de fichier host comme j'ne avais parlé au depart c'est bien sur une extension chrome que je bosse.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Parse Json javascript
    Par Makinator dans le forum Général JavaScript
    Réponses: 35
    Dernier message: 12/11/2013, 08h38
  2. [POO] json et objet javascript
    Par kimcharlene dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2008, 23h10
  3. [Prototype] Lire du JSON en javascript
    Par sliderman dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 18/02/2008, 10h44
  4. [POO] Restaurer un objet JSon en javascript
    Par GandalfZeGrey dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 21/01/2008, 15h14
  5. [AJAX] Récupération d'un fichier JSON avec javaScript
    Par guerin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/11/2006, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo