php – 尝试使用CURL连接到ASPX网站?

前端之家收集整理的这篇文章主要介绍了php – 尝试使用CURL连接到ASPX网站?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想尝试登录这个网址:
  1. http://www.kalahari.com/marketplace/default.aspx

提交的两个字段标记为:

  1. ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail
  2. ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal

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

  1. $username = 'XXXXXXX';
  2. $password = 'XXXXXXX';
  3.  
  4. $loginUrl = 'http://www.kalahari.com/marketplace/default.aspx';
  5. $cookie = 'cookies.txt';
  6.  
  7. $ch = curl_init();
  8.  
  9. curl_setopt($ch,CURLOPT_URL,$loginUrl );
  10. curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE );
  11. curl_setopt($ch,CURLOPT_RETURNTRANSFER,CURLOPT_COOKIEJAR,$cookie);
  12. curl_setopt($ch,CURLOPT_COOKIEFILE,CURLOPT_HEADER,FALSE );
  13. curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
  14. $ret = curl_exec($ch); //access login page
  15.  
  16. // Collecting all POST fields
  17. $postfields = array();
  18. $postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail'] = $username;
  19. $postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal'] = $password;
  20.  
  21. curl_setopt($ch,CURLOPT_POST,1);
  22. curl_setopt($ch,CURLOPT_POSTFIELDS,$postfields);
  23. $ret = curl_exec($ch);//Get result after login page.
  24.  
  25. print $ret;

然而,这只会让我回到原始登录页面……甚至没有错误消息.

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

  1. Request URL:http://www.kalahari.com/marketplace/default.aspx
  2. Request Method:POST
  3. Status Code:302 Found
  4. Request Headersview source
  5. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  6. Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
  7. Accept-Encoding:gzip,deflate,sdch
  8. Accept-Language:en-US,en;q=0.8
  9. Cache-Control:max-age=0
  10. Connection:keep-alive
  11. Content-Length:2596
  12. Content-Type:application/x-www-form-urlencoded
  13. 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
  14. Host:www.kalahari.com
  15. Origin:http://www.kalahari.com
  16. Referer:http://www.kalahari.com/marketplace/default.aspx
  17. User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML,like Gecko) Chrome/25.0.1364.152 Safari/537.22
  18. Form Dataview sourceview URL encoded
  19. __EVENTTARGET:
  20. __EVENTARGUMENT:
  21. __VIEWSTATE:/wEPDwULLTEzODYxODcwMTMPZBYCZg9kFgJmD2QWAgIBD2QWCAICD2QWBAIDDw8WAh4LTmF2aWdhdGVVcmwFNH4vcGlwZWxpbmUvc2lnbmluLmFzcHg/UmV0dXJuVVJMPS9zZWN1cmUvbWFya2V0cGxhY2VkZAIHDxYCHgdWaXNpYmxlaBYCAgEPDxYCHwFoZGQCBA9kFgICAQ9kFgICAQ8WAh8BaBYCAgEPZBYQAgEPDxYGHghDc3NDbGFzcwULYWN0aXZlX2xpbmseB0VuYWJsZWRnHgRfIVNCAgJkZAIDDw8WBh8CBQVsaW5rcx8DZx8EAgJkZAIFDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAgcPDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCCQ8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAILDw8WBh8CBQ1kaXNhYmxlX2xpbmtzHwNoHwQCAmRkAg0PDxYGHwIFDWRpc2FibGVfbGlua3MfA2gfBAICZGQCDw8PFgYfAgUNZGlzYWJsZV9saW5rcx8DaB8EAgJkZAIFD2QWAgIBD2QWBgIJDxAPZBYCHgdvbkNsaWNrBYQBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luUmFkaW9CdG5ZZXMoY3RsMDBfY3RsMDBfY3BSAE1haW5fY3BSAENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BSAE1haW5fY3BSAENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAgsPEA9kFgIfBQWDAWphdmFzY3JpcHQ6VmFsaWRhdGVMb2dpblJhZGlvQnRuTm8oY3RsMDBfY3RsMDBfY3BSAE1haW5fY3BSAENvbnRlbnRfcmRsUGFzc3dvcmRZZXMsY3RsMDBfY3RsMDBfY3BSAE1haW5fY3BSAENvbnRlbnRfcmRsUGFzc3dvcmRObyk7ZGRkAhUPD2QWAh8FBdMBamF2YXNjcmlwdDpWYWxpZGF0ZUxvZ2luKCdjdGwwMF9jdGwwMF9jcGxoTWFpbl9jcGxoQ29udGVudF9sYmxSZXN1bHQnLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3R4dFBhc3N3b3JkLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkWWVzLGN0bDAwX2N0bDAwX2NwbGhNYWluX2NwbGhDb250ZW50X3JkbFBhc3N3b3JkTm8pO2QCBg9kFgICBQ8PFgIfAAUafi9waXBlbGluZS9vcmRlcl9saXN0LmFzcHhkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAwUvY3RsMDAkY3RsMDAkY3BSAE1haW4kY3BSAENvbnRlbnQkcmRsUGFzc3dvcmRZZXMFLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm8FLmN0bDAwJGN0bDAwJGNwbGhNYWluJGNwbGhDb250ZW50JHJkbFBhc3N3b3JkTm99/wuPOuNOonYg5XWvf3RGR1YVkw==
  22. __EVENTVALIDATION:/wEWDQLsuI7QDgKnpLoxApD7nfEPAvLAqqUGAp35/akJAqGiqqYPAsXC5NUHAsHJ5OMCAovxoc8LArq0mqAKApm+rVoC9dLe0Q8C5IvEsAlYqPIdcrZvBZcvYav7ATMf4Nhbfg==
  23. ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail:XXXXXXXXX
  24. ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal:Password
  25. ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPassword:XXXXXXXXXXX
  26. ctl00$ctl00$ucMarketPlaceSupportNavigation$btnSigninTop:Sign in
  27. ctl00$ctl00$cplhMain$cplhContent$txtEmail:Email address
  28. ctl00$ctl00$cplhMain$cplhContent$rdlPasswordYes:rdlPasswordYes
  29. ctl00$ctl00$cplhMain$cplhContent$txtPasswordTextNormal:Password
  30. ctl00$ctl00$cplhMain$cplhContent$txtPassword:
  31. ctl00$ctl00$cplhMain$cplhContent$hdnEmailDefault:Email address
  32. ctl00$ctl00$cplhMain$cplhContent$hdnPasswordDefault:Password
  33. Response Headersview source
  34. Cache-Control:private,no-cache="Set-Cookie"
  35. Content-Length:146
  36. Content-Type:text/html; charset=utf-8
  37. Date:Mon,11 Mar 2013 11:11:57 GMT
  38. Etag:
  39. Location:/marketplace/default.aspx
  40. Server:Microsoft-IIS/6.0
  41. Set-Cookie:.KALAHARINETAUTH=782A6F442823F8148FB113BA0BAF3A9A8DE253762A4ACFAA5E911E4721166F0EEC6A1891755133AADD28654CF0DAE3880CC2B84260F0B915C07897909CFB071495AF8EF05D1BD678DEE1933FCB08E5ECB1CF76462900681C7D4AE963C151E3079D95FBAD6466F0528787455A951D5EC0DA26F0E6CAA341E4C717D7F3BC01D182F488F47F; domain=.kalahari.com; path=/; HttpOnly
  42. Set-Cookie:surfLang=ENG; domain=.kalahari.com; expires=Sat,11-Mar-2023 11:11:57 GMT; path=/
  43. Set-Cookie:prefLanguage=en-ZA; domain=www.kalahari.com; path=/
  44. Set-Cookie:signin=1; domain=kalahari.com; path=/
  45. Set-Cookie:tempshopperid=922859656760417F99E83D5B1427115F; domain=kalahari.com; path=/
  46. Set-Cookie:kalahariShopperId=54B14971F72D426BA02DEF3A3D99DC93; domain=kalahari.com; expires=Sun,17-Jan-2038 22:00:00 GMT; path=/
  47. Set-Cookie:shopperName=XXXX; domain=kalahari.com; path=/
  48. Set-Cookie:kalahariShopperEmail=XXX@XXXX.XXX; domain=kalahari.com; path=/
  49. X-AspNet-Version:2.0.50727
  50. X-Powered-By:ASP.NET

看起来我应该提交的不仅仅是用户名和密码.我必须发布什么内容以及如何发布不是固定值的“viewstate”?

