<voorgeschiedenis>
Agenda's zijn geweldig, echter, ze in orde houden is soms lastiger dan het lijkt.
Zeker als je een lessenrooster hebt waar totaal geen logische volgorde in zit.
Vaarwel wekelijks herhalen optie
Van een hogeschool met een volledige afdeling genaamd informatica en techniek had ik verwacht dat de agenda open was voor synchronisatie met allerhande platformen, op zijn minst Microsoft outlook of een of andere Android app.
Maar niets is minder waar: de agenda van mijn hogeschool bestaat gewoon uit html pagina's, die enkel te bereiken zijn nadat je je wachtwoord ingevoerd hebt, en daarbovenop nog eens ssl secured zijn ook.
Over privacy gesproken.
Wat ze echter niet erg vinden is het feit dat je de uurroosters van alle andere klassen over de gehele campus ook gewoon kan bekijken.
</voorgeschiedenis>
Mijn doel is dus: De ssl secured html pagina's waarop mijn uurrooster te vinden is scrapen met behulp van cURL, waarna ik er een handige iCAL kalender van kan maken.
Echter, zelfs na dagenlang proberen, testen, en coderen, heb ik nog steeds niet veel vorderingen gemaakt met de eerste stap: het inloggen met cURL op de website van m'n school.
Dit is de code van de klasse die ik gebruik om me in te loggen op en te scrapen van de site:
Hoewel er in de cookie.txt wel degelijk een sesievariabele komt te staan, ben ik blijkbaar toch niet ingelogd, aangezien ik bij het scrapen van de site enkel
Found
The document has moved here.
te zien krijg (hier is hierbij een link naar de inlogpagina).
Is er iemand die me kan helpen om dit project werkend te krijgen?
Heeft er iemand ervaring met het scrapen van ssl secured sites?
Ziet er iemand grove fouten in mijn code?
Agenda's zijn geweldig, echter, ze in orde houden is soms lastiger dan het lijkt.
Zeker als je een lessenrooster hebt waar totaal geen logische volgorde in zit.
Vaarwel wekelijks herhalen optie
Van een hogeschool met een volledige afdeling genaamd informatica en techniek had ik verwacht dat de agenda open was voor synchronisatie met allerhande platformen, op zijn minst Microsoft outlook of een of andere Android app.
Maar niets is minder waar: de agenda van mijn hogeschool bestaat gewoon uit html pagina's, die enkel te bereiken zijn nadat je je wachtwoord ingevoerd hebt, en daarbovenop nog eens ssl secured zijn ook.
Over privacy gesproken.
Wat ze echter niet erg vinden is het feit dat je de uurroosters van alle andere klassen over de gehele campus ook gewoon kan bekijken.
</voorgeschiedenis>
Mijn doel is dus: De ssl secured html pagina's waarop mijn uurrooster te vinden is scrapen met behulp van cURL, waarna ik er een handige iCAL kalender van kan maken.
Echter, zelfs na dagenlang proberen, testen, en coderen, heb ik nog steeds niet veel vorderingen gemaakt met de eerste stap: het inloggen met cURL op de website van m'n school.
Dit is de code van de klasse die ik gebruik om me in te loggen op en te scrapen van de site:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| <?php class Secure_Crawler { private $loginUrl = 'https://idp.katho.be/idp/view/login.htm'; private $options = array( ); private $connected = false; function __construct () { $cookies = '/cookie.txt'; $this->options = array( CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], 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( 'username' => $username, 'password' => $password)); $options[CURLOPT_FOLLOWLOCATION] = true; $options[CURLOPT_SSL_VERIFYPEER] = false; curl_setopt_array($ch, $options); curl_exec($ch); curl_close($ch); $this->connected = true; } function store ($url, $file) { $ch = curl_init(); } function get ($url) { if (!$this->connected) throw new Exception("login failed"); $ch = curl_init(); //Get $options = $this->options; $options[CURLOPT_URL] = $url; $options[CURLOPT_SSL_VERIFYPEER] = false; $options[CURLOPT_FOLLOWLOCATION]= false; curl_setopt_array($ch, $options); $results = curl_exec($ch); curl_close($ch); return $results; } private function getPostFields ($data) { $return = array(); foreach ($data as $key => $field) { $return[] = $key . '=' . urldecode($field); } return implode('&', $return); } } ?> |
Hoewel er in de cookie.txt wel degelijk een sesievariabele komt te staan, ben ik blijkbaar toch niet ingelogd, aangezien ik bij het scrapen van de site enkel
Found
The document has moved here.
te zien krijg (hier is hierbij een link naar de inlogpagina).
Is er iemand die me kan helpen om dit project werkend te krijgen?
Heeft er iemand ervaring met het scrapen van ssl secured sites?
Ziet er iemand grove fouten in mijn code?