Screenscraping med login.
Hejsa,Jeg skal bruge nogle "beskyttede" data, som jeg har tænkt med at hente via cURL. Der skal logges ind også hentes diverse data. Men mit problem er at med at få logge-ind'et til at virke.
Jeg fandt denne klasse til at gøre det jeg ønsker: http://dev.juokaz.com/php/scraping-login-requiring-websites-with-curl
Men kan ikke få det til at virke.
Siden jeg ønsker at logge ind på er: http://memberservice.sport-solutions.dk/login.aspx
[code]
<?php
/**
* Code example
*
* More info available in http://dev.juokaz.com/
*
* @author Juozas Kaziukenas <juozas@juokaz.com>
*/
class Secure_Crawler {
private $loginUrl = 'http://memberservice.sport-solutions.dk/Login.aspx';
private $options = array( );
private $connected = false;
function __construct () {
$cookies = 'cookies_path.txt';
$this->options = array(
CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',
CURLOPT_HEADER => false, // Add response headers to return, for testing
CURLOPT_RETURNTRANSFER => true, // Add html to return
CURLOPT_COOKIEJAR => $cookies,
CURLOPT_COOKIEFILE => $cookies,
);
// Reset cookies
@ unlink($cookies);
}
function login ($username, $password) {
$ch = curl_init();
$options = $this->options;
$options[CURLOPT_URL] = $this->loginUrl;
$options[CURLOPT_POST] = true;
// Login form fields
$options[CURLOPT_POSTFIELDS] = $this->getPostFields(
array(
'txbUsername' => $username,
'txbPassword' => $password,
'submit' => 'Button1'
));
$options[CURLOPT_FOLLOWLOCATION] = false;
curl_setopt_array($ch, $options);
curl_exec($ch);
//Close curl session
curl_close($ch);
$this->connected = true;
}
function get ($url) {
if (!$this->connected)
throw new Exception("Not connected");
$ch = curl_init();
//Get
$options = $this->options;
$options[CURLOPT_URL] = $url;
curl_setopt_array($ch, $options);
$results = curl_exec($ch);
//Close curl session
curl_close($ch);
return $results;
}
private function getPostFields ($data) {
$return = array();
foreach ($data as $key => $field) {
$return[] = $key . '=' . urldecode($field);
}
return implode('&', $return);
}
}
?>
[/code]
Når jeg kører scriptet, bliver jeg redirected til /login.aspx (ligesom at jeg ikke er logget ind)