2010-05-20 3 views
0

Oui, oui, je connais l'utilisateur et le mot de passe.Comment faire pour récupérer en masse des pages d'un site Web derrière l'authentification en PHP

J'ai besoin de truc en php pour me connecter à un site web et récupérer des images/contenus, comme un site web normal.

De toute évidence, avec une curl o file_get_contents, cela ne fonctionne pas car je ne suis pas authentifié.

Comment je peux faire?

L'authentification est une authentification HTTP normale avec POST.

Modifier: ok merci pour l'aide cela fonctionne!

code postal Je travaille ici pour référence future

//login and set cookie 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile"); 
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile 
curl_setopt($curl, CURLOPT_URL, "url in which there is the login form"); 
curl_setopt($curl, CURLOPT_POSTFIELDS, "user=test&password=test&someparam=somevalue"); //put here the post/get values 
$output = curl_exec($curl); 

echo $output; 

//finally fetch my content 
curl_setopt($curl, CURLOPT_URL, $url_to_fetch); 
$output = curl_exec($curl); 
echo $output; 

curl_close ($curl); 
+0

Avez-vous besoin de faire cela par programme en utilisant PHP. Sinon, essayez d'utiliser wget ou similaire. Quel type d'authentification le site utilise-t-il? Un formulaire HTML ou une authentification de base HTTP, ou quelque chose de plus exotique? – fmark

Répondre

1

Vous pouvez authentifier avec boucle. Curl permet d'envoyer des variables POST pour se connecter, ainsi que l'authentification HTTP de base.

+0

si je le fais, comment puis-je garder le succès d'authentification de session et appeler curl à d'autres pages? – apelliciari

1

Utilisez le navigateur pour vous authentifier, exporter les biscuits et les utiliser par boucle. Jusqu'à ce que la session dure, vous devez emprunter l'identité de votre utilisateur.

Je suis pressé et ne peut pas vous fournir le code tout à l'heure, mais je pense que ce sens peut vous aider à

Vous pouvez utiliser l'option CURLOPT_COOKIEFILE pour spécifier le fichier dans lequel vous avez enregistré les cookies.

Comme indiqué dans le php manual:

The name of the file containing the cookie data. 
The cookie file can be in Netscape format, or just 
plain HTTP-style headers dumped into a file. 
+0

bon indice! thanx – apelliciari

Questions connexes