Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 4.00
yukoz
4 / 4 / 1
Регистрация: 14.03.2014
Сообщений: 45
#1

Авто-обновление резюме на хэдхантере - C#

10.09.2014, 18:14. Просмотров 2229. Ответов 16
Метки нет (Все метки)

Привет всем!

Изредка ищу новых заказчиков на хэдхантере, задался идеей написать небольшую программу по авто-обновлению своего резюме (каждые 4 часа). Но что-то никак не выходит... Выдает на GetResponse() - ошибка 500... может кто подскажет куда капать?

Делаю так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
string Url = "http://hh.ru/applicant/resumes/touch";
            string Data = "resume:ee07_код_моего_резюме_a339ff00cbaf0b0039e&undirectable:true";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url);
            req.Method = "POST";
            req.Timeout = 100000;
            req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
            req.Referer = "http://hh.ru/applicant/resumes/view?resume=ee07a33_код_моего_резюме_74471754438";
 
            CookieContainer cookies = new CookieContainer();
            req.CookieContainer = cookies;
            Cookie cookieReg = new Cookie("hhtoken", "5VLgvBiB0_мой_токен__Vyflnel", "", "hh.ru");
            req.CookieContainer.Add(cookieReg);
            Cookie cookieReg2 = new Cookie("hhuid", "hA!Ha_мой_уид_VEPVH4uRA--", "", "hh.ru");
            req.CookieContainer.Add(cookieReg2);
 
            byte[] sentData = Encoding.ASCII.GetBytes(Data);
            req.ContentLength = sentData.Length;
            req.GetRequestStream().Write(sentData, 0, sentData.Length);
 
            req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0";
            req.Accept = "text/plain, */*; q=0.01";
 
            WebResponse res = req.GetResponse();
Данные для куков нашел через Firefox.

