[HTTP] Différencier GET primaire de GET de dépendance

Différencier GET primaire de GET de dépendance [HTTP] - Programmation

Marsh Posté le 16-01-2002 à 15:58:59    

Salut,
 
Je suis en train de développer un outil d'e-learning et j'utilise JigSaw, un proxy open source Java. J'aimerai bien faire la différence entre un GET fait par le prof (par exemple /cours/01-02/Slides1.html) et un GET fait par le browser (par exemple /cours/01-02/gif/slides1.gif).  
Actuellement j'utilise l'header REFERER mais ca ne marche pas toujours ... Quelqu'un a une meilleure idée?
 
Y a t il un site qui donne la liste des headers d'un entete HTTP de réponse ou de requete.
 
Thanks  :hello:


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 16-01-2002 à 15:58:59   

Reply

Marsh Posté le 16-01-2002 à 16:20:06    

Reply

Marsh Posté le 16-01-2002 à 16:24:24    

legreg a écrit a écrit :

la rfc HTTP:
http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf
ou  
http://www.w3.org/Protocols/
 
A+
LEGREG  




 
merci. Une idée pour mon GET?


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 16-01-2002 à 23:24:38    

pour ça, chopper un packet sniffer, par ex : http://netgroup-serv.polito.it/analyzer/
 
tu verras tout ce qui se passe entre ton browser et le serveur.
 
pour ton GET, ça peut venir de plusieurs trucs - problème de majuscule, oubli des deux retours à la ligne à la fin, absence du champ Host: si tu bosses en HTTP/1.1 (ou même avec certains serveurs), absence du champ User-Agent, oubli du http:// dans le referer, etc .....  
 
solution -> sniffer ce que fait le browser et envoyer la même chose.

Reply

Marsh Posté le 17-01-2002 à 08:44:31    

youdontcare a écrit a écrit :

pour ça, chopper un packet sniffer, par ex : http://netgroup-serv.polito.it/analyzer/
 
tu verras tout ce qui se passe entre ton browser et le serveur.
 
pour ton GET, ça peut venir de plusieurs trucs - problème de majuscule, oubli des deux retours à la ligne à la fin, absence du champ Host: si tu bosses en HTTP/1.1 (ou même avec certains serveurs), absence du champ User-Agent, oubli du http:// dans le referer, etc .....  
 
solution -> sniffer ce que fait le browser et envoyer la même chose.  




 
Merci de ton aide, monsieur le balèze ...
 
Y a des pros ici, j'apprécie ;)
 
A+  :hello:


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 17-01-2002 à 21:22:28    

pkoi ne pas mettre un paramètre en UTL à chacun des liens ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-01-2002 à 08:06:56    

benou a écrit a écrit :

pkoi ne pas mettre un paramètre en UTL à chacun des liens ?  




 
parce que c'est un proxy et que le prof peut surfer ou il veux. Tu veux pas que je change les liens partout non plus ? :D


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 18-01-2002 à 10:16:01    

Bon je recommence ...
 
Je voudrais simplement créer une logique sans faille qui me permette de différencier un GET fait par l'humain d'un GET fais par le browser.
 
Exemple : le prof fait un GET www.monsite.com
 
Le browser fait des GET sur
 
/images/monsiteWelcome.jpg
/frame/leftframe.html
/frame/menu.html
/style/common.css
/script.js
 
J'utilise un proxy du W3C qui me permet d'écrire des filtres. Ce filtre est appellé:
 
1) Lorsqu'une requete arrive dans le proxy (par exemple GET /frame/menu.html)
2) Lorsqu'une réponse rentre dans le proxy (par exemple
HTTP/1.1 200 OK ....
 
Alors ... Une idée. Sachant que le prof peut visitier n'importe quel site. Eventuellement, on peut modifier le client mais bon c'est déjà genant.
 
Merci a+


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 18-01-2002 à 10:36:31    

darklord22 a écrit a écrit :

 
 Tu veux pas que je change les liens partout non plus ? :D  




 
bhaaaaa ... :)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-01-2002 à 10:50:33    

darklord22 a écrit a écrit :

Bon je recommence ...
Je voudrais simplement créer une logique sans faille qui me permette de différencier un GET fait par l'humain d'un GET fais par le browser.




 
il n'y a pas de logique sans faille
parce que le prof peut envoyer
exactement la meme requete que ton browser
a la main..
 
A+
LEGREG

Reply

Marsh Posté le 18-01-2002 à 10:50:33   

Reply

Marsh Posté le 18-01-2002 à 13:55:21    

