일부 통계를 수집하기 위해 매일 웹 사이트에 연결하고 있습니다. 웹 사이트는 .net을 실행하여 작업을 더욱 어렵게 만듭니다. 내가하고 싶은 것은이 과정을 기계화하는 것입니다.Curl 및 Php로 헤더에 첨부 된 파일 다운로드
나는 http://www.thesite.com:8080/statistics/Login.aspx?ReturnUrl=%2Fstatistics%2Fdataexport.ashx%3FReport%3D99으로 가고 (반환 URL은 /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
감사합니다. 나는 그것에 대해 살펴볼 것입니다! –
올바른 포인터가되는 것에 대한 정답으로 추가됨 –