CURL Récupérer le contenu d'un accès protégé web

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : CURL Récupérer le contenu d'un accès protégé web

Re: CURL Récupérer le contenu d'un accès protégé web

par MrLeWeb13 » 21 sept. 2013, 02:32

Bonjour,

Je suis tombé dans la même situation,
as tu réussis à résoudre ton problème ?

Re: CURL Récupérer le contenu d'un accès protégé web

par Saian » 25 nov. 2012, 13:21

Salut, as tu testé d'afficher le retour $store du curl_exec du login ?
Ça pourrait peut être t'aider à comprendre.

Re: CURL Récupérer le contenu d'un accès protégé web

par Raypulsif » 24 nov. 2012, 19:10

Ton histoire de token m'interpelle...

Quand je fais une saisie manuelle sur le site voici ce que ça donne dans les header :

Code : Tout sélectionner

https://mywebsite.com/user/login POST /user/login HTTP/1.1 Host: mywebsite.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: http://mywebsite.com/ Cookie: __utma=227009801.751277105.1323305682.1353721353.1353776414.101; __utmz=227009801.1330629728.18.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=champion%20rotation; _chartbeat2=1j09d9j8x334r7cw.1323305683259.1353776418631.00000000000001; riot_region=euw; __utma=227009801.751277105.1323305682.1353380687.1353596732.95; __utmz=227009801.1330629728.18.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=champion%20rotation; eubblanguageid=4; s_nr=1353776476288-Repeat; rp2=1353776476289-Repeat; s_vi=[CS]v1|28101BEC053126BE-40000105E0016753[CE]; LOLLANG=en; s_cc=true; s_ppv=lol%253Aeuw%253Aenglish%253Ahomepage%2C32%2C32%2C822; s_sq=rids%3D%2526pid%253Dlol%25253Aeuw%25253Aenglish%25253Ahomepage%2526pidt%253D1%2526oid%253DLogin%2526oidt%253D3%2526ot%253DSUBMIT; __utmb=227009801.2.10.1353776414; __utmc=227009801; testcookie=expanded Content-Type: application/x-www-form-urlencoded Content-Length: 52 name=mylogin&pass=mypass&form_id=user_login HTTP/1.1 302 Found Date: Sat, 24 Nov 2012 17:00:52 GMT Server: Apache/2.2.19 (CentOS) X-Powered-By: PHP/5.3.6 Last-Modified: Sat, 24 Nov 2012 17:00:52 +0000 Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 Etag: "1353776452" Set-Cookie: riot_region=euw; expires=Wed, 25-Nov-2015 10:27:10 GMT; path=/; domain=.leagueoflegends.com Set-Cookie: SESS0ac7fafc6035455ba5d24eac4833bb2b=93663e9f89ccbcad70b8fe71de6817d7; expires=Mon, 17-Dec-2012 20:34:12 GMT; path=/; domain=.mywebsite.com; HttpOnly Set-Cookie: eubbsessionhash=e539aaaa6b3a57a22222106a0515faad; expires=Mon, 17-Dec-2012 20:34:12 GMT; path=/; httponly Set-Cookie: eubblastvisit=1353776452; expires=Mon, 17-Dec-2012 20:34:12 GMT; path=/ Set-Cookie: eubblastactivity=1353776452; expires=Mon, 17-Dec-2012 20:34:12 GMT; path=/ Set-Cookie: eubbuserid=1222260; expires=Mon, 17-Dec-2012 20:34:12 GMT; path=/; httponly Set-Cookie: eubbpassword=aaff7a68829610d16ba8ebffd2c794be; expires=Mon, 17-Dec-2012 20:34:12 GMT; path=/; httponly Location: https://mywebsite.com/ X-Frame-Options: SAMEORIGIN Content-Length: 0 Connection: close Content-Type: text/html; charset=utf-8
une idée ?

Re: CURL Récupérer le contenu d'un accès protégé web

par moogli » 24 nov. 2012, 18:13

salut,


tu es certain que le formulaire posté ne contient pas d'autre info (genre token de validité) ?

il n'y a pas de paramètre en plus dans l'url ?

des infos ajoutées par du JS avant le submit ?


@+

CURL Récupérer le contenu d'un accès protégé web

par Raypulsif » 24 nov. 2012, 17:51

bonjour à tous,

mon souci est le suivant : je souhaite récupérer le contenu html d'une page web dont l'accès est protégé par session.
J'ai pensé à CURL pour simuler le login et l'accès à la page, mais je ne récupère qu'une me disant que je ne suis pas loggué. Je n'arrive pas à trouver l'endroit qui bloque.
Voici mon code :

Code : Tout sélectionner

<?php /* Here is a script that is usefull to : - login to a POST form, - store a session cookie, - download a file once logged in. */ // INIT CURL $ch = curl_init(); // SET URL FOR THE POST FORM LOGIN curl_setopt($ch, CURLOPT_URL, 'https://mywebsite.com/user/login'); // ENABLE HTTP POST curl_setopt ($ch, CURLOPT_POST, 1); // SET POST PARAMETERS : FORM VALUES FOR EACH FIELD curl_setopt ($ch, CURLOPT_POSTFIELDS, 'name=myname&pass=mypass&form_id=user_login'); // IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES curl_setopt ($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName.txt"); //curl_setopt($ch, CURLOPT_REFERER, 'http://mywebsite.com'); //curl_setopt($ch, CURLOPT_HEADER, TRUE); //curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); # Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL # not to print out the results of its query. # Instead, it will return the results as a string return value # from curl_exec() instead of the usual true/false. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // EXECUTE 1st REQUEST (FORM LOGIN) $store = curl_exec ($ch); $info = curl_getinfo($ch); /* i might have already problems here since $info contains : Array ( [url] => https://mywebsite.com/user/login [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0.171 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 ) */ // SET FILE TO DOWNLOAD curl_setopt($ch, CURLOPT_URL, 'http://mywebsite.com/users/en/myfile/1/'); curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName.txt"); // EXECUTE 2nd REQUEST (FILE DOWNLOAD) $content = curl_exec ($ch); // CLOSE CURL curl_close ($ch); ?>
LE fichier cookie.twt contient :

Code : Tout sélectionner

# Netscape HTTP Cookie File # http://curl.haxx.se/...ookie_spec.html # This file was generated by libcurl! Edit at your own risk. mywebsite.com FALSE / FALSE 0 LOL_TRIB p4epeqgp9tfijl0evi91rsl225
Alors que lorsque je fais une connexion naturelle à la main sur le site, mon navigateur enregistre beaucoup de cookies.

Un peu d'aide svp ?