#php #ajax #authorization #guzzle
#php #ajax #авторизация #жрать
Вопрос:
Как я могу авторизоваться с помощью PHP (с помощью Guzzle) в https://my.tiu.ru/cabinet/sign-in ? Я проверил — он использует AJAX для фиксации формы авторизации.
Я пытался использовать некоторые JS-скрипты для входа в систему из консоли браузера (оба скрипта работают):
$.ajax({
url: 'https://my.tiu.ru/cabinet/sign-in',
type: 'POST',
data: { phone_email: 'ifnnfadl@emltmp.com', password: 'MKO09ijn', email: 'ifnnfadl@emltmp.com'},
success: function(data) {
console.log(data);
}
});
$.ajax({
url: 'https://my.tiu.ru/cabinet/auth/phone_login',
type: 'POST',
data: { phone_email: 'ifnnfadl@emltmp.com', password: 'MKO09ijn'},
success: function(data) {
console.log(data);
}
});
Но простой PHP-скрипт не:
try {
$client = new GuzzleHttpClient([
'base_uri' => 'https://my.tiu.ru',
'verify' => false,
'cookies' => true,
'headers' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36',
]
]);
$auth_page = $client->request('GET', '/cabinet/sign-in');
// var_dump($auth_page->getBody()->getContents());
// $login = $client->request('POST', '/cabinet/auth/phone_login', [
// 'form_params' => [
// 'phone_email' => 'ifnnfadl@emltmp.com',
// 'email' => 'ifnnfadl@emltmp.com',
// 'password' => 'MKO09ijn'
// ]
// ]);
// var_dump($login->getBody()->getContents());
$login = $client->request('POST', '/cabinet/sign-in', [
'form_params' => [
'phone_email' => 'ifnnfadl@emltmp.com',
'email' => 'ifnnfadl@emltmp.com',
'password' => 'MKO09ijn'
]
]);
var_dump($login->getBody()->getContents());
}
catch (GuzzleHttpExceptionRequestException$e) {
echo GuzzleHttpPsr7str($e->getRequest());
if ($e->hasResponse()) {
echo GuzzleHttpPsr7str($e->getResponse());
}
}
Он возвращает только ошибку 403
P.S. логин и пароль являются временными, не стесняйтесь их использовать
Комментарии:
1. почему логин находится внутри массива «form_params»?
2. хм? эти параметры необходимы для входа в систему
3. да, но почему они внутри массива?
'form_params' => [1,2,3]
это не то же самое,[1,2,3]
что вам пришлось бы заглянуть внутрь'form_params'
, чтобы получить значения4. docs.guzzlephp.org/en/latest/request-options.html#form-params
5. я не слишком разбираюсь во всей этой штуке с ssl, но если ваш адресный протокол
https:
, вам не обязательно использовать'verify' => true,