本文介绍了尝试使用CURL连接到ASPX网站?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要登录此网址:

  http://www.kalahari.com/marketplace/default。 aspx 

提交的两个字段标记为:

  ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInEmail 
ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPasswordTextNormal

我到目前为止尝试使用的代码:

  $ username =' XXXXXXX'; 
$ password ='XXXXXXX';

$ loginUrl ='http://www.kalahari.com/marketplace/default.aspx';
$ cookie ='cookies.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); //访问登录页面

//收集所有POST字段
$ postfields = array();
$ postfields ['ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInEmail'] = $ username;
$ postfields ['ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPasswordTextNormal'] = $ password;

curl_setopt($ ch,CURLOPT_POST,1);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ postfields);
$ ret = curl_exec($ ch); //在登录页面后获取结果。

print $ ret;

但这只会让我回到原来的登录页面,甚至没有错误消息。



然后,我看看了什么是发布,我看到:

 请求URL:http://www.kalahari.com/marketplace/default.aspx 
请求方法:POST
状态代码:302 Found
请求Headersview源
接受: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
连接: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
主机:www.kalahari.com
原产地:http://www.kalahari.com
参考资料:http://www.kalahari.com/marketplace /default.aspx
用户代理:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.22(KHTML,像Gecko)Chrome / 25.0.1364.152 Safari / 537.22
Form Dataview sourceview URL encoded
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE:/ wEPDwULLTEzODYxODcwMTMPZBYCZg9kFgJmD2QWAgIBD2QWCAICD2QWBAIDDw8WAh4LTmF2aWdhdGVVcmwFNH4vcGlwZWxpbmUvc2lnbmluLmFzcHg / UMV / wuPOuNOonYg5XWvf3RGR1YVkw ==
__EVENTVALIDATION:/ wEWDQLsuI7QDgKnpLoxApD7nfEPAvLAqqUGAp35 / akJAqGiqqYPAsXC5NUHAsHJ5OMCAovxoc8LArq0mqAKApm + rVoC9dLe0Q8C5IvEsAlYqPIdcrZvBZcvYav7ATMf4Nhbfg ==
$ ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation txtMPTopSignInEmail: XXXXXXXXX
ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPasswordTextNormal:密码
ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPassword:XXXXXXXXXXX
ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ btnSigninTop:登录
ctl00 $ ctl00 $ cplhMain $ cplhContent $ txtEmail:电子邮件地址
ctl00 $ ctl00 $ cplhMain $ cplhContent $ rdlPasswordYes:rdlPasswordYes
ctl00 $ ctl00 $ cplhMain $ cplhContent $ txtPasswordTextNormal:Password
ctl00 $ ctl00 $ cplhMain $ cplhContent $ txtPassword :
ctl00 $ ctl00 $ cplhMain $ cplhContent $ hdnEmailDefault:电子邮件地址
ctl00 $ ctl00 $ cplhMain $ cplhContent $ hdnPasswordDefault:密码
响应头信息源
高速缓存控制:私有,无-cache =Set-Cookie
Content-Length:146
Content-Type:text / html; charset = utf-8
Date:Mon,11 Mar 2013 11:11:57 GMT
Etag:
位置:/marketplace/default.aspx
服务器: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,20-Jan-2038 22:00:00 GMT; path = /
Set-Cookie:shopperName = XXXX; domain = kalahari.com; path = /
Set-Cookie:[email protected]; domain = kalahari.com; path = /
X-AspNet-Version:2.0.50727
X-Powered-By:ASP.NET

看起来我应该提交的不仅仅是用户名和密码。

解决方案
strong>简介



脚本不工作的可能原因如下




  • 缺少 __ VIEWSTATE

  • 缺少 __ EVENTVALIDATION

  • 无效的用户代理

  • 使用 ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPasswordTextNormal $ c> ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPassword

  • 不完整的讯息栏位

  • 重复卷标要求

  • 登录过程中缺少Coolie



典型的服务器请求 b
$ b

一个完整的请求看起来像这样

  POST http://www.kalahari。 com / marketplace / default.aspx HTTP / 1.1 
