Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/74: Рейтинг темы: голосов - 74, средняя оценка - 4.69
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47

TChromium (dcef3): как правильно сформировать POST запрос

28.07.2014, 13:18. Показов 16708. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго здоровья!
Прошу помощи в формировании правильного POST запроса.
Известно все, что нужно отправить. Неизвестно как правильно это оформить.

Использовать надо TChromiumOCR (dcef3).

Тампердадой установлено что нужно отправить:
-Заголовки запроса:
Host, User-Agent, Accept, Accept-Language, Accept-Encoding, Content-Type, Referer, Content-Length, Origin, Cookie, Connection, Pragma, Cache-Control

-Сообщение:
sessionid=(...)&currency(...)=&subtotal= (...)&fee=(*)&total=(...)

Код такой:
Delphi
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
function CreateField(const AValue: AnsiString): ICefPostDataElement;
begin
 Result := TCefPostDataElementRef.New;
 Result.SetToBytes(Length(AValue), PAnsiChar(AValue));
end;
 
//*****************************************
 
procedure POST(total, fee: integer);
var
 Header: ICefStringMultimap;
 Data: ICefPostData;
 Request: ICefRequest;
 Cook: ICefCookieManager;
begin
 Request := TCefRequestRef.New;
 Request.Url := '';
 Request.Method := 'POST';
 Request.Flags:=[UR_FLAG_ALLOW_CACHED_CREDENTIALS,UR_FLAG_ALLOW_COOKIES];
 
 Header := TCefStringMultimapOwn.Create;
 Header.Append('Host', '(...)');
 Header.Append('User-Agent', '(...)');
 Header.Append('Accept', '(...)');
 Header.Append('Accept-Language', '(...)');
 Header.Append('Accept-Encoding', '(...)');
 Header.Append('Content-Type', '(...)');
 Header.Append('Referer', '(...)');
 Header.Append('Content-Length', '(...)');
 Header.Append('Origin', '(...)');
 Header.Append('Connection', '(...)');
 Header.Append('Pragma', '(...)');
 Header.Append('Cache-Control', '(...)');
 
 Header.Append('Cookie',(...));
 ...
 Header.Append('Cookie',(...));
 
 Request.SetHeaderMap(Header);
 
 Data := TCefPostDataRef.New;
 Data.AddElement(CreateField('sessionid='+SessionID));
 Data.AddElement(CreateField('&currency=5'));
 Data.AddElement(CreateField('&subtotal='+inttostr(total-fee)));
 Data.AddElement(CreateField('&fee='+IntToStr(fee)));
 Data.AddElement(CreateField('&total='+IntToStr(total)));
 
 Request.PostData := Data;
 
 form1.Chromium1.Browser.MainFrame.LoadRequest(Request);
end;
Сомнения и вопросы:
- Где то видел, что в конце строки POST запроса надо добавлять "\r\n". Надо ли?
- Надо ли добавлять строку "POST http://www.site.ru HTTP/1.1\r\n"?
- Некоторые данные извлекаются из куки файлов в закодированном (utf-8) виде. Content-Type в данном запросе = "application/x-www-form-urlencoded; charset=UTF-8". В каком виде надо отправлять данные: как есть в utf-8 или декодировать в win1251?
- В коде параметр Request.Flags указывает на использование куки файлов. Нипанятна же... надо вручную прописывать заголовок "Cookie" или нет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2014, 13:18
Ответы с готовыми решениями:

Правильно сформировать POST-запрос
Доброго дня! Есть POST запрос который нормально отправляется через утилиту CURL. Вот ее вид: curl.exe -v -F "ufile=@<тут...

Получение кода страницы TChromium DCEF3
Привет, гуру. Необходимо получать код страницы, загруженной в хромиум, из главного потока приложения и из созданного мной....

Delphi 7 + TChromium (DCEF3) = Flash Player Not Working
Установил на Delphi 7 компонент TChromium, новенький DCEF3. Помимо прочих непонятных глюков: Flash Player не работает - лишь предлагает...

67
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 14:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Ну, ну... походу у вас просто нет опыта.
Поверьте, я уже давно занимаюсь парсингом и хорошо знаком с веб технологиями. В скрипте так или иначе все сводится к запросу на сервер, который эмулировать при помощи IdHTTP не проблема.

