我正在尝试使用PHP cURL登录网站并转到特定网址以检索其内容。
这是我要查看的页面:https://dev-portal.getpebble.com/developer
但是,此页面要求用户登录,登录页面已打开:https://auth.getpebble.com/users/sign_in
奇怪的是,登录页面有一个隐藏值“authenticity_token”,必须与表单一起提交。所以我目前的流程是:
这个图片中的工作原理(来自exec的卷曲内容的截图):http://i.gyazo.com/4eccb78bf18f72f1da65bc9d8967541e.png
但是,此过程将我带到:https://auth.getpebble.com/me,我现在需要cURL使用我已验证的会话将我带到https://dev-portal.getpebble.com/developer。我已经尝试保存cookie但它似乎不起作用。
在上面的第3步之后,我尝试在https://dev-portal.getpebble.com/developer页面上调用cURL,但我一直被重定向到“localhost / users / auth / pebble”(这甚至不存在?我假设cURL是导致页面重定向?)如果我在重定向发生之前取消重定向,我会得到未经身份验证的页面:http://i.gyazo.com/218e00c262651017df4dcc1927def87f.png
以下是我创建cURL请求的代码。
private function cURL($url, $postData = false)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_FORBID_REUSE, TRUE);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie);
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
if ($postData)
{
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
}
$content = $this->content = curl_exec($ch);
echo $content;
curl_close($ch);
return $content;
}
答案 0 :(得分:1)
原来cookie是在不同的页面而不是https://dev-portal.getpebble.com/developer上生成的,因此该页面会创建一个无效的会话。
我设法使用https://dev-portal.getpebble.com/users/auth/pebble代替https://dev-portal.getpebble.com/developer来修复它,虽然重定向后会将我带到经过身份验证的/开发者页面。