2013-08-23 137 views
0

幾天,現在我試圖登錄到使用捲曲特定網站的ASPX網站。在寫在ASP.net嘗試登錄使用PHP和捲曲

的網站和我使用PHP 5.x的

這裏是我試過到目前爲止沒有成功:

$url = "https://intouch.techdata.com/default.aspx?countrycode=&CssStyleSheet=default.css&CultureCode=&local_url=&MPSearchId=&Culture=&cos="; 
    $cookie_file_path = 'cookies.txt'; 
    $agent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
    curl_setopt($ch, CURLOPT_POSTREDIR, 2); 
    curl_setopt($ch, CURLOPT_SSLVERSION, 3); 
    curl_setopt($ch, CURLOPT_POST, 1); 

    $post_data['__VIEWSTATE'] = "/wEPDwUKLTg1MDYwODIwOA9kFgRmDxYCHgRocmVmBRcvaW1hZ2VzL2RlZmF1bHQuY3NzP3Y9M2QCAQ9kFhgCAw8PFgIeBFRleHQFKldlbGNvbWUgdG8gdGhlIE9ubGluZSBQcm9kdWN0IENhdGFsb2d1ZSBvZmRkAgUPDxYCHwEFIVJlZ2lzdGVyZWQgdXNlcnMgZW 
    50ZXIgPGJyPiBoZXJlOmRkAgsPFgIeB1Zpc2libGVoFgICAQ8PFgIfAQUJUGFzc3dvcmQ6ZGQCDQ8PZBYCHgxhdXRvY29tcGxldGUFA29mZmQCDw8PFgIfAQUPQWNjb3VudCBOdW1iZXI6ZGQCEQ8PFgIfAQUJVXNlcm5hbWU6ZGQCEw8PFgIfAQUJUGFzc3dvcmQ6ZGQCFQ8PFgIfAQUFTG9naW4WAh4H 
    b25jbGljawWaAWphdmFzY3JpcHQ6cmV0dXJuIFZhbGlkYXRvcignVXNlcm5hbWU6JywnUGxlYXNlIGVudGVyIGFuIGFjY291bnQgbnVtYmVyJywnUGxlYXNlIGVudGVyIHlvdXIgdXNlcm5hbWUnLCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBwYXNzd29yZCcsJzAnKTtkAhcPDxY 
    CHwEFBUxvZ2luFgIfBAWaAWphdmFzY3JpcHQ6cmV0dXJuIFZhbGlkYXRvcignVXNlcm5hbWU6JywnUGxlYXNlIGVudGVyIGFuIGFjY291bnQgbnVtYmVyJywnUGxlYXNlIGVudGVyIHlvdXIgdXNlcm5hbWUnLCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBwYXNzd29yZCcsJzAnKT 
    tkAhkPDxYCHwEFBVJlc2V0FgIfBAUcamF2YXNjcmlwdDpyZXR1cm4gZm5SZXNldCgpO2QCHQ8PFgIfAQUOUGFzc3dvcmQgbG9zdD8WBB8EBZoBamF2YXNjcmlwdDpyZXR1cm4gVmFsaWRhdG9yKCdVc2VybmFtZTonLCdQbGVhc2UgZW50ZXIgYW4gYWNjb3VudCBudW1iZXInLCdQbGVhc2UgZW50ZXIgeW 
    91ciB1c2VybmFtZScsJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIHBhc3N3b3JkJywnMScpOx8ABTRqYXZhc2NyaXB0OmdvKCdERUZBVUxUQ2hwLkNTUycsJycsJ2RlZmF1bHQuY3NzJywnJyk7ZAIfDw8WBB8BBRBCZWNvbWUgYSBQYXJ0bmVyHwJoFgIfAAU0amF2YXNjcmlwdDpCZW 
    NvbWVBUGFydG5lcigncD1CZWNvbWVQYXJ0bmVyJmM9SG9tZScpO2RkxaBIRC+v+vJslZdN4xAvkZL9HCY="; 
    $post_data['__EVENTVALIDATION='] = "/wEWEALxt7yuBwKs+5bqDwKl1bKzCQK1qbSRCwLFp6CQBwLCi9reAwKgt7D9CgKY5fiZAQLnxpq/AgKT2dzTDQK7hrWFCgKsuviBAQLnw+O9BAKywsaqBgL43fTxBQLonLasDzE6BdS22kepzqbhlPQS//T5e2ty"; 
    $post_data['txtID'] = 'idnumber'; 
    $post_data['txtUserName'] = 'username'; 
    $post_data['txtDupPassword'] = 'password'; 
    $post_data['Session_ID'] = ''; 
    $post_data['sessionid'] = ''; 
    $post_data['errorCode'] = ''; 
    $post_data['hdnSavedSearch'] = ''; 
    $post_data['hdnProdIds'] = ''; 
    $post_data['hdnMPSearchId'] = ''; 
    $post_data['hdnDisplaytype'] = ''; 
    $post_data['hdnMode'] = ''; 
    $post_data['hdnProductid'] = ''; 
    $post_data['hdnQuantity'] = ''; 
    $post_data['hdnBanner'] = ''; 
    $post_data['cos'] = ''; 
    $post_data = http_build_query($post_data); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

      $out = curl_exec($ch); 
      echo $out; 

