Php 为什么这个cURL-post登录请求不起作用?
我正在尝试登录 当我手动登录并检查浏览器控制台->网络->帖子->标题/参数时,我得到以下信息:-Php 为什么这个cURL-post登录请求不起作用?,php,curl,xampp,php-curl,Php,Curl,Xampp,Php Curl,我正在尝试登录 当我手动登录并检查浏览器控制台->网络->帖子->标题/参数时,我得到以下信息:- form_key: viiRqZigH0YPC9wu login[username]: myusername login[password]: mypassword send: 请注意,每次我登录并发送时,form_密钥都会更改,并且始终为空。 因此,我在cURL POST请求中使用了以下代码:- $data = array( 'login[username]' => 'myus
form_key: viiRqZigH0YPC9wu
login[username]: myusername
login[password]: mypassword
send:
请注意,每次我登录并发送时,form_密钥都会更改,并且始终为空。
因此,我在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数据格式发送登录参数,但此登录页面使用application/x-www-form-urlencoded-format 4:此页面在登录请求中需要大量自定义HTTP头,您的代码没有提供这些头,包括但不限于X-Magento-Action:customer\u account\u loginPost和X-XSS-Protection:1
这也是一个观察,您的登录错误检查代码非常缺乏。您不需要表单密钥吗?@apokryfos表单密钥在每次登录时都是不同的,所以我该如何使用它?首先获取表单页面并从中取出密钥,然后发送请求。可能是表单键是一个。确保使用相同的cookie jar,以便模拟用户session@apokryfos整个html以字符串形式出现在$response中。我的正则表达式不会获得form_键值。请您引导我到这里好吗?不要关闭CURLOPT_SSL_VERIFYPEER。