| 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: 13 let
|
|||
0