Je comprend pas trop à quoi ça peut bien te servir au final de faire la distinction des get.
 
Tu peux nous en dire plus la dessus ?

Reply

Marsh Posté le 18-01-2002 à 17:30:45    

kizkoool a écrit a écrit :

Je comprend pas trop à quoi ça peut bien te servir au final de faire la distinction des get.
 
Tu peux nous en dire plus la dessus ?  




 
Bon je dois faire un outil d'e-learning. Le prof surfe sur un site ou il y a des slides mais ca peut etre autre chose. Je dois répertorier les pages qu'ils demandent et le temps qu'ils passent desuss (par ex: 4500msec sur slide1.html puis 64687687msec sur slide2.html) ...
 
Après ca, j'ai une applet qui permet d'afficher les différents slides avec un fichier audio derrière (la voix du prof enregistré pdt le cours).
 
Donc forcément je m'en fous que le browser a fait un get sur une image. Bien sur que je vais en tenir compte mais je dois savoir quel page le prof a demandé et combien de temps (pour le temps c fait mais pas pour le reste)
 
Est ce plus clair?

Reply

Marsh Posté le 18-01-2002 à 17:42:13    

darklord22 a écrit a écrit :

Je dois répertorier les pages qu'ils demandent et le temps qu'ils passent desuss (par ex: 4500msec sur slide1.html puis 64687687msec sur slide2.html) ...


et comment détermines-tu le temps passé sur une page ? quand je surfe je garde souvent la page principale ouverte et j'ouvre les liens dans une autre fenêtre ...

Reply

Marsh Posté le 18-01-2002 à 17:55:30    

darklord22 a écrit a écrit :

 
Donc forcément je m'en fous que le browser a fait un get sur une image. Bien sur que je vais en tenir compte mais je dois savoir quel page le prof a demandé et combien de temps (pour le temps c fait mais pas pour le reste)




 
Ben pour savoir quelle page il a demande tu regardes l'url, non?
 
LEGREG

Reply

Marsh Posté le 18-01-2002 à 17:56:24    

youdontcare a écrit a écrit :

et comment détermines-tu le temps passé sur une page ? quand je surfe je garde souvent la page principale ouverte et j'ouvre les liens dans une autre fenêtre ...  




 
Lorsque le prof fait un GET ca passe dans mon proxy et je peux déterminer le temps ou la requete arrive dans le proxy. Lorsque il y a un reply positif, je capture le fichier en passant et je note l'heure ...
 
Tu vois?
 
PS : de toutes facons le prof garde la meme fenetre. Imagine que tu donnes cours, t'as pas besoin d'ouvrir dix fenetres. C'est un cours magistral. Il explique un slide, passe au slide suivant, etc.

Reply

Marsh Posté le 18-01-2002 à 17:59:42    

darklord22 a écrit a écrit :

 
PS : de toutes facons le prof garde la meme fenetre. Imagine que tu donnes cours, t'as pas besoin d'ouvrir dix fenetres. C'est un cours magistral. Il explique un slide, passe au slide suivant, etc.  




et s'il est dans le cache la page?
faut au moins un prof cooperatif ;)
 
LEGREG

Reply

Marsh Posté le 18-01-2002 à 18:01:12    

donc tu estimes le temps passé sur une page en comptant le temps entre la requêtes sur la page et la requete "volontaire" suivante vers une autre page.
c'est ca ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-01-2002 à 18:01:35    

legreg a écrit a écrit :

 
et s'il est dans le cache la page?
faut au moins un prof cooperatif ;)
 
LEGREG  




 
Les profs sont des informaticiens et sont au courant des limitations. Ils vident leur cache avant le cours.
 
A+
 
PS: Merci de me répodnre mais tout ces problemes sont déjà résolus. Je cherche juste à savoir comment résoudre ce problème ... J'utilise l'en tete referer en HTTP mais ca ne marche pas toujorus ...

Reply

Marsh Posté le 18-01-2002 à 18:02:45    

benou a écrit a écrit :

donc tu estimes le temps passé sur une page en comptant le temps entre la requêtes sur la page et la requete "volontaire" suivante vers une autre page.
c'est ca ?  




 
exact et je n'estime pas. C'est assez précis en fait (on a fait bcp de test pour vérifier que ca tenait la route). A partir du moment ou a bien détecté les GETs volontaires bien sur. Ca reste le probleme. Mais lorsque la logique fonctionne c'est précis à quelques msec près

Reply

Marsh Posté le 18-01-2002 à 18:05:41    

