Отправляю запрос на '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 9 лет назад