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

Réseau/Web Python Discussion :

urllib.urlopen Vs web browser.open


Sujet :

Réseau/Web Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 22
    Par défaut urllib.urlopen Vs web browser.open
    Bonjour à tous,
    J'essaie de resoudre un challenge web qui est le suivant :
    On se connecte sur une url : http://xxxxxx/epreuve.php
    Une page avec une suite de caractere codée en base64 s'affiche
    Il faut décrypter cette suite et poster la reponse sur une url : http://xxxxx/verif.php?reponse=yyyyyyyy

    J'ai donc ecris ce bout de code : (j'ai flooté l'url afin de ne pas spoil ce challenge)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import base64
    import urllib
    import webbrowser
    page=urllib.urlopen('http://xxxxxxxx/epreuve.php')
    page2 ='http://xxxxxxxxxxxx/verif.php?='
    strpage=page.read()
    print(strpage)
    decrypt =base64.b64decode(strpage)
    print(decrypt)
    retouradr=page2+decrypt
    webbrowser.open(retouradr)
    Ce code marche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # python capture.py
    XHgyOFx4MVx4NDRceDUyXHg1M1x4NDRceDlceGJceDEwXHg0NFx4MFx4MVx4NDRceDUxXHg1MFx4NDRceDE0XHg1XHgxN1x4MTdceDFceDQ0XHg1XHg0NFx4MTZceDFceDEwXHhiXHgxMVx4MTZceGFceDFceDE2XHg0NFx4NTBceDVkXHg0NFx4NVx4NDRceDhceDVceDQ0XHgxNFx4NVx4M1x4MVx4NDRceDBceDFceDQ0XHg1M1x4NTdceDQ0XHgxMlx4MVx4MTZceGRceDJceGRceDdceDVceDEwXHhkXHhiXHhhXHg0NFx4NWRceDUwXHg0NFx4MTRceGJceDExXHgxNlx4NDRceGJceDZceDEwXHgxXHhhXHhkXHgxNlx4NDRceDhceDFceDQ0XHg1NVx4NTFceDQ0XHg5XHhiXHgxMFx4NDRceDUyXHg1MVx4NDRceDBceDFceDQ0XHgxNFx4NVx4MTdceDE3XHgxXHg0NFx4MVx4MTdceDEwXHg0NFx4NWVceDQ0XHgxXHhmXHgxN1x4MQ==
    \x28\x1\x44\x52\x53\x44\x9\xb\x10\x44\x0\x1\x44\x51\x50\x44\x14\x5\x17\x17\x1\x44\x5\x44\x16\x1\x10\xb\x11\x16\xa\x1\x16\x44\x50\x5d\x44\x5\x44\x8\x5\x44\x14\x5\x3\x1\x44\x0\x1\x44\x53\x57\x44\x12\x1\x16\xd\x2\xd\x7\x5\x10\xd\xb\xa\x44\x5d\x50\x44\x14\xb\x11\x16\x44\xb\x6\x10\x1\xa\xd\x16\x44\x8\x1\x44\x55\x51\x44\x9\xb\x10\x44\x52\x51\x44\x0\x1\x44\x14\x5\x17\x17\x1\x44\x1\x17\x10\x44\x5e\x44\x1\xf\x17\x1
    Je recupere bien la chaine de caractere en base64 et la conversion me donne une suite en hexa que je reinjecte comme reponse dans l'url de verif.
    La page web de verif s'ouvre bien avec ma concatenation.
    Mais.....le site m'indique en retour :Vous devez passer par epreuve.php pour pouvoir accèder à cette page.
    J'en deduis donc que le site doit fonctionner avec des cookies pour verifier que l'on a ouvert la page web "epreuve.php"avec un browser avant de poster une réponse.
    J'ai donc inseré un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    webbrowser.open('http://xxxxxxxx/epreuve.php')
    avant urllib.urlopen('http://xxxxxxxx/epreuve.php')
    Mais cela ne fonctionne pas car a chaque interrogation de cette page la chaine de caractere change.
    J'en deduis donc que webbrowser.open et urllib.open emettent chacun d'eux une requete
    Mon pb est donc le suivant :
    Si j'ouvre d'abord la page web via navigateur avec webbrowser, je ne peux plus enchainer avec un urllib.urlopen car la suite de caractere qui sera recupérée sera differente de celle apparaissant sur mon navigateur (car nouvelle requette).
    Si je n'ouvre pas la page avec un navigateur, l'URL de controle refuse ma reponse au titre que je ne suis pas passé d'abord par la page épreuve....

    Une idée sur le comment recoudre cela ?

    Merci à tous pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Vérifie le code source de la page http://xxxxxxxx/epreuve.php qui contient probablement un token, c'est-à-dire un code unique qui identifiera ta réponse par rapport à ta requête.

    Ce token est à usage unique, inutile de le réutiliser une deuxième fois.

    En fait, lorsque tu soumet ta solution, c'est un formulaire qui est renvoyé avec des valeurs à mots clés et tu dois reconstituer cette requête POST en analysant le code source de la première page.

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    ça me dit quelque chose ces bouts d'url, j'imagine que ceux qui font encore des challenges repèreront vite d'où c'est tiré
    en l'occurrence et en guise de token il me semble me souvenir qu'il faut juste faire transiter le cookie de session d'une part, et éventuellement mettre l'url d'epreuve.php en referer quand on va sur verif.php

    le tout doit normalement permettre au challenger d'en apprendre un peu plus sur le fonctionnement du protocole HTTP finalement

    donc avec urllib il faut monter la requête à la main, avec webbrowser c'est comme si on y allait directement à la souris dans le navigateur, donc c'est le plus proche des conditions réelles on va dire, mais c'est tout à fait faisable avec urllib, il suffit de savoir comment fonctionne HTTP et monter les 2 requêtes qui vont bien

Discussions similaires

  1. web browser en java .. quel composant ?
    Par vdavid1982 dans le forum Composants
    Réponses: 3
    Dernier message: 22/10/2009, 16h08
  2. Réponses: 1
    Dernier message: 03/08/2006, 20h40
  3. Composant Web Browser
    Par easty dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/10/2005, 18h07
  4. Web browser visible or propriété a false ?
    Par Tempotpo dans le forum Web & réseau
    Réponses: 3
    Dernier message: 11/08/2005, 10h58
  5. Cherche composant Web Browser indépendant
    Par lancelot69 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/07/2002, 11h14

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