mais si le prof ferme son navigateur, tu ne resevra jamais de "requete suivante" ... pas évidant de connaitre le temps passé dessus ...
 
est ce que tu as un nomber limité de pages dont tu veux connaître le temps de visionage ?
est ce que tu peux modifier le code de ces pages ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 18-01-2002 à 18:06:41    

ce que j'avais pas compris au depart (mais tu aurais du detailler tout ton pb au depart parce que c'est loin d'etre clair) c'est que ton prof fait ses requetes depuis un navigateur..
Par contre je vois pas ce que tu appelles requetes volontaires et les autres? sauf si y'a du javascript toute requete est volontaire non?
 
LEGREG

Reply

Marsh Posté le 18-01-2002 à 18:09:57    

legreg a écrit a écrit :

ce que j'avais pas compris au depart (mais tu aurais du detailler tout ton pb au depart parce que c'est loin d'etre clair) c'est que ton prof fait ses requetes depuis un navigateur..
Par contre je vois pas ce que tu appelles requetes volontaires et les autres? sauf si y'a du javascript toute requete est volontaire non?
 
LEGREG  




 
Mais non enfin  :fou:  
 
Si tu vas sur forum.hardware.fr tu demandes que la page s'afficche mais pour ca ton browser fait plein de get pour récupérer les images, le javascript et compagnie. Donc tout ca c'est ce que j'appelle des dépendance.  
 
Il faut différencier la page dans son ensemble (la page que le prof demande par exemple www.toto.com/index.html et l'image contenue dans index.html qui n'est qu'une dépendance ...)
 
Tu m'étonnes à faire une remarque pareil  :??:

Reply

Marsh Posté le 18-01-2002 à 18:11:28    

darklord22 a écrit a écrit :

Bon je recommence ...
 
Je voudrais simplement créer une logique sans faille qui me permette de différencier un GET fait par l'humain d'un GET fais par le browser.
 
Exemple : le prof fait un GET www.monsite.com
 
Le browser fait des GET sur
 
/images/monsiteWelcome.jpg
/frame/leftframe.html
/frame/menu.html
/style/common.css
/script.js
 
J'utilise un proxy du W3C qui me permet d'écrire des filtres. Ce filtre est appellé:
 
1) Lorsqu'une requete arrive dans le proxy (par exemple GET /frame/menu.html)
2) Lorsqu'une réponse rentre dans le proxy (par exemple
HTTP/1.1 200 OK ....
 
Alors ... Une idée. Sachant que le prof peut visitier n'importe quel site. Eventuellement, on peut modifier le client mais bon c'est déjà genant.
 
Merci a+  




 
C'est pas clair la? Je parle de browser et tout ...

Reply

Marsh Posté le 18-01-2002 à 18:23:02    

peut-etre en faisant un systeme  
base sur les temps de reponse justement:
le navigateur qui charge les images
les charge des qu'il trouve le lien sur la page
tandis que le prof va attendre que la page
s'affiche avant de cliquer sur des liens.
 
mais bon y'a parfois des profs impatients
ou des images et des pages qui mettent longtemps a se charger..
 
peut-etre y a-t-il aussi des infos a prendre dans le champ
accept:
 
Sinon je crois que le referer est vide quand l'utilisateur
a entre l'url a la main ou a clique sur ses favoris.
 
LEGREG

Reply

Marsh Posté le 18-01-2002 à 18:26:48    

legreg a écrit a écrit :

 
Sinon je crois que le referer est vide quand l'utilisateur
a entre l'url a la main ou a clique sur ses favoris.




 
Oui j'exploite déjà ça ...

Reply

Marsh Posté le 19-01-2002 à 16:04:04    

Ok j'ai une autre solution. Comme la charge de travail n'est pas trop lourde (c'est pas du surf intensif) j'ai une autre idée:
 
Supposez qu'on est en plein surf. Le prog connait le ROOT courant. Lorsqu'un ROOT est déterminé le fichier HTML est parsé pour contenir:
 
L'ensemble des URL dans les balises SRC
L'ensemble des URs dans les balises href + frame src
 
Lorqu'un fichier arrive, il suffit de regarder si il est dans SRC (dependance) ou href (nouveau root puisque c'est un lien)
 
Z'en pensez quoi?


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 20-01-2002 à 00:45:47    

j'en pense que des que tu vas avoir ds pages avec un peu de javascript ca marchera plus : si l'accès à une page est faite dans un script tu ne seras pas capable de trouver l'url de la page appelée.
 
 
je viens de penser à un truc : pourquoi ne pas utiliser le onUnLoad (si je me souvies bien) : c'est executé lorsq'on quite un document (changement de page ou fermeture du browser).
 
