[JS/PHP] Récupération de code source

Voir le sujet précédent Voir le sujet suivant Aller en bas

[JS/PHP] Récupération de code source

Message  Dj x-fuse le Dim 30 Mai 2010, 18:31

Bonjour à tous,

Je souhaite automatiser une tâche web, et pour ce faire, il m'est nécessaire de récupérer le code source d'une page. Actuellement, sur firefox j'utilise le raccourci ctrl+u ou cmd+u (pour les utilisateurs mac).
Je sais que via php, il est possible de faire cela (file_get_contents() le fait très bien). C'est génial, sauf que je ne comprends pas trop comment insérer les cookies dans le code suivant (donné en exemple sur php.net) :
Code:
<?php
// Création d'un flux
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Accès à un fichier HTTP avec les entêtes HTTP indiqués ci-dessus
$file = file_get_contents('http://www.example.com/', false, $context);
?>
En effet, il est indispensable de récupérer les sources de la page avec les cookies (car c'est une page protégée par login/pass).

Une autre solution aurait été de récupérer le code source via une requête ajax en javascript (manuellement ou à l'aide de JQuery), mais après plusieurs tentatives il se trouve que les requêtes ajax sont acceptée qu'en local.

Avez-vous une solution pour soit utiliser les requêtes ajax sur une page externe ou alors utiliser les cookies de firefox dans le script php ?

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [JS/PHP] Récupération de code source

Message  pbt le Dim 30 Mai 2010, 21:07

Ta question est loin d'être claire ... en tout cas, moi je n'y comprend rien.

Si tu veux récupérer une page web tu peux utiliser wget ...

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: [JS/PHP] Récupération de code source

Message  Dj x-fuse le Lun 31 Mai 2010, 19:44

Pour mieux comprendre, on peut imaginer l'exemple suivant :
- index.php (une page d'accueil normale)
- login.php (une page avec un formulaire de login et un script de vérification si le login est correct et ouvre une session php via session_start() )
- membre.php (une page protégée par session_start() accessible uniquement si on est logé)
- logout.php (une page de déconnexion avec session_destroy() )

Maintenant, je souhaite récupérer le code source (html bien entendu) de membre.php. Problème, file_get_content ne me permet pas de récupérer la page car il ne prends pas en compte les sessions. En ajax, je ne peut pas non plus le faire car c'est une page d'un site extérieur.
L'idée qui m'a mit la puce à l'oreille fût le wget (merci ptb). Donc j'ai testé de récupérer membre.php via un
Code:
wget http://www.lesite.com/membre.php
A ce stade, j'ai les liens interne du fichier avec le numéro des PHPSESSID. Exemple de lien :
Code:
<a href="test.php?var=zzz&PHPSESSID=dsdf65xc32cs6fs5s2cx6w5sd6f5f6sd2s6d5s">lien</a>
En voyant ça, je me demande ce qui se trouve dans les cookies du site, et là je tombe sur un cookie nommé "PHPSESSID". Parfais, alors je test le script php avec comme cookie en entête PHPSESSID ainsi que la valeur qui se trouve dans le cookie. Et effectivement, file_get_contents() retourne bien le code html de la page membre.php comme si j'étais logé Very Happy

Maintenant il ne me reste plus qu'à récupérer automatiquement ce cookie (en js p-e, je test quelque chose actuellement) afin d'automatiser au mieux mon script.

Merci pour la petite astuce du wget, sa m'a permis de trouver la bonne voie Smile

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [JS/PHP] Récupération de code source

Message  Dj x-fuse le Mar 01 Juin 2010, 19:19

Problème des sessions résolu via cURL :
Code:
<?
define('LOGIN', 'unLogin');
define('PASSWORD', 'unPass');
define('AUTHENTIFICATION', 'http://site.com/login.php');
define('PAGE_PRIVEE', 'http://site.com/membre.php');

$sid = '';

/**
 * Première connexion : authentification
 **/
$ch = curl_init(AUTHENTIFICATION);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,
    array(
        'login' => LOGIN,
        'password' => PASSWORD
    )
);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('cookie.txt'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$ret = curl_exec($ch);
if ($ret === FALSE) {
    die(curl_error());
}
curl_close($ch);
if (preg_match('/([0-9a-z,-]{32,40})/i', $ret, $m)) {
    $sid = $m[1];
} else if (preg_match('#<input\s+type="hidden"\s+name="([^\r\n\t <>\'"\\\]+)"\s+value="([0-9a-z,-]{32,40})"\s*/?>#i', $ret, $m)) {
    $sid = $m[1] . '=' . $m[2];
}

/**
 *   Récupération de la page protégée
 **/
$opts = array(
   'http'=>array(
      'method'=>"GET",
       'header'=>"Accept-language: en\r\n" .
                    "Cookie: PHPSESSID=".$sid.";\r\n"
                 )
              );
                    
$context = stream_context_create($opts);

echo file_get_contents(PAGE_PRIVEE, false, $context);
?>

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [JS/PHP] Récupération de code source

Message  Contenu sponsorisé Aujourd'hui à 21:05


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum