cURL遍历包含许多页面的登录

时间:2012-02-02 15:38:43

标签: php curl libcurl

我正在尝试使用cURL来自动执行涉及多个步骤的登录。我遇到的问题是我得到了登录的第一页,但我点击的下一页我必须选择或点击链接继续。我怎么“继续前进”。我已经尝试使用下一个URL并将其放入我的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);

下一个网址是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);

这是正确的语法吗?

1 个答案:

答案 0 :(得分:3)

每个阶段后都不要关闭卷发手柄。如果正在设置cookie,并且您尚未配置cookiejar / cookiefile选项,那么您将从一个全新的闪亮清新CURL开始,没有先前请求的“记忆”。

保持相同的卷曲手柄,并保留网站设置的任何cookie。