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; ?>
Partager