Вот что анализ трафика говорит (см. вложение).
0
Миниатюры
Авто-обновление резюме на хэдхантере  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2014, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Авто-обновление резюме на хэдхантере (C#):

Авто обновление больших приложений - C#
Добрый день, вопрос такой. Необходимо сделать авто обновление приложения. Если в таблице БД на сервере есть запись о том что есть более...

авто обновление страниц - PHP
в моем мальноков примере есть проблема: когда пользователь ввел данные на авторизацию.....ему нужно как бы вручную обновлять страницу...

Авто обновление браузера - Visual Basic
Есть браузер Yandex (можно Chrome и IE). Подскажите пожалуйста как сделать программно авто обновление страницы каждые n сек.? Адрес...

Авто обновление программы - Delphi
Допустим я с помощью get запроса получил ссылку с хостинга,как мне её скачать и заменить на текущую (которая открыта)?? Помогите...

Авто обновление div Блока - jQuery
Здравствуйте. У меня например есть div блок, текст в котором должен обновляться раз в 1 секунду. <div id='divconsole'><?php echo...

Не работает авто обновление виндовс - Windows XP
Проблема такая, у меня не работает авто обновление виндовс, а если зайти в службы и запустить вручную, эту службу, выдает ошибку: ...

16
kolorotur
Эксперт .NET
9204 / 7717 / 1235
Регистрация: 17.09.2011
Сообщений: 13,293
10.09.2014, 21:26 #2
Цитата Сообщение от yukoz Посмотреть сообщение
авто-обновлению своего резюме (каждые 4 часа).
Бодро у вас резюме обновляется!
Это такая частота смены места работы?
0
yukoz
4 / 4 / 1
Регистрация: 14.03.2014
Сообщений: 45
11.09.2014, 17:35  [ТС] #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от kolorotur Посмотреть сообщение
Бодро у вас резюме обновляется!
Это такая частота смены места работы?
Частота не большая, просто hh позволяет обновлять свое резюме раз в 4 часа, чтобы оно было в первых результатах поиска у работодателей, больше предложений будет - больше выбор... В инете на хабре нашел, один делал на дэлфях подобное, причем не так давно, и вроде как у него все получилось, а у меня что-то никак, постоянная ошибка 500 (ответ сервера), может что-то не так делаю?

Добавлено через 6 часов 40 минут
Я понял почему возникает ошибка 500, потому что в заголовках POST запроса обязательно должен быть параметр "X-Xsrftoken", только как его туда воткнуть, пытался сделать так:

C#
1
req.Headers.Add("X-Xsrftoken", "067d9e4c41607ebc505");
Не получается В анализе трафика этот заголовок не появляется...

Добавлено через 11 минут
Всё, победил, ошибки 500 нет - УРА!

C#
1
2
3
WebHeaderCollection hd = new WebHeaderCollection();
            req.Headers = hd;
            req.Headers.Add("X-Xsrftoken", "067d9e4c07ebc505");
2
Dronello
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 6
28.09.2014, 17:34 #4
а как получить значение X-Xsrftoken ?

у меня тоже ошибка 500 выскакивает (
0
yukoz
4 / 4 / 1
Регистрация: 14.03.2014
Сообщений: 45
28.09.2014, 21:05  [ТС] #5
Цитата Сообщение от Dronello Посмотреть сообщение
а как получить значение X-Xsrftoken ?
у меня тоже ошибка 500 выскакивает (
Очень просто - через веб-консоль Firefox'a, в разделе - заголовки.
2
Dronello
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 6
28.09.2014, 22:36 #6
чуть чуть неверно - X-Xsrftoken должна быть равна значению скрытой переменной "_xsrf" , которая появляется на форме логина, в html такое искать и парсить

<input type="hidden" name="_xsrf" value="024e845f8e4e469ebd6eee5f2d7375f0">

а так - ход ваших мыслей ОЧЕНЬ верный оказался -без этого заголовка - ошибка 500 , с этим заголовком при досрочном обновлении - 409 ошибка - все верно
0
z668
26 / 26 / 2
Регистрация: 24.03.2013
Сообщений: 239
29.09.2014, 01:02 #7
Ребят, я все понимаю конечно, но зачем вам лишние проблемы с get и post запросами? В любой момент hh может поменять эти значения. Проще (да и надежнее) использовать WebBrowser. Тем более не в многопоточном режиме софт работать будет.
0
Dronello
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 6
29.09.2014, 02:09 #8
да я вообще через php и curl делаю - я случайно в ветку залез - за идеей ))
0
Saymsik
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 2
14.10.2014, 15:29 #9
Dronello,
А можно поподробнее, каким образом у вас выглядит запрос?
Спасибо!
0
Dronello
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 6
14.10.2014, 16:51 #10
обычный curl - из хитростей надо в заголовок добавить X-Xsrftoken

его его значение парсится из input c атрибутом name=_xsrf

массив POST состоит из 2 элементов (resume - id вашего резюме и undirectable=true)

без заголовка будет 500 ошибка, с ним - 200 или 409 - если нельзя обновить
0
Saymsik
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 2
14.10.2014, 19:47 #11
Dronello, а пример можно?
0
Dronello
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 6
14.10.2014, 21:54 #12
а что непонятно в каком месте? вроде старался все подводные камни объяснить - на каком месте стопор то ???
0
joub
1 / 1 / 1
Регистрация: 08.01.2013
Сообщений: 104
29.12.2014, 11:57 #13
и я в тему добавлять...
X-Xsrftoken - в куках проскакивает в капсе - и это была мая ошибка... требует именно строчные буквы...
0
Psilon
Master of Orion
Эксперт .NET
5917 / 4816 / 634
Регистрация: 10.07.2011
Сообщений: 14,434
Записей в блоге: 5
Завершенные тесты: 4
29.12.2014, 15:52 #14
z668, если что-то поменяется, то веббраузер не спасет, а прямой запрос позволяет лучше всё контролировать/меньше жрет памяти проца/в целом изящнее.
0
joub
1 / 1 / 1
Регистрация: 08.01.2013
Сообщений: 104
29.12.2014, 16:17 #15
А еще можно автоматизировать. Имея 2-3 резюме, через cron запускать сервисную программу которая: авторизуется, найдет все резюме, up-нет их - и это каждые 4 часа... ))

Вот только один вопрос меня интересует, как точно на стороне hh идет просчет времени - ровно 4.00 часа и не секундой больше?

Добавлено через 18 минут
А кто нибудь получал вот такое?

405: Method Not Allowed
0
29.12.2014, 16:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2014, 16:17
Привет! Вот еще темы с ответами:

Авто обновление собственного браузера - Visual Basic
Вот есть программа у меня, которая обновляет открытую страницу открытого браузера каждые n секунд. Не очень удобно сидеть и ждать а...

Реализация авто-обновление блока - PHP
Поскажите пожалуйста реализацию, как автоматически обновлять блок, когда в базе появляется новая запись, например – новость. AJAX с...

Авто обновление данных в Excel - MS Excel
Здравствуйте! Подскажите пожалуйста каким образом можно сделать авто обновление Excel книги. Одна книга находиться в дропбоксе, другая...

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто - C++
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на С++? Интересны задачи типа : &quot;Описать базовый класс автомобиль...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.