Tu pourrais par exemple faire que ta page contienne une frame invisible et sur le onUnLoad, tu modifies le location de la frame invisible => ca fait un appel au serveur => ca passe par ton proxy => tu peux savoir combien de temps la gars à passé sur la page  : (temps entre la requête et la requête due au onUnLoad)
 
C'est pas une bonne idée, ca ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 20-01-2002 à 03:10:22    

Dans le même genre :
 
Ton prof, il ne passe pas sont temps à taper des URLS (et en plus quand il le fait, il me semble que le REFERER est vide et que tu traite déjà ce cas) il doit cliquer sur des liens genre "Slide Suivant".
 
Donc l'idée est de mettre un bout de Javascript sur les liens pour faire un GET sur une URL bricolée que ton proxy reconnaitrait mais qui serait quand même valide.
Genre au lieu de :
 
http://www.monsite.com/slide1.htm
 
le javascript ferait :
 
http://www.monsite.com/slide1.htm?proxy=1
ou
HTTP://www.monsite.com/slide1.htm
 
Ou bien encore avec un cookie dont la valeur est modifiée par le javascript. Mais là, je connais pas trop la gestion des cookies en JS...

 

[edtdd]--Message édité par Mara's dad--[/edtdd]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-01-2002 à 09:07:08    

le prof peut surfer ou il veut. Il n'y a pas de restrictions. Un prof peut très bien surfer sur le site de doc de Cisco qd il donne un cours réseau.
 
Donc comme je l'ai déjà dit je ne peux pas modifier les liens.
 
Benou pour ton idée j'ai pas compris ...
 
Merci  :hello:


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 20-01-2002 à 10:30:28    

Benou propose aussi de modifier les pages...
 
Si c'est pas possible, alors y'a pas de solution, car comme je l'ai dit, si ton prof clic sur un lien "Slide Suivant", dans ce cas, c'est le navigateur qui fait le GET, et il n'y aurra pas de moyen de le différencier d'un GET d'une frame ou d'une image !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-01-2002 à 10:53:03    

Mara's dad a écrit a écrit :

Benou propose aussi de modifier les pages...
 
Si c'est pas possible, alors y'a pas de solution, car comme je l'ai dit, si ton prof clic sur un lien "Slide Suivant", dans ce cas, c'est le navigateur qui fait le GET, et il n'y aurra pas de moyen de le différencier d'un GET d'une frame ou d'une image !  




 
oui c'est bien ce qui m'ennuie. En fait avec certaines limitations on arrive à un résultat convenable mais il n'est pas toujours parfait malheureusement ... :(
 
Ok merci bien pour ton aide
 
Sinon j'ai entendu dire qu'on pouvait configurer les navigateurs pour qu'ils n'envoient pas le "referer" header dans une requete (pour éviter de savoir d'où on vient lorsqu'on surfe). Ca pourrait etre une bonne idée non?
 
Mais je sais pas comment ca marche ...


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 20-01-2002 à 11:04:32    

J'ai entendu parler de çà pour OPERA . . .
 
Mais c'est difficile de compter la dessus. Il suffit d'un navigateur qui ne permet pas de supprimer le REFERER pour que çà ne marche plus.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-01-2002 à 11:51:43    

Mara's dad a écrit a écrit :

J'ai entendu parler de çà pour OPERA . . .
 
