Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  0 541
Jeg har for tiden et lite prosjekt gående, å klare å hente ut timeplaner fra en side ved universitetet.

Jeg må da først inn på http://timeplan.uia.no/swsuiakrv/public/no/default.aspx for å få eventvalidation, sessionid og viewstate.

Lenkene på siden går til et javascript, som er vanskelig å gjøre noe med. Jeg har derfor prøvd å replikere POST dataen som blir sendt idet jeg trykker på Emne lenken uten hell.

Jeg må først inn på hovedsiden, 'trykke' på emne, sende inn skjema med fagkode.

Kode

<?php
// create a new cURL resource
 	$url = "http://timeplan.uia.no/swsuiakrv/public/no/default.aspx";
	$ch = curl_init();
	
	$data = array( "__EVENTTARGET" => "LinkBtn_modules", "__EVENTARGUMENT" => "");
	
	$header = array( 
    "MIME-Version: 1.0", 
    "Content-type: text/html; charset=utf-8", 
    "Content-transfer-encoding: text" 
	);
	
	// set URL and other appropriate options
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
	curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
	curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");

//	ob_start();      // Prevent output
	curl_exec($ch);
//	ob_end_clean();  // End preventing output
	
	curl_close($ch);
?>
Her sender jeg bare første forespørselen til siden og lagrer cookien jeg får derrifra.

Kode

<?php
	include("parsing.php");
	$parse = new Parse();
	$url = "http://timeplan.uia.no/swsuiakrv/public/no/default.aspx";
	$ch = curl_init();
	
	$viewStateMain = $parse->viewStateMain();
	$eventValidationMain = $parse->eventValidationMain();
	$tLinkType = "studentsets";
	$tWildcard = "";
	$lbWeeks = "1;2;3;4;5;6;7;8;9;10;11;12;14;15;16;17;18";
	$lbDays = "1-6";

	
	// $viewStateMain = urlencode($viewStateMain);
	// $eventValidationMain = urlencode($eventValidationMain);
	// $lbWeeks = urlencode($lbWeeks);
	
	$postString = "__EVENTTARGET=LinkBtn_modules&__EVENTARGUMENT=&__VIEWSTATE=$viewStateMain&__EVENTVALIDATION=$eventValidationMain&tLinkType=modules&tWildcard=&lbWeeks=$lbWeeks&lbDays=1-6";
	
	$postfields = array( 
						"__EVENTTARGET" => "LinkBtn_modules", 
						"__EVENTARGUMENT" => "", 
						"__VIEWSTATE" => "$viewStateMain", 
						"__EVENTVALIDATION" => "$eventValidationMain", 
						"tLinkType" => "modules", 
						"tWildcard" => "", 
						"lbWeeks" => "$lbWeeks", 
						"lbDays" => "1-6" 
						);
	
	$header = array( 
    "MIME-Version: 1.0", 
    "Content-type: text/html; charset=utf-8", 
    "Content-transfer-encoding: text" 
	);
	
	// set URL and other appropriate options
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; nb-NO; rv:1.9.2) Gecko/20100115 Firefox/3.6");
	curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
//	ob_start();      // Prevent output
	curl_exec($ch);
//	ob_end_clean();  // End preventing output
	
	curl_close($ch);
?>
Her sender jeg med EVENTVALIDATION og VIEWSTATE som jeg fikk fra den andre siden, slik at jeg i prinsippet skal få opp emne view'et.

MEN, jeg har prøvd nesten alt fra a til å som jeg kan komme på nå, og jævelen vil ikke gi seg.

Noen som har tips?