С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 01.09.2012
Сообщений: 87

Авторизация через cURL – как?

27.03.2014, 14:08. Показов 5866. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

В наличии php 5.4, apache 2.4, мой личный аккаунт на hh.ru.

Задача: получить доступ к страницам hh.ru из-под авторизованного пользователя. Никакого взлома или чужих аккаунтов не нужны – авторизация под своим собственным аккаунтом.

Пробовал решить так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
 
// ================================================== Config script ====================================================
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'      => 'http://spb.hh.ru/',
    'cookie'    => DIR_ROOT . 'cookie.txt',
    'username'  => 'foobar@gmail.com',
    'password'  => 'blowfish',
];
 
// ================================================== Global cURL config ===============================================
 
$ch = curl_init();
 
// Global prefs
$curlOptGlobal = [
    CURLOPT_AUTOREFERER         => 1,
    CURLOPT_COOKIEFILE          => $config['cookie'],
    CURLOPT_COOKIEJAR           => $config['cookie'],
    CURLOPT_COOKIESESSION       => true,
    CURLOPT_FAILONERROR         => 1,
    CURLOPT_FOLLOWLOCATION      => true,
    CURLOPT_HEADER              => false,
    CURLOPT_HTTPHEADER          => ['Expect:'],
    CURLOPT_REFERER             => 'https://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 => 'http://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 => 'http://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         => 'https://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     => 'http://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 '<hr style="height:100px;width:102%;margin-left:-1%;background-color:#d8f;" />';
echo $resultAuth;
// echo '<hr style="height:100px;width:102%;margin-left:-1%;background-color:#d8f;" />';
// echo $resultPageAgain;
Однако, вижу страницу для авторизации.
Доступ к кукам есть:
$ sudo chmod 1777 cookie.txt
В них есть несколько токенов и строка с "hhrole anonymous", что не ест гут.

В какую сторону копать? Почему cURL не может авторизоваться и как это исправить?

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2014, 14:08
Ответы с готовыми решениями:

Авторизация через curl
Здравствуйте. Есть проблема, нужна помощь в ее решении. В общем нужно перейти по ссылке авторизоваться там и получить xml файл. ...

Авторизация через CURL
Всем привет. Пишу парсер и нужно авторизовываться на сайте, авторизация вроде проходит но возвращает ошибку : /// Вот тут делаю...

Авторизация через cURL QIWI
Код не работает, выдает ошибку. &lt;?php error_reporting(E_ALL); $USER_LOGIN = &quot;&quot;; $USER_PASSWORD = &quot;&quot;; ...

4
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
27.03.2014, 14:20
Просмотрите этот пример, а то у вас какой-то страшноватый код
Вот еще один - попроще
0
2 / 2 / 0
Регистрация: 01.09.2012
Сообщений: 87
27.03.2014, 14:37  [ТС]
MVS76, спасибо, посмотрел и опробовал оба. Различаются только настройками SSL. Оба не работают для хедхантера.
Страшный чем? Мне лень писать вызов curl_setopt() для каждой настройки по отдельности. Но можно и переформатировать, если бы мог отредактировать свой же пост.

Посмотрите во вкладку network в инкогнито-хроме – первая печенька с записью htoken ставится при любом заходе на сайт, затем этот hhtoken посылается вместе с постом авторизации на /login.do
И вот на этом месте у меня затык – там происходит один непонятный редирект и несколько обменов хэшами клиента с сервером по разным урлам. cURL вроде как по ним ходит, но, наверное, отправляет невалидные данные?
Хотеось бы понять как это сделать чуть более высокоуровнево, чем ручное формирование header() и их отправка.

Просто копипаст печенек не прокатит в случае с конкретно хедхантером.
0
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 8
31.07.2016, 12:19
Попробуй смотреть строку которую отправляет браузер, может там есть csrf токен? Либо здесь посмотри По поводу курла
0
31.07.2016, 13:03

Не по теме:

Gendalf911, два года спустя

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2016, 13:03
Помогаю со студенческими работами здесь

Авторизация на сайте через curl php
Пишу парсер школьных оценок с сайта cliend.ru. Пытаюсь авторизоваться на сайте через cURL Lib. Отследил через браузер, что запрос на...

Авторизация и вступление в группу в Одноклассниках через cURL
Всем привет :)Ну думаю что название темы самое подходящее и вы поняли о чём будет идти речь :)Собственно к делу.. Пришло мне на дурную...

Авторизация через curl на сайте elec.ru (без вас не разобраться )
Друзья помогите пожалуйста разобраться не получается залогинится на сайт с помощью curl Возвращается ошибка 403 - Доступ запрещен! ...

Авторизация в одноклассниках, используя CURL и невозможность авторизоваться повторно, через другой профиль
Здравствуйте, уважаемые умельцы. Суть, собственно, в названии темы. Используется следующий код: $user_agent = 'Mozilla/5.0 (Windows; U;...

Авторизация curl (различие между curl и ajax запросами)
Есть ли различие в передаче данных в json формате через curl и ajax? Я хочу написать запрос, который будет авторизировать пользователя на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru