Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/55: Рейтинг темы: голосов - 55, средняя оценка - 4.85
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259

Получить cookies из браузера

09.10.2012, 21:48. Показов 11044. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем надо Получить cookies из браузера который на форме или CppWebBrowser или другой не знаю какой лучше использовать...
Мне надо в браузере авторизоваться и получить cookies которые после авторизации придут.
Потом эти cooki использовать в запросах с помощью TIdHTTP (чтоб быть как бы авторизованным).
Повторить авторизацию через TIdHTTP не получается только браузером.
Ну и если кому интересно авторизоваться на (https://store.steampowered.com/login/) Всем спасибо за внимание.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2012, 21:48
Ответы с готовыми решениями:

Получить cookies из браузера: перевести код с JS
Пытаюсь реализовать код приведенный ниже на языке С++ pkcs1pad2: function($data, $keysize) { if($keysize < $data.length +...

Как получить cookies для определенного сайта из браузера Google Chrome?
Здравствуйте. Суть вопроса такова: нужно получить cookies для определенного сайта из браузера Google Chrome посредством JavaScipt. Нужно...

Cookies и эмуляция браузера
Здравствуйте, пытаюсь отправлять пост-запрос на сервер. Пост отправляется, но хотелось бы узнать, во-первых, как получать cookie и...

67
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 04:19
Повторить авторизацию через TIdHTTP не получается только браузером.
Так вроде POST там шлется, значит по идее можно с IdHTTP

Code
1
2
3
POST /login/getrsakey/ username=%D0%B2%D0%B0%D0%B2
POST /login/dologin/ username=%D0%B2%D0%B0%D0%B2&password=UfNijqs2xfif5kkYnflf%2FvyX9pFYUrPg1k1o6gq7nnGLcMk0fbpBooRIPRlOR67HcKh1JvmicujoTpu5lFGabA7SS3tzyImKzcvFtH6G3Y%2Fq75LggP%2F%2FKLhWiBLQ6Do9D4DcJx%2FmetqIUYtCK%2BsA8Co6NbNjOwvRqAUK2%2FsMOBqjiads40tuRzAJMFnqxZObAAUcgayxBYRCao1fGqXS8VyAw5WXnOoCq6ls0%2Fy8vr6jYXVWxDd9W3BeP1w8gT0TOjMrQM1KvGNIRJFwPFMeNEJxuXWJjfv31nrtVLtKh5lTWOMGcj1PiPRkwsu3OylfEONOw9gDjvBGO1T0fXlbMw%3D%3D&emailauth=&captchagid=&captcha_text=&emailsteamid=&rsatimestamp=526230100000&remember_login
GET /public/captcha.php?gid=1297293306320138074
Добавлено через 26 минут
Походу там пароль шифруется с помощью js ф-цией DoLogin()можно попробывать воспроизвести ее на С++ и потом делать POST с помощью IdHTTP


Добавлено через 20 минут
Файл https://store.steampowered.com... ;l=english
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function DoLogin()
{
    var form = document.forms['logon'];
    if ( g_bLoginInFlight || form.elements['username'].value.length == 0 || form.elements['password'].value.length == 0 )
        return;
    g_bLoginInFlight = true;
    $('login_btn_signin').hide();
    $('login_btn_wait').show();
    new Ajax.Request( 'https://store.steampowered.com:443/login/getrsakey/',
        {
            method: 'post',
            parameters: {
                username: form.elements['username'].value
            },
            onSuccess: OnRSAKeyResponse,
            onException: function( req, e ) { throw e; }
        }
    );
}
А насчет кукисов то их надо искать папках с IE, но я не понимаю если использовать CppWebBrowser то зачем тогда нужен IdHTTP ?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 06:04
JavaScript
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
function OnRSAKeyResponse( transport )
{
    var results = transport.responseJSON;
    if ( results.publickey_mod && results.publickey_exp && results.timestamp )
    {
        var form = document.forms['logon'];
 
        var pubKey = RSA.getPublicKey( results.publickey_mod, results.publickey_exp );
        var encryptedPassword = RSA.encrypt( form.elements['password'].value, pubKey );
        new Ajax.Request( 'https://store.steampowered.com:443/login/dologin/',
        {
            method: 'post',
            parameters: {
                username: form.elements['username'].value,
                password: encryptedPassword,
                emailauth: form.elements['emailauth'].value,
                captchagid: form.elements['captchagid'].value,
                captcha_text: form.elements['captcha_text'].value,
                emailsteamid: form.elements['emailsteamid'].value,
                rsatimestamp: results.timestamp,
                remember_login: form.elements['remember_login'] && form.elements['remember_login'].checked
            },
            onSuccess: OnLoginResponse,
            onException: function( req, e ) { throw e; }
        }
        );
    }
Вобщем вся проблема думаю в реализовать двух строчек
JavaScript
1
2
var pubKey = RSA.getPublicKey( results.publickey_mod, results.publickey_exp );
var encryptedPassword = RSA.encrypt( form.elements['password'].value, pubKey );
Т.е. алгоритма RSA
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 07:22  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
JavaScript
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
function OnRSAKeyResponse( transport )
{
    var results = transport.responseJSON;
    if ( results.publickey_mod && results.publickey_exp && results.timestamp )
    {
        var form = document.forms['logon'];
 
        var pubKey = RSA.getPublicKey( results.publickey_mod, results.publickey_exp );
        var encryptedPassword = RSA.encrypt( form.elements['password'].value, pubKey );
        new Ajax.Request( 'https://store.steampowered.com:443/login/dologin/',
        {
            method: 'post',
            parameters: {
                username: form.elements['username'].value,
                password: encryptedPassword,
                emailauth: form.elements['emailauth'].value,
                captchagid: form.elements['captchagid'].value,
                captcha_text: form.elements['captcha_text'].value,
                emailsteamid: form.elements['emailsteamid'].value,
                rsatimestamp: results.timestamp,
                remember_login: form.elements['remember_login'] && form.elements['remember_login'].checked
            },
            onSuccess: OnLoginResponse,
            onException: function( req, e ) { throw e; }
        }
        );
    }
Вобщем вся проблема думаю в реализовать двух строчек
JavaScript
1
2
var pubKey = RSA.getPublicKey( results.publickey_mod, results.publickey_exp );
var encryptedPassword = RSA.encrypt( form.elements['password'].value, pubKey );
Т.е. алгоритма RSA
Спасибо вам большое не думал что кто то там разберется....
И как же можно реализовать этот алгоритм RSA?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 07:25
Думаю что можно Crypto API

http://www.rsdn.ru/article/cry... ptoapi.xml
http://k-lan.narod.ru/Crypto/cryptoapi.htm

Щас пробую пример от туда, но чет пока не разбирусь....
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 07:36  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Думаю что можно Crypto API

http://www.rsdn.ru/article/cry... ptoapi.xml
http://k-lan.narod.ru/Crypto/cryptoapi.htm

Щас пробую пример от туда, но чет пока не разбирусь....
Там люди пишут у них все сложно с авторизацией....
Вот что пишут люди:


Писал пару месяцев назад такую вещь.
от пару советов:
Авторизация на steamcommunity.com весьма хитрая, это вроде бы rsa, но я так и не смог сгенерировать правильный rsa ключ через c#, пришлось юзать порт google v8 и яваскрипт самих вальв.


Добавлено через 1 минуту
Вот еще

1. Авторизация происходит в несколько этапов, примерно так: Получение модуля, экспоненты и таймштампа для rsa с серверов вальв, генерация публичного ключа из них, получение rsa шифра от пароля пользователя с помощью этого ключа, конвертация в base64 и отправка его обратно на сервера вальв. На клиенте все происходит в ява скрипте на странице и у каждого пользователя модуль и экспонента конечно же разные. И только после этого пользователя наконец логинит и можно забрать куки.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 07:51
Все это понятно я уже нашел способ получить "модуля, экспоненты и таймштампа" они JSON формате присылаются.

Вопрос в получение того что делает js
получение rsa шифра от пароля пользователя
затем останется только постом отослать его

Добавлено через 10 минут
А откуда взяты цитаты ?
( если что в личку )
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 15:04  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Все это понятно я уже нашел способ получить "модуля, экспоненты и таймштампа" они JSON формате присылаются.

Вопрос в получение того что делает js
затем останется только постом отослать его

Добавлено через 10 минут
А откуда взяты цитаты ?
( если что в личку )
Щяс напишу..
Так у тебя что нибудь вышло?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 19:29
Проблема в RSA я им ни разу не пользовался...
И во вторых то что там пишут говорит от том что стоит проверить что там за реализация RSA, возможно она нестандартная.

Добавлено через 3 часа 1 минуту
Нашел rsa.js

JavaScript
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
var RSA = {
 
    getPublicKey: function( $modulus_hex, $exponent_hex ) {
        return new RSAPublicKey( $modulus_hex, $exponent_hex );
    },
 
    encrypt: function($data, $pubkey) {
        if (!$pubkey) return false;
        $data = this.pkcs1pad2($data,($pubkey.modulus.bitLength()+7)>>3);
        if(!$data) return false;
        $data = $data.modPowInt($pubkey.encryptionExponent, $pubkey.modulus);
        if(!$data) return false;
        $data = $data.toString(16);
        return Base64.encode(Hex.decode($data));
    },
 
    pkcs1pad2: function($data, $keysize) {
        if($keysize < $data.length + 11)
            return null;
        var $buffer = [];
        var $i = $data.length - 1;
        while($i >= 0 && $keysize > 0)
            $buffer[--$keysize] = $data.charCodeAt($i--);
        $buffer[--$keysize] = 0;
        while($keysize > 2)
            $buffer[--$keysize] = Math.floor(Math.random()*254) + 1;
        $buffer[--$keysize] = 2;
        $buffer[--$keysize] = 0;
        return new BigInteger($buffer);
    }
}
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 20:15  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Проблема в RSA я им ни разу не пользовался...
И во вторых то что там пишут говорит от том что стоит проверить что там за реализация RSA, возможно она нестандартная.

Добавлено через 3 часа 1 минуту
Нашел rsa.js

JavaScript
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
var RSA = {
 
    getPublicKey: function( $modulus_hex, $exponent_hex ) {
        return new RSAPublicKey( $modulus_hex, $exponent_hex );
    },
 
    encrypt: function($data, $pubkey) {
        if (!$pubkey) return false;
        $data = this.pkcs1pad2($data,($pubkey.modulus.bitLength()+7)>>3);
        if(!$data) return false;
        $data = $data.modPowInt($pubkey.encryptionExponent, $pubkey.modulus);
        if(!$data) return false;
        $data = $data.toString(16);
        return Base64.encode(Hex.decode($data));
    },
 
    pkcs1pad2: function($data, $keysize) {
        if($keysize < $data.length + 11)
            return null;
        var $buffer = [];
        var $i = $data.length - 1;
        while($i >= 0 && $keysize > 0)
            $buffer[--$keysize] = $data.charCodeAt($i--);
        $buffer[--$keysize] = 0;
        while($keysize > 2)
            $buffer[--$keysize] = Math.floor(Math.random()*254) + 1;
        $buffer[--$keysize] = 2;
        $buffer[--$keysize] = 0;
        return new BigInteger($buffer);
    }
}
И как это использовать?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 20:17
Пытаться переводить на С++
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 20:27  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Пытаться переводить на С++
Дамм... А если вообще не знаю JavaScript =)))
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 20:29
Ну есть видео уроки, книги...

Если знаешь С++, то что нам тот js ?
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 20:43  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну есть видео уроки, книги...

Если знаешь С++, то что нам тот js ?
Ну ты же не перевел+)
А это точно то что мне нужно? Чтоб не зря старался...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 20:46
Дык и я не особо js да и не за одни сутки это делается. К тому же там надо еще будет использовать либу типа gmp или BigInt ...
А это точно то что мне нужно? Чтоб не зря старался...
Ну эт тебе виднее, может легче CppWebBrowser использовать и не парить мозг..
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 20:48  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Дык и я не особо js да и не за одни сутки это делается.

Ну эт тебе виднее, может легче CppWebBrowser использовать и не парить мозг..
Нет смысле если я переведу то это точно то шифрование будет?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.10.2012, 20:49
А какое еще ?

Тут методом проб и ошибок...
0
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
10.10.2012, 20:58  [ТС]
А это просто функция или надо что то ещё подключать библиотеки или типо того ? =)
0
Заблокирован
10.10.2012, 20:59
В форме логина пристутствуют несколько скрытых полей, которые имхо и отправляются дополнительно к логину и паролю, поэтому могут быть проблемы с авторизацией через IdHTTP. Но я не могу понять сути Вашей задачи. Но что-то подсказывает мне, что можно обойтись и CppWebBrowser, ибо чувствую, что это не последний подводный камень на данном ресурсе. Но я говорю не о кукисах (проще использовать методы какого-нибудь HTTP Анализатора, чем добится чего-то разумного от данного компонента).
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.10.2012, 00:05
rsa.js и jsbn.js - это походу те файлы которые реализовывают шифрование.

rsa.js используеи jsbn.js - библиотеку больших чисел

Может что-то упустил по тому как еще до того не дошел

Добавлено через 5 минут
В форме логина пристутствуют несколько скрытых полей,
Ну по идее это все можно надыбать в скриптах js которые исполняются на компе.

Добавлено через 50 минут
http://www-cs-students.stanford.edu/~tjw/jsbn/

Добавлено через 2 часа 8 минут
Тут вроде указаны пути к кукам Tcppwebbrowser и cookies
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2012, 00:05
Помогаю со студенческими работами здесь

Удалить cookies запущенного браузера
Доброго времени суток, форумчане. Возможно ли сделать так, чтобы куки запущенного браузера были удалены программно? подскажите хотя бы...

Не сохраняются Cookies после закрытия браузера
По умолчанию cookies должны сохранятся на клиенте, но у меня почему они не сохраняются после закрытия брайузера? Так и должно быть или я...

Получить значение Cookies
Вообщем такая ситуация. Мне нужно получить значения Cookies которые устанавливаются на сайте www.avito.ru. Но получить их почему то не...

Как получить cookies из WebBrowser?
Всем привет. Необходимо получить кукисы из веб браузера, почему я использую его? Потому что он поддерживает выполнение JS. Написал...

Получить значения cookies, создаваемых сторонним скриптом.
Здравствуйте ситуация такая, на сайт встраиваю сторонний скрипт который создаёт свои куки, как мне получить его куки? (Стороннего скрипта) ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru