![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Firefox + firebug + live headers [podglad naglowkow]
mozliwe ze ciacha sa JSem ustawiane, wiec w naglowkach nie zobaczysz set-cookie |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 8.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie dam rady, bez pomocy, za cienki jestem. Poza tym przydaloby sie jeszcze cos do sledzenia zmiana na bierzaco... Wiec tak
Kod 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 Cookie: mb-logout=3; mBankLang1140=P; mBank1=TEMP42028753652D9D994A72541F7F8CF80F; wnd=notset; mBank2=OBMeE6x29_vxJ1BCmz7ufw== 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 Set-Cookie: mBank1=TEMP5D6E0DEF64096A386CF0542E3AB065DA; path=/; secure Set-Cookie: mBankLang1140=P; expires=Sat, 09-Apr-2011 18:40:24 GMT; path=/ Server: mBank Web Server Date: Sun, 13 Jul 2008 18:40:24 GMT Nie znam sie na ciastkach, ale curl_setopt($czytaj, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies1.txt') zapisuje mi Kod www.mbank.com.pl FALSE / TRUE 0 mBank1 TEMP385BD4B494D095F037BD68B7BEBD7AE6 www.mbank.com.pl FALSE / FALSE 1302363451 mBankLang1140 P Tylko co dalej z tym. Byc moze sa to kluczowe dane. Jak pisalem wyzej, wszystkie pola hidden, ktore sa ustawiane po zaladowaniu strony logowania orzymuja jakies wartosci maja te wartosci przypisane. Czyli otwiera, wyszukuje wartosci, nadaje zmiennym w form te wartosci i wysylam. Przypuszczam, ze javascript i cookie tez ma tu cos do powiedzenia. |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Curl sam te ciacha potem wysle [ale mozesz miec takie ustawione JavaScriptem, ktorych curl nie obsluzy]
Zobacz jakie ciacha sa ustawiane responsem: Kod Set-Cookie: .... a jakie potem wysylane w requescie Kod Cookie:... jak te same to nie ma JSowych ciach Wyslij formularz logowania i zobacz jakie dane ida POST'em, przez co nie musisz [prawdopodobnie] analizaowac id JS'a, tylko podstawiasz odpowiednie dane na sztywno. i odtworz "wszystkie" naglowki Kod 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 bo czasem te dane tez weryfikuja w czasie logowania. |
|
|
![]()
Post
#5
|
|
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) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 30.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Któryś raz przymierzam się do tego i zawsze natrafiam na ten temat i mi się odechciewa:)
Ostatnio przyszła mi do głowy trochę inna metoda, żeby zamiast CURL zastosować AutoIt http://www.autoitscript.com/autoit3/index.shtml - jest bardzo prosty w obsłudze. Za pomocą AutoIt zgrywamy sobie na dysk historię z mBanku w postaci CSV, następnie upload pliku na serwer gdzie już mamy PHP, potem tylko http://pl2.php.net/fgetcsv i do bazy. Biorąc pod uwagę ciągłe zmiany jakie robi mBank to w ten sposób będzie je najłatwiej śledzić, może nawet ich nie zauważymy. Drugie rozwiązanie to zamówienie w mBanku wysyłania historii na skrzynkę mailową, a następnie za pomocą imap wchodzisz na skrzynkę pobierasz maila od mBanku, parsujesz i do bazy. Wada jest taka, że mBank taki mail wysyła tylko raz dziennie z historią kończącą się na dniu wczorajszym - tak więc dla ewentualnych klientów np sklepu internetowego oznacza to wszystko o jeden dzień później. I ostatni pomysł to zamawiamy sobie usługę informowania przez sms, potem http://www.gnokii.org/ i do bazy. I jeszcze jeden sposób to darmowy http://www.eportfel.com/?q=ePortfel |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 0 Dołączył: 22.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
mBank raczej jest zabezpieczony przed takimi rzeczami.
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Widziałeś datę ? Odgrzewasz stary kotlet.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 30.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
To bardzo ważny kotlet:) i wymaga podgrzewania, aż w końcu zauważy go dział IT z mBanku (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 18.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie, taki stary kotlet a wciąż aktualny. Ludzie na wycieczki w kosmos latają a za górami za lasami w ciemnogrodzie pewien dział IT w pewnym banku wciąż nie zauważył, że zwykłemu klientowi potrzebne jest API do pobierania historii operacji... eh....
Ten post edytował kudawa666 18.12.2010, 16:30:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 11:05 |