2010-06-03 81 views
2

我每天連接到一個網站收集一些統計信息,該網站運行.net使事情變得更加困難。我想要做的是將這個過程機械化。下載文件附加到標題與捲曲和Php

我去http://www.thesite.com:8080/statistics/Login.aspx?ReturnUrl=%2Fstatistics%2Fdataexport.ashx%3FReport%3D99,(返回的網址是/statistics/dataexport.ashx?Report=99解碼)。 Login.aspx顯示一個表單,我在其中輸入我的用戶/密碼,並在提交表單時dataexport.ashx開始直接下載文件。傳遞的文件名始終是statistics.csv。

我有這個實驗,現在幾天。有沒有任何資源或者是否有人對我下一步應該嘗試的某種暗示?

下面是我的一些代碼。

<?php 
// INIT CURL 
$ch = curl_init(); 

// SET URL FOR THE POST FORM LOGIN 
curl_setopt($ch, CURLOPT_URL, $url); 

// ENABLE HTTP POST 
curl_setopt ($ch, CURLOPT_POST, 1); 

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
$viewstate = urlencode('/wEPDwUKM123123daE2MGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFGG1fTG9naW4kTG9naW5JbWFnZUJ1dHASdasdRvbij2MVoasdasdYibEXm/eSdad4hS'); 
$eventval = urlencode('/wEWBAKMasd123LKJJKfdAvD8gd8KAoCt878OED00uk0pShTQHkXmZszVXtBJtVc='); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, "__VIEWSTATE=$viewstate"."__EVENTVALIDATION=$eventval&UserName=myuser&Password=mypassword"); 

// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES 
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL 
# not to print out the results of its query. 
# Instead, it will return the results as a string return value 
# from curl_exec() instead of the usual true/false. 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

// FOLLOW REDIRECTS AND READ THE HEADER 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, true); 

// EXECUTE REQUEST (FORM LOGIN) 
$store = curl_exec ($ch); 

// print the result 
print_r($store); 

// CLOSE CURL 
curl_close ($ch); 
?> 

感謝 Trikks

回答

1

你還需要使用CURLOPT_COOKIEFILE到下一個請求一起發送的cookie。另一件事,如果我沒有記錯的話,ASPX會爲每次像__VIEWSTATE這樣的變量設置唯一的值。看看這2個指針是否有幫助。

+0

謝謝,我會查找它! – 2010-06-04 11:48:09

+0

作爲正確的答案被添加爲一個好的指針 – 2011-06-04 07:38:34