的事情是,我得到了一個服務器運行時錯誤作爲響應。我真的不知道我應該怎麼形成網址。對此有何幫助?

在此先感謝

+0

什麼是您的運行時錯誤? – wes

+0

感謝您的回答是這樣的錯誤:「/」應用 服務器錯誤。 運行時錯誤 描述:服務器上發生應用程序錯誤。此應用程序的當前自定義錯誤設置可防止遠程查看應用程序錯誤的細節(出於安全原因)。但是,它可以通過本地服務器上運行的瀏覽器來查看。 詳細信息:若要使此特定錯誤信息的細節是 – m33ts4k0z

+0

這是默認的ASP.NET錯誤頁 - 你需要在web.config中關閉自定義錯誤,看看哪些可能會給你一個更好地瞭解真正的錯誤問題 –

回答

0

編輯: 這裏的另一篇文章是關於捲曲:Trying to connect to ASPX site using CURL?

我不知道你怎麼可能正好與捲曲做到這一點,但它是比較容易張貼憑據在登錄一個網站,請參閱有關此事的帖子如下:

Programmatically logging into a site

Using c#/ASP.NET to programmatically fake a login to a website

的過程是這樣的:

(1)做一個GET請求的網頁 (2)抓住從響應收到 (3)發表的帖子中使用的URL __VIEWSTATE以下列格式所附所需憑證:

yourtargetwebsiteaddress.com/targetloginpage?__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={VS}&__EVENTVALIDATION={EV}&{UserNameControl}={UN}&{PasswordControl}={PW} 

WHERE

  • {VS}是在視圖從最初的請求
  • {EV}狀態是從初始請求的情況下驗證
  • {UserNameControl}是用戶名控件的ID,{UN}是你想發佈
  • {PasswordControl}的用戶名密碼控件的ID在網頁上,{PW}是您想要發佈的密碼
+0

我正是按照您的示例和上面鏈接的帖子中所述完成的。事情是,這個網站需要3憑證,而不僅僅是2。我確實發送他們所有3個表格,但它仍然不工作。使用fiddler我注意到,我手動按下登錄後出現的第一件事是一個名爲redirectpage.aspx的頁面。但不應該cURL照顧這種自動uppon重定向? – m33ts4k0z

+0

你爲它設置了一個選項嗎?我不完全確定它應該如何工作。 http://php.net/manual/en/function.curl-setopt.php – wes

+0

是的,這是curl_setopt($ ch,CURLOPT_POSTREDIR,2)的用途; 它重定向了302個請求。 – m33ts4k0z