|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
|
Передать csrftoken вручную30.09.2013, 01:12. Показов 1645. Ответов 12
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане. Пишу софтину для авторизации и последующего парсинга нужного мне сайта. Проблема в следующем: на сайте есть защита от CSRF, и поэтому csrftoken и sessionid необходимо передавать в POST-запросе вручную.
Вот такой POST-запрос получается при авторизации на сайте через браузер: Кликните здесь для просмотра всего текста
POST site.ru/login/ HTTP/1.1 Host: site.ru User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 Referer: http://site.ru/login/ Cookie: csrftoken=значение_токена; sessionid=значение_сессии Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 112 csrfmiddlewaretoken=значение_токена&username=логин&password=пароль Ответ сервера: HTTP/1.1 302 FOUND Составленный POST-запрос в программе: Кликните здесь для просмотра всего текста
TStringList *LoginInfo = new TStringList; String Url = "http://site.ru/login/"; IdHTTP1->Request->UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"; IdHTTP1->Request->Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; IdHTTP1->Request->AcceptLanguage = "ru,en-us;q=0.7,en;q=0.3"; IdHTTP1->Request->AcceptEncoding = "gzip, deflate"; IdHTTP1->Request->Referer = "http://site.ru/"; IdHTTP1->Request->Connection = "keep-alive"; IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded"; IdHTTP1->Request->Host = "http://site.ru"; LoginInfo->Add("csrfmiddlewaretoken=значение_токен а"); LoginInfo->Add("username=логин"); LoginInfo->Add("password=пароль"); Сниффер показывает вот такой отправляемый POST-запрос при логине через программу: Кликните здесь для просмотра всего текста
POST site.ru/login/ HTTP/1.0 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 112 Host: supply.wowgold.ru Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip, deflate, identity Accept-Language: ru,en-us;q=0.7,en;q=0.3 Referer: http://site.ru/login/ User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 csrfmiddlewaretoken=значение_токена&user name=логин&password=пароль Таким образом, в POST-запросе от программы отсутствует параметр Cookie: csrftoken=значение_токена; sessionid=значение_сессии Имеем 2 вопроса: как вы могли заметить, в POST-запросе от программы параметр HTTP/1.0, а в POST-запросе от браузера - HTTP/1.1 Как изменить на HTTP/1.1 в программе? Ну и, собственно, как передать через POST-запрос программы параметр Cookie: csrftoken=значение_токена; sessionid=значение_сессии ?
0
|
|
| 30.09.2013, 01:12 | |
|
Ответы с готовыми решениями:
12
Где парсить параметр csrftoken instagram.com? Не могу разобраться как передать корректно передать массив из функции в функцию
|
|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
|
| 02.10.2013, 19:48 [ТС] | |
|
Ребят, никаких идей?
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 02.10.2013, 20:20 | |
|
HTTP 1.0 думаю не критично - сервер что, дескреминирует пожилых пользователей?
про куки - мб напихать доп инфу в поле ExtraHeaders
1
|
|
|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
||
| 02.10.2013, 23:26 [ТС] | ||
|
Появилась другая проблема. При подключении TidCookieManager к TidHTTP и включении опции AllowCookies, меня снова выбивает на 403 FORBIDDEN. Нужно, как я понял, вручную сохранить кукисы.
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 03.10.2013, 18:43 | |
|
а как вы хотели?
0
|
|
|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
||
| 04.10.2013, 09:46 [ТС] | ||
|
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 04.10.2013, 11:11 | |
|
если вы передаете куки в дополнительных заголовках - как у вас менеджер если таковой имеется догадается об их существовании?
0
|
|
|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
||
| 07.10.2013, 17:03 [ТС] | ||
|
И дело ещё в самих куках. Менеджер умеет их хранить в определённом формате, исключая всякий, по его мнению, "мусор". А как раз этот "мусор" и нужен для авторизации. Например, у меня кука принимает вид Кликните здесь для просмотра всего текста
Set-Cookie: sessionid=ид_сессии; expires=Fri, 18-Oct-2013 07:03:26 GMT; httponly; Max-Age=1209600; Path=/
А менеджер их так не сохраняет, обрубая примерно вот эти значения Кликните здесь для просмотра всего текста
expires=Fri, 18-Oct-2013 07:03:26 GMT; httponly; Max-Age=1209600;
После чего авторизация не проходит успешно, куки не сохраняются и меня выбрасывает на страницу логина. Как я понял, куки нужно дёргать при авторизации, грузить в переменную и при каждом рефреше страницы подставлять в IdHTTP, верно?
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 07.10.2013, 18:42 | |
|
честно, ни разу не пробовал. если вы знаете что можно сделать это руками - думаю так оно и поедет
1
|
|
|
|
|
| 08.10.2013, 03:15 | |
|
https://www.cyberforum.ru/blog... 8.html#a_7
https://www.cyberforum.ru/post235829.html Добавлено через 6 минут Если дашь ссылку на сайт и логин/пароль в личку могу посмотреть...
1
|
|
|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
|||||||
| 08.10.2013, 09:26 [ТС] | |||||||
![]() По поводу первой ссылки: напрямую с менеджером сайт не работает. По поводу второй ссылки: у меня висит в закладках этот пост, но ещё не дошёл до его реализации. Но всё-равно спасибо. Добавлено через 9 минут Дело в том, что там используется несуществующая функция в 9-ой строке:
Есть ещё функции AddServerCookie и AddServerCookies. Во всяком случае у меня в XE4 студии именно так.
0
|
|||||||
|
8 / 7 / 2
Регистрация: 23.04.2009
Сообщений: 37
|
|
| 15.10.2013, 19:15 [ТС] | |
|
Всё, топик можно закрывать.
Решение: при отправке POST-запроса сначала получаются куки, разбираются регэкспом, нужные куски сохраняются в переменную и вставляются в POST-запрос в CustomHeaders Всем ещё раз спасибо. Дальше уже будет работа по разбору полученных данных с помощью регулярных выражений, а это уже совсем другая история
0
|
|
| 15.10.2013, 19:15 | |
|
Помогаю со студенческими работами здесь
13
Создание БД вручную :((( Gui Вручную Удалить вручную reshape вручную Ввод функции f(x) вручную Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|