使用 CURLOPT_POSTFIELDS 登录失败


Login failed using CURLOPT_POSTFIELDS

$username = 'myname';
$password = 'mypass';
$loginUrl = 'https://example.com/login/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'user='.$username.'&pass='.$password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
echo $content;
登录

后,我看到的是登录名而不是受保护的内容。我的案例出了什么问题?

要么登录页面需要除用户和传递变量之外的其他内容(例如,它可能会检查用户代理或更多变量),要么数据未正确编码,您可以使用以下代码正确编码字符串:

$data = array(
    'user' => $username,
    'pass' => $password
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

要检查他们期望的变量,您必须使用某种网络嗅探器,例如,在Chrome开发人员工具中,您可以打开"网络"选项卡并检查登录表单发送的数据。

或者你可以在这里发布那个URL,我会为你检查。如果您不想在此处发布,可以向 mstrokin 发送电子邮件至 gmail.com。