Добавлено через 7 минут
Конечно можно юзать wb.ExecScript('javascript', 'do_something_func();') или долбиться лбом об DOM, если конечно хотите, чтобы у вас все время висело окно на рабочем столе. Попробуйте выполнять какие-либо операции, когда ваша программа с браузером свернута. Как оно? работает? или ждет пока окно станет видимым?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 14:15
Ну вот составьте мне авторизацию на steam ? Сколько уйдет на это времени ?
Более того это глупо, стоит на сайте изменить js и все с нуля нужно будет проделать.

Добавлено через 2 минуты
Цитата Сообщение от TooHot Посмотреть сообщение
Конечно можно юзать wb.ExecScript('javascript', 'do_something_func();') или долбиться лбом об DOM, если конечно хотите, чтобы у вас все время висело окно на рабочем столе. Попробуйте выполнять какие-либо операции, когда ваша программа с браузером свернута. Как оно? работает? или ждет пока окно станет видимым?
Именно по этому IE лучше не использовать.
Можно и об стенку долбится с wb.ExecScript() ибо если там запросы Ajax и получение куков то нифига не выйдет.
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 14:19
Цитата Сообщение от Avazart Посмотреть сообщение
Ну вот составьте мне авторизацию на steam ? Сколько уйдет на это времени ?
Более того это глупо, стоит на сайте изменить js и все с нуля нужно будет проделать.
сайт стима?
Естественно нужно в логике своей программы учитывать, что разработчики могут что-то изменить и стараться делать все универсально.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 14:20
Цитата Сообщение от TooHot Посмотреть сообщение
сайт стима?
Комюнити.
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 14:21
Цитата Сообщение от Avazart Посмотреть сообщение
Именно по этому IE лучше не использовать.
Можно и об стенку долбится с wb.ExecScript() ибо если там запросы Ajax и получение куков то нифига не выйдет.
Вот вы действительно мало знакомы c javascript, как я вижу. И почитайте о технологии ajax

Добавлено через 41 секунду
Цитата Сообщение от Avazart Посмотреть сообщение
Комюнити.
?? адрес сайта мне дайте, на котором нужно авторизоваться
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 14:28
https://store.steampowered.com/login/

Добавлено через 3 минуты
Цитата Сообщение от TooHot Посмотреть сообщение
Вот вы действительно мало знакомы c javascript, как я вижу. И почитайте о технологии ajax
А при чем тут веб технологии я говорю о том что без браузера вам придется реализовывать браузер "своими" руками, смысл?
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 14:36
Avazart, и вас смущает этот POST запрос? или вы не можете отыскать javascript функцию, которая превращает ваш пароль в кашу, перед отправкой запроса?
Миниатюры
TChromium (dcef3): как правильно сформировать POST запрос  
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 14:37
Цитата Сообщение от Avazart Посмотреть сообщение
А при чем тут веб технологии я говорю о том что без браузера вам придется реализовывать браузер "своими" руками, смысл?
не надо тут городить огород, никаких браузер не нужно
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 15:07
Цитата Сообщение от TooHot Посмотреть сообщение
не надо тут городить огород, никаких браузер не нужно
Да ну вот вопроизведите "руками" генерацию токена и пароля, тогда поговорим.
0
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47
08.08.2014, 15:07  [ТС]
не хотел признаваться, но когда прочел про steam...
собственно мой проект - это автобот для торговой площадки стима.
и запрос на покупку шмотки - то, что никак не удается.

как картинку прикрепить?
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 15:11
Цитата Сообщение от Avazart Посмотреть сообщение
Да ну вот вопроизведите руками генерацию токена и пароля, тогда поговорим.
Генерацию какого токена? Вы что не видите, что токен приходит в ответе от сервера? а про пароль читайте сообщение выше.

Добавлено через 13 секунд
Алешенька, картинка недоступна
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 15:13
А вы что не видите что пароль передается не в исконном виде ?
Токен, если не ошибаюсь участвует в шифровании.
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 15:25
А вы что не понимаете, что я вам написал? или вас обязательно надо тыкать носом?
Хорошо идите сюда login.js и обратите внимание на это: var encryptedPassword = RSA.encrypt( password, pubKey );

Добавлено через 2 минуты
Кто хочет слышать, тот услышит. Работайте с браузером, как вам угодно. Не вижу смысла вам что-то объяснять, когда вы не хотите понимать.
1
1 / 1 / 0
Регистрация: 04.07.2014
Сообщений: 47
08.08.2014, 15:26  [ТС]
Цитата Сообщение от TooHot Посмотреть сообщение
идите сюда login.js и обратите внимание на это: var encryptedPassword = RSA.encrypt( password, pubKey );
круто)
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 15:28
Цитата Сообщение от Avazart Посмотреть сообщение
А вы что не видите что пароль передается не в исконном виде ?
вы вообще смотрели этот пост?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 15:28
Цитата Сообщение от TooHot Посмотреть сообщение
Хорошо идите сюда login.js и обратите внимание на это: var encryptedPassword = RSA.encrypt( password, pubKey );
Ну так что модуль с RSA не нужно реализовывать?
Цитата Сообщение от TooHot Посмотреть сообщение
что я вам написал? или вас обязательно надо тыкать носом?
А что я вам писал ранее,
Цитата Сообщение от Avazart Посмотреть сообщение
и задействовать библиотеки для длинной арифметики что бы пройти авторизацию которое использует специфический rsa.
шифрование нужно будет реализовывать "руками", ибо как я помню стандартное там не подойдет.

Всегда есть выбор мудохаться со скриптами или просто задействовать браузер и не иметь проблем.
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 15:31
Avazart, вот весь ваш модуль RSA, много? не сношайте мне мозг и сидите на своем веббраузере, я все сказал выше.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 15:32
Цитата Сообщение от TooHot Посмотреть сообщение
Avazart, вот весь ваш модуль RSA, много? не сношайте мне мозг и сидите на своем веббраузере, я все сказал выше.
Ну так вы предлагаете переписывать его на Delphi ? Да и обратите внимание что тянутся разные BigInteger итп.
Кто сношает мозг еще?
0
74 / 62 / 26
Регистрация: 05.08.2014
Сообщений: 218
08.08.2014, 15:57
Avazart, мои посты - это реакция на ваше сообщение. Сделать можно все, что делает javascript и не нужно это отрицать. А по поводу того, что легче или труднее, это вопрос зависит от конкретной задачи. Но я все равно делал бы на IdHTTP, хотя бы потому, что без визуальных компонентов мы можем сделать службу, и от нас не потребуется логиниться в систему, чтобы наша программа работала. Да и скорость сравните.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.08.2014, 16:05
Цитата Сообщение от TooHot Посмотреть сообщение
делать можно все, что делает javascript и не нужно это отрицать.
А я и не отрицал, я говорил что нет смысла.

Цитата Сообщение от Avazart Посмотреть сообщение
Вы просто не авторизуетесь, если там авторизация на js завязана ( по крайней мере баз анализа js и их воспроизведения средствами Delphi)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2014, 16:05
Помогаю со студенческими работами здесь

TChromium узнать значения POST
Как возможно, узнать\получить данные POST запроса? Простой пример.. при авторизации с помощью JS жмём кнопу и т.п. и на сайт уходя...

После закрытия программы c TChromium (dcef3) выскакивает AV
Здравствуйте. Вот такая проблема. Ставил TChromium на XE3. Прикол в том, что в аналогичном проекте в Delphi такой проблемы нет. ...

Как правильно составить запрос POST
req:='POST https://signin.ebay.com/ws/eBayISAPI.dll?SignIn HTTP/1.0'#13#10+ 'Content-Type: application/x-www-form-urlencoded'#13#10+ ...

Http POST запрос, как правильно написать
Добрый день, мне нужно отправить данные на сервер, посредством http post запросом, нужно добавить автомобиль, сам пост запрос выглядит вот...

Как правильно отправить POST запрос с массивом?
Доброго времени суток. Не могу понять, как отправить POST запросом массив на сервер, из C#. Нужно для добавления контакта в amoCRM. ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru