Доброго времени суток!
В наличии php 5.4, apache 2.4, мой личный аккаунт на hh.ru.
Задача: получить доступ к страницам hh.ru из-под авторизованного пользователя. Никакого взлома или чужих аккаунтов не нужны – авторизация под своим собственным аккаунтом.
Пробовал решить так:
Смотреть код
<?php
// ============================== Config sсript ================================
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('track_errors', true);
ini_set('error_reporting', E_ALL);
ini_set('display_startup_errors', true);
ini_set('report_memleaks', true);
ini_set('html_errors', true);
restore_error_handler();
define('DIR_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
$config = [
'host' => 'spb.hh.ru/',
'сoоkiе' => DIR_ROOT . 'сoоkiе.txt',
'username' => 'foobar@gmail.com',
'password' => 'blowfish',
];
// ============================== Global cURL config ===========================
$ch = curl_init();
// Global prefs
$curlOptGlobal = [
CURLOPT_AUTOREFERER => 1,
CURLOPT_COOKIEFILE => $config['сoоkiе'],
CURLOPT_COOKIEJAR => $config['сoоkiе'],
CURLOPT_COOKIESESSION => true,
CURLOPT_FAILONERROR => 1,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => ['Expect:'],
CURLOPT_REFERER => 'hh.ru/logon.do',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_TIMEOUT => 999,
CURLOPT_UNRESTRICTED_AUTH => true,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36',
];
curl_setopt_array($ch, $curlOptGlobal);
// ============================== Do auth ======================================
// Verify
$curlOptVerify = [
CURLOPT_URL => 'hhid.ru/validate/;http;hh.ru;80;/',
];
curl_setopt_array($ch, $curlOptVerify);
curl_exec($ch);
$resultVerify = (curl_errno($ch)) ? curl_error($ch) : curl_exec($ch);
// Go to page
$curlOptPage = [
CURLOPT_URL => 'hh.ru/',
];
curl_setopt_array($ch, $curlOptPage);
curl_exec($ch);
$resultPage = (curl_errno($ch)) ? curl_error($ch) : curl_exec($ch);
// Do auth
$curlOptAuth = [
CURLOPT_URL => 'hh.ru/logon.do',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'username' => $config['username'],
'password' => $config['password'],
'remember' => 'on',
'action' => 'Войти в личный кабинет',
],
];
curl_setopt_array($ch, $curlOptAuth);
curl_exec($ch);
$resultAuth = (curl_errno($ch)) ? curl_error($ch) : curl_exec($ch);
// Go to page again
$curlOptPageAgain = [
CURLOPT_URL => 'hh.ru/',
CURLOPT_POST => false,
];
curl_setopt_array($ch, $curlOptPageAgain);
curl_exec($ch);
$resultPageAgain = (curl_errno($ch)) ? curl_error($ch) : curl_exec($ch);
curl_close($ch);
// ============================== Output results ===============================
// echo $resultPage;
// echo '
';
echo $resultAuth;
// echo '
';
// echo $resultPageAgain;
Однако, вижу страницу для авторизации.
Доступ к кукам есть:
$ sudo chmod 1777 cookie.txt
В них есть несколько токенов и строка с "hhrole anonymous", что не ест гут.
В какую сторону копать? Почему cURL не может авторизоваться и как это исправить?
Спасибо.