繁体   English   中英

为什么此cURL发布请求登录不起作用?

[英]Why is this cURL post request to login not working?

我试图在这里登录。

当我手动登录并检查浏览器控制台->网络->发布->标头/参数时,我得到以下信息:-

form_key: viiRqZigH0YPC9wu
login[username]: myusername
login[password]: mypassword
send: 

请注意,每次登录并sendform_key更改,始终为空。 因此,我对cURL POST请求使用了以下代码:-

$data = array(
    'login[username]' => 'myusername',
    'login[password]' => 'mypassword',
    'send' => '',
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://b2b.chiemsee.com/customer/account/login/");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // to allow redirections
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // to avoid error
curl_setopt($ch, CURLOPT_POST, true); // to send info
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); // to save cookie data for login
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // to get the html
$response = curl_exec($ch);
if (curl_error($ch)) {
    $error_msg = curl_error($ch);
    var_dump($error_msg);
    exit;
}
curl_close($ch);
echo $response;

但是它只会加载登录页面,什么也不会发生,甚至不会是无效登录的错误。

有几个原因,可以很容易地找出其中的几个:

1:发送登录请求之前,您需要一个cookie会话,但是您的代码不会首先创建一个cookie会话。

2:您的登录请求中需要CSRF令牌,但在登录之前无需获取CSRF令牌(CSRF令牌与cookie会话一起接收,在同一会话中同时获得CSRF令牌和cookie会话顺便说一句)。

3:您以multipart/form-data -format格式发送登录参数,但是此登录页面使用application/x-www-form-urlencoded -format

4:此页面在登录请求中需要很多自定义HTTP标头,而您的代码均未提供这些标头(包括但不限于X-Magento-Action: customer_account_loginPostX-XSS-Protection: 1

同样只是一个观察,您的登录错误检查代码非常缺乏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM