cURL + logowaie do iPKO

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:

Kopiuj
  $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.

corey
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 7 lat
0

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

Kopiuj
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

RB
  • Rejestracja:prawie 10 lat
  • Ostatnio:8 miesięcy
  • Lokalizacja:Szczecin
  • Postów:36
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.