J'essaie de vous connecter à cette URL:
Request URL:http://www.kalahari.com/marketplace/default.aspx Request Method:POST Status Code:302 Found Request Headersview source Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Cache-Control:max-age=0 Connection:keep-alive Content-Length:2596 Content-Type:application/x-www-form-urlencoded Cookie:VISITORID=9840A7E31683480CB19A66FB8AA73BFC; ASP.NET_SessionId=foous3ftij3os2vvr1wbm3mm; __utma=160092839.590473234.1362995010.1362995010.1362995010.1; __utmc=160092839; __utmz=160092839.1362995010.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _SUPERFLY_nosample=1; shopperName=; signin=0; kalahariShopperId=922859656760417F99E83D5B1427115F; surfLang=ENG; prefLanguage=en-ZA; _chartbeat2=1yx62ww1m7xz1o84.1360134968807.1363000295875.00000000000001 Host:www.kalahari.com Origin:http://www.kalahari.com Referer:http://www.kalahari.com/marketplace/default.aspx User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22 Form Dataview sourceview URL encoded __EVENTTARGET: __EVENTARGUMENT: __VIEWSTATE:/wEPDwULLTEzODYxODcwMTMPZBYCZg9kFgJmD2QWAgIBD2QWCAICD2QWBAIDDw8WAh4LTmF2aWdhdGVVcmwFNH4vcGlwZWxpbmUvc2lnbmluLmFzcHg/UmV0dXJuVVJMPS9zZWN1cmUvbWFya2V0cGxhY2VkZAIHDxYCHgdWaXNpYmxlaBYCAgEPDxYCHwFoZGQCBA9kFgICAQ9kFgICAQ8WAh8BaBYCAgEPZBYQAgEPDxYGHghDc3NDbGFzcwULYWN0aXZlX2xpbmseB0VuYWJsZWRnHgRfIVNCAgJkZAIDDw8WBh8CBQVsaW5rcx8DZx8EAgJkZAIFDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAgcPDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCCQ8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAILDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAg0PDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCDw8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAIFD2QWAgIBD2QWBgIJDxAPZBYCHgdvbkNsaWNrBYQBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luUmFkaW9CdG5ZZXMoY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAgsPEA9kFgIfBQWDAWphdmFzY3JpcHQ6VmFsaWRhdGVMb2dpblJhZGlvQnRuTm8oY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAhUPD2QWAh8FBdMBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luKCdjdGwwMF9jdGwwMF9jcGxoTWFpbl9jcGxoQ29udGVudF9sYmxSZXN1bHQnLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3R4dFBhc3N3b3JkLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkWWVzLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkTm8pO2QCBg9kFgICBQ8PFgIfAAUafi9waXBlbGluZS9vcmRlcl9saXN0LmFzcHhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAwUvY3RsMDAkY3RsMDAkY3BsaE1haW4kY3BsaENvbnRlbnQkcmRsUGFzc3dvcmRZZXMFLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm8FLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm99/wuPOuNOonYg5XWvf3RGR1YVkw== __EVENTVALIDATION:/wEWDQLsuI7QDgKnpLoxApD7nfEPAvLAqqUGAp35/akJAqGiqqYPAsXC5NUHAsHJ5OMCAovxoc8LArq0mqAKApm+rVoC9dLe0Q8C5IvEsAlYqPIdcrZvBZcvYav7ATMf4Nhbfg== ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail:XXXXXXXXX ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal:Password ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPassword:XXXXXXXXXXX ctl00$ctl00$ucMarketPlaceSupportNavigation$btnSigninTop:Sign in ctl00$ctl00$cplhMain$cplhContent$txtEmail:Email address ctl00$ctl00$cplhMain$cplhContent$rdlPasswordYes:rdlPasswordYes ctl00$ctl00$cplhMain$cplhContent$txtPasswordTextNormal:Password ctl00$ctl00$cplhMain$cplhContent$txtPassword: ctl00$ctl00$cplhMain$cplhContent$hdnEmailDefault:Email address ctl00$ctl00$cplhMain$cplhContent$hdnPasswordDefault:Password Response Headersview source Cache-Control:private, no-cache="Set-Cookie" Content-Length:146 Content-Type:text/html; charset=utf-8 Date:Mon, 11 Mar 2013 11:11:57 GMT Etag: Location:/marketplace/default.aspx Server:Microsoft-IIS/6.0 Set-Cookie:.KALAHARINETAUTH=782A6F442823F8148FB113BA0BAF3A9A8DE253762A4ACFAA5E911E4721166F0EEC6A1891755133AADD28654CF0DAE3880CC2B84260F0B915C07897909CFB071495AF8EF05D1BD678DEE1933FCB08E5ECB1CF76462900681C7D4AE963C151E3079D95FBAD6466F0528787455A951D5EC0DA26F0E6CAA341E4C717D7F3BC01D182F488F47F; domain=.kalahari.com; path=/; HttpOnly Set-Cookie:surfLang=ENG; domain=.kalahari.com; expires=Sat, 11-Mar-2023 11:11:57 GMT; path=/ Set-Cookie:prefLanguage=en-ZA; domain=www.kalahari.com; path=/ Set-Cookie:signin=1; domain=kalahari.com; path=/ Set-Cookie:tempshopperid=922859656760417F99E83D5B1427115F; domain=kalahari.com; path=/ Set-Cookie:kalahariShopperId=54B14971F72D426BA02DEF3A3D99DC93; domain=kalahari.com; expires=Sun, 17-Jan-2038 22:00:00 GMT; path=/ Set-Cookie:shopperName=XXXX; domain=kalahari.com; path=/ Set-Cookie:kalahariShopperEmail=XXX@XXXX.XXX; domain=kalahari.com; path=/ X-AspNet-Version:2.0.50727 X-Powered-By:ASP.NET
3 Réponses :
Ceci est un jeton CRSF très probablement. Vous aurez l'appel que la page utilise ensuite la valeur renvoyée dans votre demande de connexion. Dropbox utilise un processus similaire. Si vous attrapez le script DropBox Upploader de https://github.com/jakajancar/dropboxduploader/ vous pouvez voyez comment ça fait cela. P>
Introduction forte> La raison possible Pourquoi votre script ne fonctionne pas comme suit P> Une demande longue complète ressemble à ceci p> testé et fonctionne parfaitement bien ... p> p>
__ ViewState code> li>
__ eventvalidation code> li>
CTL00 $ CTL00 $ UCMarketplacsupportNavigation $ txtmptopsigninpasswordtextNormal Code> Pour mot de passe au lieu de
CTL00 $ CTL00 $ UCMarketplacsInupportNavigation $ TXTMPTROSIGNIPASSWORD LI> LI>
Pour ajouter à cela, __ eventValidation code> est délibérément destiné à empêcher le type de raclage que vous tentez. Une nouvelle valeur sera générée chaque fois que tout ce qui est exécuté sur le serveur, non seulement lorsque l'ensemble de la page rend, qui peut inclure la modification des valeurs de boîte déroulante individuelle par exemple.
@Baba, j'ai essayé votre code et obtenir une erreur interne. Devrais-je ajouter les valeurs du champ caché moi-même ou il sera automatiquement rempli sur chargé?
Il montre que __ eventValidation code> est invalide; @Imsop a raison. Mais comment résoudre-le?
C'est génial!! :RÉ
Je voulais essayer d'essayer de faire fonctionner votre code, voir ci-dessous. J'ai quelque var_dump et commentaires dans le code de ce que je fais.
<?php $username = 'test@example.com'; $password = 'example'; $loginUrl = 'http://www.kalahari.com/marketplace/default.aspx'; //on windows server you need full path or its not even used. $cookie = dirname(__FILE__) . '\cookies1.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $loginUrl ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt($ch, CURLOPT_COOKIEJAR , $cookie); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); curl_setopt($ch, CURLOPT_HEADER, FALSE ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $ret = curl_exec($ch); //access login page //check the contents of the cookie file. the sessionID, visitorID and kalaharishooperID should be the same with each refresh. var_dump(implode('', file($cookie))); //now get the viewstate from the value //could be better with regex or anything, but this works. $content = explode('value="', stristr($ret, 'id="__VIEWSTATE"')); $viewstate = substr($content[1], 0, strpos($content[1], '"')); var_dump($viewstate); //now get the EVENTVALIDATION from the value //could be better with regex or anything, but this works. $content = explode('value="', stristr($ret, 'id="__EVENTVALIDATION"')); $validation = substr($content[1], 0, strpos($content[1], '"')); var_dump($validation); //define post fields //i removed all fields that are not required for the post $postfields = array( "__VIEWSTATE" => rawurlencode($viewstate), "__EVENTVALIDATION" => rawurlencode($validation), "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInEmail" => rawurlencode($username), "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPasswordTextNormal" => "Password", "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPassword" => rawurlencode($password), "ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24btnSigninTop" => "Sign+in", ); var_dump($postfields); //I created the string myself for the post, else I got an error because we already encoded the variable names. $p = ""; foreach($postfields as $k=>$v) { $p .= $k.'='.$v.'&'; } //do the new post curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $p); $ret = curl_exec($ch);//Get result after login page. //this contains 'You have entered an invalid password' so it works as expected. var_dump($ret); ?>
rawurlencode () code> résultera "Les informations de l'état sont invalides pour cette page et peuvent être corrompues".