主机:www.kalahari.com
连接:keep-alive
内容长度:2584
缓存控制:max-age = 0
Accept:text / html,application / xhtml + xml,application / xml; q = 0.9,* / *; q = 0.8
原产地:http://www.kalahari.com
User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.22(KHTML,like Gecko)Chrome / 25.0.1364.160 Safari / 537.22
Content-Type:application / x-www-form-urlencoded
Referer:http://www.kalahari。 com / marketplace / default.aspx
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en; q = 0.8
Accept-Charset:ISO-8859-1 ,utf-8; q = 0.7,*; q = 0.3
Cookie:ASP.NET_SessionId = t2dopenbp5zdfojmg1sd4m55; VISITORID = ECE2335BD47344E29A3D24E04FA31777; mpshopperid = A2E19BEB4D77484A89B9CD64BBB9C294; sign_up_track = sign_up; shopperName =; signin = 0; kalahariShopperId = 9D0B941AADCC48CA8ACB071C840A9CEB; __utma = 46148088.1484253925.1363278451.1363278451.1363278451.1; __utmb = 46148088.8.10.1363278451; __utmc = 46148088; __utmz = 46148088.1363278451.1.1.utmcsr =(direct)| utmccn =(direct)| utmcmd =(none); surfLang = ENG; prefLanguage = en-ZA; _chartbeat2 = fn9a2z0breekvh98.1363278407516.1363278713879.00000000000001

__EVENTTARGET =安培; __ EVENTARGUMENT =安培; __ VIEWSTATE =%2FwEPDwULLTEzODYxODcwMTMPZBYCZg9kFgJmD2QWAgIBD2QWCAICD2QWBAIDDw8WAh4LTmF2aWdhdGVVcmwFNH4vcGlwZWxpbmUvc2lnbmluLmFzcHg %% 2FwuPOuNOonYg5XWvf3RGR1YVkw%3D%3D&放大器; __ EVENTVALIDATION =%2FwEWDQLsuI7QDgKnpLoxApD7nfEPAvLAqqUGAp35%2FakJAqGiqqYPAsXC5NUHAsHJ5OMCAovxoc8LArq0mqAKApm%2BrVoC9dLe0Q8C5IvEsAlYqPIdcrZvBZcvYav7ATMf4Nhbfg%3D%3D&放大器; ctl00% 24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInEmail = XXXXXXXXXX%40rmqkr.net&放大器; ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPasswordTextNormal =密码和放大器; ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPassword = XXXXXXXXXX&放大器; ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24btnSigninTop =符号+在&放大器; ctl00%24ctl00%24cplhMain% 24cplhContent%24txtEmail = Email + address& ctl00%24ctl00%24cplhMain%24cplhContent%24rdlPasswordYes = rdlPasswordYes& ctl00%24ctl00%24cplhMain%24cplhContent%24txtPasswordTextNormal = Password& ctl00%24ctl00%24cplhMain%24cplhContent%24txtPassword =& ctl00%24ctl00%24cplhMain% 24cplhContent%24hdnEmailDefault =电子邮件+地址& ctl00%24ctl00%24cplhMain%24cplhContent%24hdnPasswordDefault =密码

使用卷曲

  $ url =http://www.kalahari.com/marketplace/default。 aspx; 
$ ckfile = tempnam(/ tmp,CURLCOOKIE);
$ useragent ='Mozilla / 5.0(Windows; U; Windows NT 6.1; en-US)AppleWebKit / 533.2(KHTML,像Gecko)Chrome / 5.0.342.3 Safari / 533.2'

$ username =XXXXXXXXXX;
$ password =XXXXXXXXXX;


$ f = fopen('log.txt','w'); //文件写入请求头以进行调试目的

/ **
获取__VIEWSTATE& __EVENTVALIDATION
* /
$ ch = curl_init($ url);
curl_setopt($ ch,CURLOPT_COOKIEJAR,$ ckfile);
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ ch,CURLOPT_USERAGENT,$ useragent);

$ html = curl_exec($ ch);

curl_close($ ch);

preg_match('〜< input type =hiddenname =__ VIEWSTATEid =__ VIEWSTATEvalue =(。*?)/>〜',$ html,$ viewstate );
preg_match('〜< input type =hiddenname =__ EVENTVALIDATIONid =__ EVENTVALIDATIONvalue =(。*?)/>〜',$ html,$ eventValidation);

$ viewstate = $ viewstate [1];
$ eventValidation = $ eventValidation [1];



/ **
开始登录过程
* /
$ ch = curl_init();

curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,false);
curl_setopt($ ch,CURLOPT_COOKIEJAR,$ ckfile);
curl_setopt($ ch,CURLOPT_COOKIEFILE,$ ckfile);
curl_setopt($ ch,CURLOPT_HEADER,FALSE);
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ ch,CURLOPT_REFERER,$ url);
curl_setopt($ ch,CURLOPT_VERBOSE,1);
curl_setopt($ ch,CURLOPT_STDERR,$ f);
curl_setopt($ ch,CURLOPT_USERAGENT,$ useragent);

