我正在尝试使用带有 cURL 的 php 脚本登录到外部网页。我是 cURL 的新手,所以我觉得我错过了很多东西。我找到了一些示例并对其进行了修改以允许访问 https 页面。最终,我的目标是能够登录到页面并在登录后按照指定的链接下载.csv。到目前为止,我拥有的是一个测试登录到页面的脚本;脚本如下所示:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.websiteurl.com/login');
curl_setopt($ch, CURLOPT_POSTFIELDS,'Email='.urlencode($login_email).'&Password='.urlencode($login_pass).'&submit=1');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_REFERER, "https://www.websiteurl.com/login");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
我有几个问题。首先,这是否有理由不自行重定向?我查看页面内容的唯一方法是
echo $output
即使 CURLOPT_RETURNTRANSFER 和 CURLOPT_FOLLOWLOCATION 都设置为 True。
其次,页面的 URL 停留在“localhost/folderName/test.php”,而不是指向实际的网站。谁能解释为什么会这样?因为脚本实际上并没有重定向到登录的网页,所以我似乎无法做任何我需要做的事情。
我的问题与 cookie 有关吗?我的 cookies.txt 文件与我的 .php 脚本位于同一个文件夹中。(顺便说一句,我正在使用 wampServer )。它应该位于其他地方吗?
一旦我能够解决这两个问题,似乎我需要做的就是重定向到启动 .csv 文件下载过程的链接。
感谢您的帮助,非常感谢!