Влезте програмно в SSL сайт с cURL и PHP

Моята алармена компания има лична страница за състоянието ми и искам да вляза програмно в страницата за състояние, за да извлека някои състояния, като използвам PHP и cURL.

Формата за влизане обаче използва CSRF, така че първоначалната ми идея беше да изтрия сайта, да получа стойности на полета и да ги изпратя с PHP и cURL и да запазя бисквитките във файл с бисквитки.

Проблемът, доколкото разбирам, е, че сайтът за влизане използва Backbone и много съдържание се зарежда с JavaScript. Така че всеки път, когато се опитам да изтегля данни, се пренасочвам към страницата „Изберете вашия език“, дори и да успея да вляза.

Страницата, в която се опитвам да вляза, е https://mypages.verisure.com и това е кодът, който в момента има:

<?php

$username = '[email protected]';
$password = 'xx';
$loginUrl = 'https://mypages.verisure.com/j_spring_security_check?locale=no_NO';

// init curl
$ch = curl_init();

// set the url to work with
curl_setopt( $ch, CURLOPT_URL, $loginUrl );

// enable http post
curl_setopt( $ch, CURLOPT_POST, 1 );

// set the post parameters
curl_setopt( $ch, CURLOPT_POSTFIELDS, 'j_username=' . $username . '&j_password=' . $password . '&spring-security-redirect=%2Fno%2Fstart.html' );

// handle cookies for the login
curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');

//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 the request
$store = json_decode( curl_exec( $ch ) );

if ( $store->status == 'ok' )
{
    curl_setopt( $ch, CURLOPT_URL, 'https://mypages.verisure.com' . $store->redirectUrl );

    $content = curl_exec( $ch );

    var_dump( $content );
}

?>

Променливата $store съдържа следното:

{
    "status": "ok",
    "redirectUrl": "/no/start.html",
    "message": null
}

Имате ли съвети как да влезете в сайт, който използва SSL и JavaScript.


person rebellion    schedule 07.12.2014    source източник


Отговори (1)


cURL и PHP вероятно не са правилните инструменти, ако е необходим JavaScript. Вместо това можете да опитате PhantomJS, който е базиран на Webkit браузър без глава и може да се използва за автоматизиране на взаимодействието с уеб сайтове, дори ако JavaScript е въвлечен.

person Steffen Ullrich    schedule 07.12.2014