Log ind på Fronter med cURL
Hej,Tidligere fik jeg hjælp fra Experterne herinde til at lave et script, som kunne logge på Lectio. Det fungerer upåklageligt og jeg har været rigtig glad for det. Nu har jeg fået blod på tanden og er ved at lave et script, som kan logge ind på Fronter. Jeg har taget udgangspunkt i Lectio-scriptet, men det virker desværre ikke. Jeg synes ellers, at jeg har været hele vejen omkring og prøvet at tage højde for det hele. Er der nogen, som kan hjælpe mig videre?
Det lader ikke til at Fronter sætter nogle cookies før man faktisk er logget ind. Tilgengæld sender den nogle "hidden inputs" med nogle tokens. Dem synes jeg, at jeg har hentet.
Her er min kode:
define( "AGENT", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)" );
$loginUrl = 'https://fronter.com/randersts/index.phtml';
// First request (saving cookies and logging in)
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $loginUrl );
curl_setopt( $ch, CURLOPT_COOKIESESSION, 1 );
curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_USERAGENT, AGENT );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_ENCODING , "gzip" );
$cnt = curl_exec( $ch );
curl_close( $ch );
// getting fronter_request_token
preg_match( "/fronter_request_token.*?value=\"(.*?)\"/i", $cnt, $m );
$token = urlencode( $m[1] );
preg_match( "/SSO_COMMAND_SECHASH.*?value=\"(.*?)\"/i", $cnt, $m );
$sechash = urlencode( $m[1] );
// Building POST
$post = 'username=**BRUGERNAVN**&password=**KODEORD**&fronter_request_token=' . $token . '&SSO_COMMAND_SECHASH=' . $sechash;
// Logging in
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $loginUrl );
curl_setopt( $ch, CURLOPT_REFERER, $loginUrl );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ($ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
curl_setopt( $ch, CURLOPT_ENCODING , "gzip" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_USERAGENT, AGENT );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookies.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookies.txt" );
$cnt = curl_exec( $ch );
curl_close( $ch );
// Second request, getting student information and downloading images
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://fronter.com/randersts/main.phtml');
curl_setopt( $ch, CURLOPT_REFERER, 'https://fronter.com/randersts/index.phtml' );
curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_USERAGENT, AGENT );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $ch, CURLOPT_COOKIEFILE, 'cookies.txt' );
curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookies.txt' );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_ENCODING , 'gzip' );
$cnt = curl_exec( $ch );
curl_close( $ch );
echo htmlentities($cnt);
Et eksempel kan ses på
http://snuzzer.dk/v-caltio/fronter-login.php
Jeg håber, at I kan hjælpe mig videre.