cURL + logowaie do iPKO

0

Witam,

pracuję obecnie nad prostym skryptem to logowania do banku iPKO na prywatny użytek, jednak mam problem z przejściem całego procesu logowania, mój obecny kod wygląda następująco:

  $login='LOGINNNNNNNN';
  $haslo='HASLOOOOOOOO';



  $c=curl_init();
  curl_setopt($c, CURLOPT_URL, 'https://www.ipko.pl');

  curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
  curl_setopt($c, CURLOPT_CAINFO, 'cert.pem');

  curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0');
  $headers=array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language: pl,en-us;q=0.7,en;q=0.3','Connection: Keep-Alive');
  curl_setopt($c, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($c, CURLOPT_ENCODING, '');
  curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($c, CURLOPT_HEADER, 1);

  $page=curl_exec($c);

  curl_close($c);

  $ex1=explode('Set-Cookie: ',$page);
  $ex2=explode(';',$ex1[1]);

  $cookie=$ex2[0];




  sleep(mt_rand(3,5));







  $c=curl_init();
  curl_setopt($c, CURLOPT_URL, 'https://www.ipko.pl/secure/ikd3/api/login');

  curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
  curl_setopt($c, CURLOPT_CAINFO, 'cert.pem');

  curl_setopt($c, CURLOPT_POST, 1);
  curl_setopt($c, CURLOPT_POSTFIELDS, '{"_method":"POST","version":2,"seq":1,"location":"","request":{"state":"login","data":{"login":"'.$login.'"}}}');

  curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0');
  $headers=array('Content-Type: application/json','Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language: pl,en-us;q=0.7,en;q=0.3','Connection: Keep-Alive','Cookie: '.$cookie);
  curl_setopt($c, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($c, CURLOPT_ENCODING, '');
  //curl_setopt($c, CURLOPT_REFERER, 'https://www.ipko.pl');
  curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($c, CURLOPT_HEADER, 1);

  $page=curl_exec($c);

  curl_close($c);



  $ex1=explode('"sid": "',$page);
  $ex2=explode('"',$ex1[1]);

  $sid=$ex2[0];


  $ex1=explode('"flow_id": "',$page);
  $ex2=explode('"',$ex1[1]);

  $flow=$ex2[0]; 



  sleep(mt_rand(3,5));





  $c=curl_init();
  curl_setopt($c, CURLOPT_URL, 'https://www.ipko.pl/secure/ikd3/api/login');

  curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
  curl_setopt($c, CURLOPT_CAINFO, 'cert.pem');

  curl_setopt($c, CURLOPT_POST, 1);
  curl_setopt($c, CURLOPT_POSTFIELDS, '{"_method":"PUT","sid":"'.$sid.'","version":2,"seq":2,"location":"","request":{"state":"password","flow_id":"'.$flow.'","first_prelogin":true,"data":{"password":"'.$haslo.'"}}}');

  curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0');
  $headers=array('x-ias-ias_sid: '.$sid, 'Content-Type: application/json','Accept-Language: pl,en-us;q=0.7,en;q=0.3','Accept-Encoding: gzip, deflate, br','Connection: Keep-Alive','Cookie: '.$cookie);
  curl_setopt($c, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($c, CURLOPT_ENCODING, '');
  curl_setopt($c, CURLOPT_REFERER, 'https://www.ipko.pl/login.html');
  curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($c, CURLOPT_HEADER, 1);

  $page=curl_exec($c);

  curl_close($c);



echo $page;

Problem dotyczy generalnie ostatniego połączenia, ponieważ wynikiem jest informacja o nieznanym błędzie aplikacji.

Od razu nie pragnę nadmienić, że nie szukam gotowca - jeżeli komuś się nudzi w sobotę to czemu nie, ale jeżeli nie, to będę wdzięczny za wszelkie wskazówki. Dodam tylko, że próbowałem dodawać kilka opcji do headeru ostatniego zapytania (dlatego różni się od poprzednich) ale bez efektu.

0

A próbowałeś ustawić CURLOPT_FOLLOWLOCATION? Może tam jest jakieś przekierowanie i nie wyłapuje tego skrypt.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
0

Delikatnie poza tematem, ale czytałem że używanie skryptów do banków może skończyć się banem na konto.

1 użytkowników online, w tym zalogowanych: 0, gości: 1