Отправляю запрос на 'https://profile.onliner.by/login' методом POST с передачей POST данных, но онлайнер отдаёт снова страницу авторизации без каких-либо ошибок.
curl авторизация на сайте onliner.by
1 ответ
|
До ввода авторизации через соц. сети на onliner.by (введено 14 октября 2014) процесс авторизации заключался в отправке одного POST-запроса с username и password на url https://profile.onliner.by/login и получении в ответ заголовка set-cookie "onl_session". Далее по куке "onl_session" можно имитировать залогиненность юзера на 14 дней, по истечению которых кука "протухала". У меня успешно работал следующий php-код для авторизации на онлайнере с использованием curl:
<?php
class Onliner_Auth_Parser extends Parser_AbstractHttp
{
const URL_TEMPLATE = 'https://profile.onliner.by/login';
public function auth(array $onlUser)
{
$request = $this->getExpectedRequest($onlUser['onl_username'], $onlUser['onl_password']);
$response = $this->getClient()
->setFollowLocation(false)
->setFollowMetaRedirect(false)
->send($request);
return $this->runResponse($response);
}
public function getExpectedRequest($username, $password)
{
$request = new Http_ClientRequest();
$headers = array_merge(Http_Browser::getNextRequestHeaders(), array(
'Cache-Control' => 'max-age=0',
'Content-Type' => 'application/x-www-form-urlencoded',
'Connection' => 'keep-alive',
'Referer' => 'https://profile.onliner.by/login',
));
$request
->setMethod('POST')
->setPostVar('username', $username)
->setPostVar('password', $password)
->setPostVar('x', '0') // что такое x и y - не понятно, с нулём ок.
->setPostVar('y', '0')
->setPostVar('autologin', 'on')
->setHeaders($headers)
->setUrl($this->getUrl());
return $request;
}
public function runResponse(Http_BaseResponse $response)
{
$cookies = $response->getCookies();
if (!isset($cookies['onl_session'])) {
throw new Parser_Exception_ResponseFailed('Onliner auth failed');
}
$onlSessionCookie = $cookies['onl_session']->getValue();
if (!$onlSessionCookie) {
throw new Parser_Exception_ResponseFailed('Strange: got empty cookie string');
}
return array(
'onl_session' => $onlSessionCookie,
);
}
private function getUrl()
{
return new Http_Url(self::URL_TEMPLATE);
}
}
|
||||
|
|
– anonymous 10 лет назад