介绍

脚本无法正常工作的可能原因如下

>缺少__VIEWSTATE
>缺少__EVENTVALIDATION
>无效的用户代理
>使用ctl00 $ctl00 $ucMarketPlaceSupportNavigation $txtMPTopSignInPasswordTextNormal用于密码而不是ctl00 $ctl00 $ucMarketPlaceSupportNavigation $txtMPTopSignInPassword
>不完整的后场
>重复卷曲请求
>登录过程中缺少Coolie

典型的服务器请求

完整的长请求看起来像这样

  1. POST http://www.kalahari.com/marketplace/default.aspx HTTP/1.1
  2. Host: www.kalahari.com
  3. Connection: keep-alive
  4. Content-Length: 2584
  5. Cache-Control: max-age=0
  6. Accept: text/html,*/*;q=0.8
  7. Origin: http://www.kalahari.com
  8. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML,like Gecko) Chrome/25.0.1364.160 Safari/537.22
  9. Content-Type: application/x-www-form-urlencoded
  10. Referer: http://www.kalahari.com/marketplace/default.aspx
  11. Accept-Encoding: gzip,sdch
  12. Accept-Language: en-US,en;q=0.8
  13. Accept-Charset: ISO-8859-1,*;q=0.3
  14. 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
  15.  
  16. __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

使用卷曲

  1. $url = "http://www.kalahari.com/marketplace/default.aspx";
  2. $ckfile = tempnam("/tmp","CURLCOOKIE");
  3. $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';
  4.  
  5. $username = "XXXXXXXXXX";
  6. $password = "XXXXXXXXXX";
  7.  
  8.  
  9. $f = fopen('log.txt','w'); // file to write request header for debug purpose
  10.  
  11. /**
  12. Get __VIEWSTATE & __EVENTVALIDATION
  13. */
  14. $ch = curl_init($url);
  15. curl_setopt($ch,$ckfile);
  16. curl_setopt($ch,true);
  17. curl_setopt($ch,CURLOPT_USERAGENT,$useragent);
  18.  
  19. $html = curl_exec($ch);
  20.  
  21. curl_close($ch);
  22.  
  23. preg_match('~<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />~',$html,$viewstate);
  24. preg_match('~<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*?)" />~',$eventValidation);
  25.  
  26. $viewstate = $viewstate[1];
  27. $eventValidation = $eventValidation[1];
  28.  
  29.  
  30.  
  31. /**
  32. Start Login process
  33. */
  34. $ch = curl_init();
  35.  
  36. curl_setopt($ch,$url);
  37. curl_setopt($ch,false);
  38. curl_setopt($ch,FALSE);
  39. curl_setopt($ch,CURLOPT_REFERER,CURLOPT_VERBOSE,CURLOPT_STDERR,$f);
  40. curl_setopt($ch,$useragent);
  41.  
  42. // Collecting all POST fields
  43. $postfields = array();
  44. $postfields['__EVENTTARGET'] = "";
  45. $postfields['__EVENTARGUMENT'] = "";
  46. $postfields['__VIEWSTATE'] = $viewstate;
  47. $postfields['__EVENTVALIDATION'] = $eventValidation;
  48. $postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInEmail'] = $username;
  49. $postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPasswordTextNormal'] = "Password";
  50. $postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$txtMPTopSignInPassword'] = $password;
  51. $postfields['ctl00$ctl00$ucMarketPlaceSupportNavigation$btnSigninTop'] = 'Sign in';
  52. $postfields['ctl00$ctl00$cplhMain$cplhContent$txtEmail'] = 'Email address';
  53. $postfields['ctl00$ctl00$cplhMain$cplhContent$rdlPasswordYes'] = 'Password';
  54. $postfields['ctl00$ctl00$cplhMain$cplhContent$txtPassword'] = '';
  55. $postfields['ctl00$ctl00$cplhMain$cplhContent$hdnEmailDefault'] = 'Email address';
  56. $postfields['ctl00$ctl00$cplhMain$cplhContent$hdnPasswordDefault'] = 'Password';
  57.  
  58. curl_setopt($ch,$postfields);
  59. $ret = curl_exec($ch); // Get result after login page.
  60.  
  61. print $ret;

经过测试,效果非常好……

猜你在找的PHP相关文章