Bonjour,

Je souhaite récupérer des données d'un site web en utilisant un script php incluant des requêtes XPath.
En essayant d'accéder à la page voulue, une erreur 401 se produit car je dois être authentifié sur ce site.
J'ai donc changé mon script en passant un context à ma fonction file_get_contents(). Ce context comprend l'identifiant et le mot de passe de mon compte.

Problème : le file_get_contents() me retourne le code html de la page de connexion et non pas de la page souhaitée passée en paramètre.

Mon interprétation :
1/ Je tente de récupérer le contenu de la page souhaitée.
2/ Le serveur redirige vers la page de connexion.
3/ Le serveur utilise l'id et le mot de passe du context pour l'authentification.
4/ L'authentification est un succès.
5/ file_get_contents() me retourne l'html de la page de connexion car la redirection vers la page souhaitée ne se fait pas.

Question : Pourquoi ? Est-il possible de récupérer le contenu souhaité ? Quelle est la démarche ?

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
29
30
<?php
 
		// L'URL de la page souhaitée.
		$url = 'http://page_que_je_veux/';
 
		// Encodage de l'autentification
			$auth = base64_encode('user:pass:token');
 
		// Création des options de la requête
			$opts = array(
				'http' => array (
					'method'=>'POST',
					'header'=>"Authorization: Basic $auth"
				),
				'https' => array (
					'method'=>'POST',
					'header'=>"Authorization: Basic $auth"
				)
			);
 
		// Création du contexte de transaction
		$context = stream_context_create($opts);
 
		// Récupération du contenu HTML de la page.
		$html = file_get_contents($url, false, $context);
 
		// Cet echo montre bien que je retourne le contenu de la page de log et non pas de la page que je veux.
		echo $html;
 
?>