Autor | Zpráva | ||
---|---|---|---|
Holiz Profil * |
#1 · Zasláno: 3. 10. 2013, 22:11:09
Zdravím,
pokouším se přihlásit na stránku dělanou v ASP.NET přes cURL. Používám na to tento script. Ten odesílá hidden proměnné "__VIEWSTATE" a "__EVENTVALIDATION". Eventvalidation jsem zrušil, nepotřebuji ho odesílat, ale potřebuji odesílat další 3 jiné hidden pole (konkrétně se jmenují "__EVENTTARGET", "__EVENTARGUMENT" a "__LASTFOCUS". Tady jsem ale narazil, script je neodesílá. Máte nějaký nápad, proč se neodesílají? PS.: Script jsem očistil od poznámek autora, aby sem byl kratší. <?php $urlLogin = "http://www.xxx.cz/login.aspx"; $urlSecuredPage = "http://www.xxx.cz/uvod.aspx"; $nameUsername='ctl00$cphmain$TextBoxjmeno'; $namePassword='ctl00$cphmain$TextBoxHeslo'; $nameLoginBtn='ctl00$cphmain$ButtonPrihlas'; $valUsername ='*'; $valPassword ='*'; $valLoginBtn ='Přihlásit'; $cookies = 'cookie.txt'; $regexViewstate = '/__VIEWSTATE\" value=\"(.*)\"/i'; function regexExtract($text, $regex, $regs, $nthValue) { if (preg_match($regex, $text, $regs)) { $result = $regs[$nthValue]; } else { $result = ""; } return $result; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $urlLogin); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $data=curl_exec($ch); $viewstate = regexExtract($data,$regexViewstate,$regs,1); $eventtarget = ""; $eventargument = ""; $lastfocus = ""; $postData = '__VIEWSTATE='.rawurlencode($viewstate) .'&__EVENTTARGET='.$eventtarget .'&__EVENTARGUMENT='.$eventargument .'&__LASTFOCUS='.$lastfocus .'&'.$nameUsername.'='.$valUsername .'&'.$namePassword.'='.$valPassword .'&'.$nameLoginBtn.'='.$valLoginBtn ; curl_setOpt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_URL, $urlLogin); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); $data = curl_exec($ch); curl_setOpt($ch, CURLOPT_POST, FALSE); curl_setopt($ch, CURLOPT_URL, $urlSecuredPage); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); $data = curl_exec($ch); echo $data; curl_close($ch); ?> Děkuji. |
||
juriad Profil |
#2 · Zasláno: 3. 10. 2013, 22:32:37
Holiz:
Jak (kterým nástrojem) jsi zjistil, že je neodesílá? A není to spíš tak, že je odesílá, ale jejich hodnota je prázdná? Hodnoty přiřazuješ na řádcích 36 -- 38. |
||
Holiz Profil * |
#3 · Zasláno: 3. 10. 2013, 22:39:15
To jsem zapomněl zmínit, omlouvám se. Mají být prázdné. Když se přihlásím ručně je ve zdrojovém kódu
<div class="aspNetHidden"> <form method="post" action="uvod.aspx" id="formbaka"> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" /> </div> Hodnotu viewstate jsem smazal, ostatní jsou takhle prázdné. Akorát teď koukám že tam nevidím ten lasfocus. No a když se přihlásím přes script, tak mi to na tom místě vyhodí <form method="post" action="uvod.aspx" id="formbaka"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="" /> |
||
Časová prodleva: 11 let
|
0