2012-02-02 4 views
0

여러 단계가 포함 된 로그인을 자동화하기 위해 cURL을 사용하려고합니다. 제가 실행중인 문제는 로그인의 첫 번째 페이지가 정상적으로 표시되지만 다음 페이지는 내가 선택해야하거나 계속하려면 링크를 눌러야한다는 것입니다. 도대체 내가 어떻게 "계속"하고 있는지. 다음 URL을 가져 와서 그것을 cURL 코드에 넣으려고 시도했지만 로그인 프로세스의 첫 번째 페이지로 이동하지 않았기 때문에 페이지와 오류로 바로 연결되기 때문에 작동하지 않습니다. 여기 내 코드가있다. 많은 페이지가있는 로그인을 통과하는 cURL

$ch = curl_init(); 

$data = array('fp_software' => '', 'fp_screen' => '', 'fp_browser' => '','txtUsername' => "$username", 'btnLogin' => 'Log In'); 

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/Login.aspx'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_exec($ch); 

curl_close ($ch); 

다음 URL

는 www.website.com/PassMarkFrame.aspx입니다 - 기본적으로 나는이 로그인 프로세스 던졌다 크롤링해야합니다.

나는 이것을 시도했지만 ... 작동하지 않았다.

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/Login.aspx'); // use the URL that shows up in your <form action="...url..."> tag 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_exec($ch); 
curl_setopt($ch, CURLOPT_URL, 'https://www.website.com/PassMarkFrame.aspx'); // use the URL that shows up in your <form action="...url..."> tag 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_exec($ch); 
curl_close ($ch); 

올바른 구문입니까?

답변

3

각 단계 이후에 컬 핸들을 닫지 마십시오. 쿠키가 설정되어 있고 cookiejar/cookiefile 옵션을 구성하지 않은 경우 이전 요청의 "메모리"가없는 아주 새로운 반짝이는 CURL로 시작합니다.

동일한 컬링 핸들을 유지하면 사이트에서 설정된 모든 쿠키가 보존됩니다.

+0

위와 같이 변경했지만 여전히 동일한 결과가 나타납니다. 쿠키를 저장하도록 허용해야합니까? –

+1

예, 쿠키를 허용해야합니다 – pduersteler

+0

도움을 주셔서 감사합니다! 쿠키를 설정하고 curl_close를 없애고 나에게 도움이되었습니다. –

관련 문제