Mais c'est difficile de compter la dessus. Il suffit d'un navigateur qui ne permet pas de supprimer le REFERER pour que çà ne marche plus.  




 
vi mais les profs sont compréhensifs et travaille sur des stations que l'on prépare (on configure le ftp ou le cours va etre uploader, le type d'audio qu'on va enregistrer, si on va envoyer sa voix en streaming ou pas, etc etc.) Mais la question c'est est ce que tt les navigateurs peuvent le faire (ca doit marcher sous linux et sous windows ...


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 20-01-2002 à 14:16:53    

je dubite ... :heink:
 
si j'ai bien compris, tu dois créer un filtre pour un proxy afin de déterminer quelles pages ton prof visite pendant sa présentation, ceci afin de pouvoir rejouer la présentation plus tard avec l'enregistrement de la voix du prof. c'est ça ?
 
donc en gros il suffit de comptabiliser uniquement les requêtes qui renvoient un html.
 
pour chaque requête, tu peux accéder à l'url. si elle se termine en .html ou .htm, tu la ranges dans un coin. si c'est autre chose (.gif .jpeg .phtml .php .etc) tu cherches dans les headers le champ Content-Type: text/html qui t'indiquera si c'est ... du texte. si le champ n'est pas présent, tu peux faire du 'data sniffing', ie tester si c'est du texte - bourrin, tu prends par ex les 64 premiers k du fichier - s'il y a un zéro (ou des caractères comme 1, 2, ...), ce n'est pas du texte. si c'est du texte, tu ranges l'url.
 
maintenant, tu as un tableau qui contient les urls avec leur temps (ie tab[0].url = 'www.site.com/slide1.php', tab[0].time = '16:35.20'.
 
c'est fini ! où est le problème ?
 
ok, il reste la possibilité des frame et des iframe. ce n'est pas insurmontable, mais j'aimerai d'abord comprendre ce qui te bloque tant ...

Reply

Marsh Posté le 20-01-2002 à 15:57:32    

youdontcare a écrit a écrit :

je dubite ... :heink:
 
si j'ai bien compris, tu dois créer un filtre pour un proxy afin de déterminer quelles pages ton prof visite pendant sa présentation, ceci afin de pouvoir rejouer la présentation plus tard avec l'enregistrement de la voix du prof. c'est ça ?




 
Exactement. Et je précise que ca existe déjà. Ca s'appelle Webconf (http://www.infonet.fundp.ac.be/soft/webconf/). J'ai aussi développé l'applet qui permet de rejouer des cours offline. WebReplay (http://www.infonet.fundp.ac.be/soft/webreplay/).
 
Le truc c'est que webconf est basé sur un proxy HTTP/1.0 et qu'on a décidé que j'upgrade le tout vers un proxy 1.1. Je voulais juste en profiter pour améliorer les fonctionnalités.
Ca marchait bien sauf avec les frames justement et certains contenus dynamiques. Donc bien sur que ce que tu dis là je l'ai DEJA fait. Je voulais juste savoir si il n'y avait pas un moyen plus propre ...
 

youdontcare a écrit a écrit :

 
tu cherches dans les headers le champ Content-Type: text/html qui t'indiquera si c'est ... du texte.  




 
Une page PHP, JSP, ASP et compagnie mettra-t-elle toujours ce champ content type à text/html ??
 

youdontcare a écrit a écrit :

 
ok, il reste la possibilité des frame et des iframe. ce n'est pas insurmontable, mais j'aimerai d'abord comprendre ce qui te bloque tant ...  




 
Bin euh rien. Comme je l'ai déjà dit cent fois je voulais juste voir si il y a pas un machin plus propre ... C'est tout. Merci de ton aide en tout cas ;)


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 20-01-2002 à 20:54:02    

haaaaaa ... sois un peu plus explicite, bon sang ! ie, pose ta question en disant que c'est pour faire un replay webconf plutôt que vraiment trouver la différence entre un get primaire / get dépendance.
 
pour le content type, ça dépend du serveur ou du module. un serveur 'moderne' mettra le champ, php le met par défaut, je suppose que jsp & perl le font aussi.
 
non, y'a pas plus propre. les standards c'est bien beau mais chacun fait sa cuisine. j'ai implémenté un client ftp, entre la spec et les serveurs, y'a de la marge. pareil pour le data sniffing, c'est ce que fait ie en interne pour savoir comment se débrouiller.
 
pour les frames, ça ne devrait pas être insurmontable - en analysant les pages et en créant des structures sur qui pointe vers quoi, tu devrais t'en sortir sans trop de problèmes.

Reply

Marsh Posté le 20-01-2002 à 21:09:32    

youdontcare a écrit a écrit :

haaaaaa ... sois un peu plus explicite, bon sang ! ie, pose ta question en disant que c'est pour faire un replay webconf plutôt que vraiment trouver la différence entre un get primaire / get dépendance.




 
un replay webconf  :heink:  
 
:D
 
Bon on s'est compris. Bin il me semblait qu'avec l'exemple ct clair moi :D Sinon j'y ai réfléchi et c'est clair que ca devrait aller :)
 
A++ et encore merci !


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 21-01-2002 à 14:19:50    

youdontcare a écrit a écrit :

ok, il reste la possibilité des frame et des iframe. ce n'est pas insurmontable, mais j'aimerai d'abord comprendre ce qui te bloque tant ...  




 
c'est quoi une iFrame?


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 21-01-2002 à 17:27:14    

darklord22 a écrit a écrit :

 
 
c'est quoi une iFrame?  



la même chose qu'une frame, sauf qu'elle peut tenir dans un rectangle n'importe où sur l'écran et peut avoir n'importe quelle taille.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed