Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mBank - logowanie z automatu
Spoky
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 8.03.2008

Ostrzeżenie: (0%)
-----


Witam. Czy ktos z forumowiczow walkowal ten temat? Potrzebuje stworzyc na wlasne potrzebny taki automato do logowania sie i pobierania wyciagu z danego okresu celem dalszej obrobki. Napisalem kawalek kodu, ale za cholere nie chce dzialac. kiedys pisalem do pkointeligo i dzialalo bez problemu, do mbanku dobrac sie nie moge :-(
mam takie cus. Mysle, ze strony obrobilem wszystkie dane, nie wiem co z info z ciastkami. Czy jest jakis sposob zeby przesledzic dokladniej, co i jak po kolei?

Kod
<?php

function pobierz_zaw($url)
{  
  
  $czytaj = curl_init();
  curl_setopt ($czytaj, CURLOPT_URL, $url);
  curl_setopt ($czytaj, CURLOPT_HEADER, false);
  curl_setopt($czytaj, CURLOPT_SSL_VERIFYPEER, false); //SSL
  curl_setopt($czytaj, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies1.txt');
  curl_setopt($czytaj, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies2.txt');
  ob_start();
  curl_exec ($czytaj);
  curl_close ($czytaj);
  $file = ob_get_contents();
  //print $file;
  ob_end_clean();
  return $file;
}


function formularz_logowanie($url,$nsid, $nstate, $nvalid, $akt_data)
{  
  
  $czytaj = curl_init();

$curlPost = array();
$curlPost['customer'] = ' ';
$curlPost['password'] = ' ';
$curlPost['__EVENTVALIDATION'] = $nvalid;
$curlPost['seed'] = $nsid;
$curlPost['localDT'] = $akt_data;
$curlPost['__PARAMETERS'] = '';
$curlPost['sCounter'] = '0';
$curlPost['__STATE'] = $nstate;
$curlPost['__VIEWSTATE'] = '';
$curlPost['menu'] = 'true';
$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0";

curl_setopt ($czytaj, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($czytaj, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($czytaj, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($czytaj, CURLOPT_POST, 1);
curl_setopt($czytaj, CURLOPT_FAILONERROR, true);
curl_setopt($czytaj, CURLOPT_POSTFIELDS, $curlPost);
curl_setopt($czytaj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($czytaj, CURLOPT_USERAGENT, $user_agent);
curl_setopt ($czytaj, CURLOPT_URL, $url);

curl_setopt($czytaj, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies1.txt');
curl_setopt($czytaj, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies2.txt');


  ob_start();
  $data = curl_exec ($czytaj);
  
  curl_close ($czytaj);
  $file = ob_get_contents();
  ob_end_clean();
  print $data;
  return $file;
}


$url='https://www.mbank.com.pl/';
$logowanie = pobierz_zaw($url);

preg_match("/name=\"seed\" id=\"seed\" value=\"(.*?)\" \/>/", $logowanie, $sid);
$nsid = $sid[1];

preg_match("/name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\"(.*?)\" \/>/", $logowanie, $valid);
$nvalid = $valid[1];

preg_match("/name=\"__STATE\" id=\"__STATE\" value=\"(.*?)\" \/>/", $logowanie, $state);
$nstate = $state[1];
$akt_data = date("Y-m-d H:i");

$zalogowany = formularz_logowanie($url,$nsid, $nstate, $nvalid, $akt_data);
print $zalogowany;
?>


Ten post edytował Spoky 13.07.2008, 16:13:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Spoky
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 8.03.2008

Ostrzeżenie: (0%)
-----


specjalnie przekleilem http headers :-)

Kod
pierwsze laczenie
           <span class="postcolor">https://www.mbank.com.pl/
              GET / HTTP/1.1
              Host: www.mbank.com.pl
              User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15
              Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
              Accept-Language: pl,en-us;q=0.7,en;q=0.3
              Accept-Encoding: gzip,deflate
              Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
              Keep-Alive: 300
              Connection: keep-alive
           <font color="#ff0000">    <font face="Arial Black">Cookie: mb-logout=3; mBankLang1140=P;  mBank1=TEMP42028753652D9D994A72541F7F8CF80F; wnd=notset;</font>  mBank2=OBMeE6x29_vxJ1BCmz7ufw==</font>
              HTTP/1.x 200 OK
              Cache-Control: pre-check=0
              Keep-Alive: timeout=3, max=993
              Pragma: no-cache
              Content-Length: 15978
              Content-Type: text/html; charset=iso-8859-2
              Expires: Mon, 26 Jul 1997 05:00:00 GMT
              X-Powered-By: ASP.NET
              X-AspNet-Version: 2.0.50727
<font color="#ff0000">Set-Cookie: mBank1=TEMP5D6E0DEF64096A386CF0542E3AB065DA; path=/; secure
              Set-Cookie: mBankLang1140=P; expires=Sat, 09-Apr-2011 18:40:24 GMT; path=/</font>
              Server: mBank Web Server
              Date: Sun, 13 Jul 2008 18:40:24 GMT</span>

Tak wlasnie wyglada zaladowanie strony logowania przez przegladarke.
Set-Cookie: zmienne zdaja sie byc zapisywane w cookie - mbank1 oraz mBankLang - curl zapisuje.
Podsumowujac: najpierw w skrypcie lacze sie, pobieram ciacho, parsuje zmienne z formularz, ktore sa generowane (te pola ukryte w formularzu)
potem przekazuje te zmienne postem i jednoczesnie odsylam ciacho poleceniem
Kod
curl_setopt($czytaj, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');

I do tego miejsca powinno byc ok, dlaczego wiec wciaz mam alarm bezpieczenstwa?
Co widac w kodzie tego errora - moze to nic, a moze jednak cos - nazwa stylu, wiele mowiaca
Kod
         <table cellspacing="0" cellpadding="0" border="0" align="center" style="width: 70%; border-collapse: collapse;" <font color="#ff0000">class="messageNoSession"></font>
                         <caption class="error">
                             Błąd systemu
                         </caption><tbody><tr>


Heh, ciezko tam dojsc :-) Normalnie forteca ;-) No chyba ze blad pojawia sie w momencie, gdy powinny byc zapisane kolejne ciacha i kolejne odeslane. (tuz po zalogowaniu)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 03:42