Почему этот пост-запрос cURL для входа не работает? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь войти здесь .

Когда я вхожу вручную и проверяю консоль браузера -> сеть -> публикация -> заголовки / параметры, я получаю следующее: -

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

Обратите внимание, что form_key меняется каждый раз, когда я вхожу в систему, а send всегда пусто. Следовательно, я использовал следующий код для моего 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 Ответ

1 голос
/ 12 июня 2019

несколько причин, легко можно определить пару из них:

1: вам нужен сеанс cookie перед отправкой запроса на вход, но ваш код не создает сеанс cookie вначале.

2: вам нужен токен CSRF с вашим запросом на вход, но вы не получаете токен CSRF перед входом в систему (токен CSRF получен вместе с сеансом cookie, вы получаете как токен CSRF, так и сеанс cookie в том же ответе, кстати.)

3: вы отправляете параметры входа в формате multipart/form-data, но на этой странице входа используется формат application/x-www-form-urlencoded

4: эта страница нуждается в большом количестве пользовательских заголовков HTTP в запросе на вход в систему, ни один из которых ваш код не предоставляет (включая, но не ограничиваясь X-Magento-Action: customer_account_loginPost и X-XSS-Protection: 1)

также просто наблюдение, ваш код проверки ошибок входа в систему крайне отсутствует.

...