//收集所有POST字段
$ postfields = array();
$ postfields ['__ EVENTTARGET'] =;
$ postfields ['__ EVENTARGUMENT'] =;
$ postfields ['__ VIEWSTATE'] = $ viewstate;
$ postfields ['__ EVENTVALIDATION'] = $ eventValidation;
$ postfields ['ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInEmail'] = $ username;
$ postfields ['ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPasswordTextNormal'] =密码;
$ postfields ['ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ txtMPTopSignInPassword'] = $ password;
$ postfields ['ctl00 $ ctl00 $ ucMarketPlaceSupportNavigation $ btnSigninTop'] ='登录';
$ postfields ['ctl00 $ ctl00 $ cplhMain $ cplhContent $ txtEmail'] ='电子邮件地址';
$ postfields ['ctl00 $ ctl00 $ cplhMain $ cplhContent $ rdlPasswordYes'] ='密码';
$ postfields ['ctl00 $ ctl00 $ cplhMain $ cplhContent $ txtPassword'] ='';
$ postfields ['ctl00 $ ctl00 $ cplhMain $ cplhContent $ hdnEmailDefault'] ='电子邮件地址';
$ postfields ['ctl00 $ ctl00 $ cplhMain $ cplhContent $ hdnPasswordDefault'] ='密码';

curl_setopt($ ch,CURLOPT_POST,1);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ postfields);
$ ret = curl_exec($ ch); //在登录页面后获取结果。

print $ ret;

测试完全正常...


I am trying to log into this url:

http://www.kalahari.com/marketplace/default.aspx

The two fields that are being submitted are labelled:

ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail
ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal

The code I've tried to use so far:

$username     = 'XXXXXXX';
$password     = 'XXXXXXX';

$loginUrl     = 'http://www.kalahari.com/marketplace/default.aspx';
$cookie  = 'cookies.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

// Collecting all POST fields
$postfields = array();
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail'] = $username;
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal'] = $password;

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$ret = curl_exec($ch);//Get result after login page.

print $ret;

This however only takes me back to the original login page... not even with an error message.

I then had a look at what is getting posted, and I saw:

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:[email protected]; domain=kalahari.com; path=/
X-AspNet-Version:2.0.50727
X-Powered-By:ASP.NET

It looks like I'm supposed to be submitting much more than just the username and password. What exactly must I post and how do I post something like a "viewstate" that isn't a fixed value?

解决方案

Introduction

The possible reason why your script is not working are as follows

  • Missing __VIEWSTATE
  • Missing __EVENTVALIDATION
  • Invalid User Agent
  • Using ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal for password instead of ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPassword
  • Incomplete Post Field
  • Duplicate Curl Request
  • Missing Coolie in Login process

A Typical server request

A full long request looks like this

POST http://www.kalahari.com/marketplace/default.aspx HTTP/1.1
Host: www.kalahari.com
Connection: keep-alive
Content-Length: 2584
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Origin: http://www.kalahari.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22
Content-Type: application/x-www-form-urlencoded
Referer: http://www.kalahari.com/marketplace/default.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: ASP.NET_SessionId=t2dopenbp5zdfojmg1sd4m55; VISITORID=ECE2335BD47344E29A3D24E04FA31777; mpshopperid=A2E19BEB4D77484A89B9CD64BBB9C294; sign_up_track=sign_up; shopperName=; signin=0; kalahariShopperId=9D0B941AADCC48CA8ACB071C840A9CEB; __utma=46148088.1484253925.1363278451.1363278451.1363278451.1; __utmb=46148088.8.10.1363278451; __utmc=46148088; __utmz=46148088.1363278451.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); surfLang=ENG; prefLanguage=en-ZA; _chartbeat2=fn9a2z0breekvh98.1363278407516.1363278713879.00000000000001

__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTEzODYxODcwMTMPZBYCZg9kFgJmD2QWAgIBD2QWCAICD2QWBAIDDw8WAh4LTmF2aWdhdGVVcmwFNH4vcGlwZWxpbmUvc2lnbmluLmFzcHg%2FUmV0dXJuVVJMPS9zZWN1cmUvbWFya2V0cGxhY2VkZAIHDxYCHgdWaXNpYmxlaBYCAgEPDxYCHwFoZGQCBA9kFgICAQ9kFgICAQ8WAh8BaBYCAgEPZBYQAgEPDxYGHghDc3NDbGFzcwULYWN0aXZlX2xpbmseB0VuYWJsZWRnHgRfIVNCAgJkZAIDDw8WBh8CBQVsaW5rcx8DZx8EAgJkZAIFDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAgcPDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCCQ8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAILDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAg0PDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCDw8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAIFD2QWAgIBD2QWBgIJDxAPZBYCHgdvbkNsaWNrBYQBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luUmFkaW9CdG5ZZXMoY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAgsPEA9kFgIfBQWDAWphdmFzY3JpcHQ6VmFsaWRhdGVMb2dpblJhZGlvQnRuTm8oY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BsaE1haW5fY3BsaENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAhUPD2QWAh8FBdMBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luKCdjdGwwMF9jdGwwMF9jcGxoTWFpbl9jcGxoQ29udGVudF9sYmxSZXN1bHQnLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3R4dFBhc3N3b3JkLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkWWVzLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkTm8pO2QCBg9kFgICBQ8PFgIfAAUafi9waXBlbGluZS9vcmRlcl9saXN0LmFzcHhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAwUvY3RsMDAkY3RsMDAkY3BsaE1haW4kY3BsaENvbnRlbnQkcmRsUGFzc3dvcmRZZXMFLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm8FLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm99%2FwuPOuNOonYg5XWvf3RGR1YVkw%3D%3D&__EVENTVALIDATION=%2FwEWDQLsuI7QDgKnpLoxApD7nfEPAvLAqqUGAp35%2FakJAqGiqqYPAsXC5NUHAsHJ5OMCAovxoc8LArq0mqAKApm%2BrVoC9dLe0Q8C5IvEsAlYqPIdcrZvBZcvYav7ATMf4Nhbfg%3D%3D&ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInEmail=XXXXXXXXXX%40rmqkr.net&ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPasswordTextNormal=Password&ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24txtMPTopSignInPassword=XXXXXXXXXX&ctl00%24ctl00%24ucMarketPlaceSupportNavigation%24btnSigninTop=Sign+in&ctl00%24ctl00%24cplhMain%24cplhContent%24txtEmail=Email+address&ctl00%24ctl00%24cplhMain%24cplhContent%24rdlPasswordYes=rdlPasswordYes&ctl00%24ctl00%24cplhMain%24cplhContent%24txtPasswordTextNormal=Password&ctl00%24ctl00%24cplhMain%24cplhContent%24txtPassword=&ctl00%24ctl00%24cplhMain%24cplhContent%24hdnEmailDefault=Email+address&ctl00%24ctl00%24cplhMain%24cplhContent%24hdnPasswordDefault=Password

To Use Curl

$url = "http://www.kalahari.com/marketplace/default.aspx";
$ckfile = tempnam("/tmp", "CURLCOOKIE");
$useragent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2';

$username = "XXXXXXXXXX";
$password = "XXXXXXXXXX";


$f = fopen('log.txt', 'w'); // file to write request header for debug purpose

/**
    Get __VIEWSTATE & __EVENTVALIDATION
 */
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

$html = curl_exec($ch);

curl_close($ch);

preg_match('~<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />~', $html, $viewstate);
preg_match('~<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*?)" />~', $html, $eventValidation);

$viewstate = $viewstate[1];
$eventValidation = $eventValidation[1];



/**
 Start Login process
 */
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $f);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

// Collecting all POST fields
$postfields = array();
$postfields['__EVENTTARGET'] = "";
$postfields['__EVENTARGUMENT'] = "";
$postfields['__VIEWSTATE'] = $viewstate;
$postfields['__EVENTVALIDATION'] = $eventValidation;
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail'] = $username;
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal'] = "Password";
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPassword'] = $password;
$postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$btnSigninTop'] = 'Sign in';
$postfields['ctl00$ctl00$cplhMain$cplhContent$txtEmail'] = 'Email address';
$postfields['ctl00$ctl00$cplhMain$cplhContent$rdlPasswordYes'] = 'Password';
$postfields['ctl00$ctl00$cplhMain$cplhContent$txtPassword'] = '';
$postfields['ctl00$ctl00$cplhMain$cplhContent$hdnEmailDefault'] = 'Email address';
$postfields['ctl00$ctl00$cplhMain$cplhContent$hdnPasswordDefault'] = 'Password';

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$ret = curl_exec($ch); // Get result after login page.

print $ret;

Tested and works perfectly fine ...

这篇关于尝试使用CURL连接到ASPX网站?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-25 12:17