Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Авторизация на vkontakte


Автор: en-horror 1.5.2008, 02:05
Кто нибудь пробовал авторизовываться на сайте вконтке через инди
на всех сайтах авторизация проходит нормально, но не в этом случае

Код

StringList *ps = new TStringList;

 ps->Add("email="+Edit1->Text);
 ps->Add("pass="+Edit2->Text);
 IdHTTP1->Request->Host = "vkontakte.ru";
 IdHTTP1->Request->UserAgent = "Opera/9.27 (Windows NT 5.1; U; ru)";
 IdHTTP1->Request->Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
 //IdHTTP1->Request->AcceptLanguage = "ru, en";
 //IdHTTP1->Request->AcceptEncoding = "deflate, gzip, x-gzip, identity, *;q=0";
 //IdHTTP1->Request->AcceptCharSet = "windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1";
 IdHTTP1->Request->ProxyConnection = "Keep-Alive";
 IdHTTP1->Request->Referer = "http://vkontakte.ru/";

 IdHTTP1->Request->ContentType = "application/x-www-form-urlencoded";

 Memo1->Text = IdHTTP1->Post("http://vkontakte.ru/login.php",ps);
 ps->Clear();

Автор: Loop2 1.5.2008, 19:52
del

Автор: SergXP 1.5.2008, 21:09
Возможно из-за того, что вы не учли скрытые(hidden) поля формы на странице http://vkontakte.ru/login.php

Код

<form method="post" name="login" id="login" action="login.php">
 <input type="hidden" name="success_url" id="success_url" value="">         <--Первое поле
 <input type="hidden" name="fail_url" id="fail_url" value="">                         <--2-e поле
 <input type="hidden" name="try_to_login" id="try_to_login" value="1">      <--3-e поле
  <table align="center" cellpadding=0 cellspacing=7 border=0 width="40%">
   <tr>
    <td width="100px">
     <span class="grey">Email:</span>
    </td>
    <td> 
     <input class="inputText" type="text" name="email" value="" id="email" size="25" />
    <td>
   </tr>
   <tr>
    <td>
     <span class="grey">Пароль:</span>
    </td>
    <td>
     <input class="inputText" type="password" name="pass" value="" id="pass" size="25" />
    </td>
   </tr>
   <tr>
    <td>


Думаю что из-за них...
П.С. если не прав прошу не пинать! smile 

Автор: en-horror 2.5.2008, 01:13
у меня при авторизация почему то начинает перекидывать туда сюда
POST /login.php HTTP/1.1
POST /id109351 HTTP/1.1
POST /login.php HTTP/1.1
POST /id109351 HTTP/1.1
POST /login.php HTTP/1.1
POST /id109351 HTTP/1.1
POST /login.php HTTP/1.1
POST /id109351 HTTP/1.1
...
и так пока не истечет максимальное колличество перенаправлений!

Автор: Sharkfire 4.5.2008, 11:40
ну он походу тебя перебрасывает на твоб станичку.... значит успешно вошёл 

Автор: en-horror 4.5.2008, 15:44
заходит успешно... но не могу понять почему перекидывает на страницу авторизации потом!?

Автор: Syrex 7.5.2008, 07:52
Может кто объяснит как сделать автозаполнение форм логина и пароля? Какие при этом компоненты надо использовать? smile 

Автор: gather 7.5.2008, 12:00
Syrex, что именно вы хотите сделать? ПОЛНОЕ описание задачи. Телепаты все в отпуске

Автор: Syrex 8.5.2008, 13:19
Допустим на сайте есть поля Логин и пароль. 
Данный сайт я загружаю в CppWebBrowser
В проге два компонента типа Edit
Как сделать, чтобы при нажатии на кнопку в программе поля  Логин и пароль (которые расположены на загруженном сайте) заполнились значениями из Edit1 и Edit2.

Автор: Syrex 10.5.2008, 23:36
up

Автор: jonie 11.5.2008, 13:26
с компонентами борландавскими не работал, но рискну предположить что через COM оснастку IE это возможно.

Автор: Kakadu 11.5.2008, 14:23
Ребята, респект. скоро получим БрутФорс-прогу для Контакта!

Автор: en-horror 11.5.2008, 19:11
На странице есть вот такая шляпа!
Код

cookies = {
    cookies:null,
    set:function(name,value,days) {
        if(!this.cookies)this.init();
        this.cookies[name] = value;
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    },
    get:function(name) {
        if(!this.cookies)this.init();
        return this.cookies[name];
    },
    init:function(){
        this.cookies = {};
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i].split("=");
            if(c.length == 2)this.cookies[c[0].match(/^[\s]*([^\s]+?)$/i)[1]] = c[1].match(/^[\s]*([^\s]+?)$/i)[1];
        }
    }
}


Автор: gather 11.5.2008, 21:16
Цитата(en-horror @  11.5.2008,  19:11 Найти цитируемый пост)
На странице есть вот такая шляпа!

Это не шляпа. Это яваскрипт. Который устанавливает куки при ините. 
Вам же надо эти куки съесть и при необходимости выплюнуть обратно.

Автор: SABROG 11.5.2008, 22:07
Цитата(Kakadu @ 11.5.2008,  14:23)
Ребята, респект. скоро получим БрутФорс-прогу для Контакта!

Судя по тому, что за 10 неверных попыток меня не заблокировало, наверное да. Зато как хорошо, что уже логин перебирать легче - 100% латиница, регистро-независимый адрес, фиксированный формат: [email protected]

Если еще купить базы данных e-mail адресов и пароль по словарю подбирать, то вообще малина. Ну и еще доработать переборщик, чтобы анонимные прокси менял как перчатки. После пары взломов они поставят авторизацию по картинке или как на мейлру, чтобы мышкой кликать. Для них это 5 минут, для разработчика программы - зря потраченное время...

Автор: en-horror 11.5.2008, 22:52
Цитата

Это не шляпа. Это яваскрипт. Который устанавливает куки при ините. 
Вам же надо эти куки съесть и при необходимости выплюнуть обратно.


то что это ява скрипт я уже понял... только не очень понял его роли... если он устанавливает куки то получается через IdHTTP1 они не будут записываться в куки менеджер и это надо делать вручную! правильно я понимаю

Автор: gather 12.5.2008, 07:52
en-horror, берем снифер и смотрим, что сваливается браузеру, а что Вашей программе.
100% гарантии даже презервативы не дают.

Автор: Syrex 12.5.2008, 11:01
Так может кто-нибудь все-таки даст пример, как из своей проги заполнить поля Логин и Пароль на загруженной в CppWebBrowser странице?

Цитата

Допустим на сайте есть поля Логин и пароль. 
Данный сайт я загружаю в CppWebBrowser
В проге два компонента типа Edit
Как сделать, чтобы при нажатии на кнопку в программе поля  Логин и пароль (которые расположены на загруженном сайте) заполнились значениями из Edit1 и Edit2.

Автор: SABROG 12.5.2008, 16:30
Никто не даст...

Цитата

TCppWebBrowser wraps the IWebBrowser2 interface from Microsoft’s Shell Doc Object and Control Library (SHDOCVW.DLL) to allow you to create a customized Web browsing application or to add Internet, file and network browsing, document viewing, and data downloading capabilities to your C++Builder applications.

Note:    Because TCppWebBrowser wraps the SHDOCVW.DLL, you must have SHDOCVW.DLL installed to use this component. This DLL ships with Internet Explorer 4 and later.


Т.е. грубо-говоря это COM объект с движком Internet Explorer, который внедряется в программу как ActiveX на сайтах. Т.е. у тебя есть только те функции, которые тебе разрешил иметь Билли. И среди них нет функций, которая бы возвращала хотябы сокет. Все зашито внутри.

А вообще, чтобы передать любые параметры формы достаточно иметь - обычный сокет + RFC2616. Все передается в текстовом виде, поэтому пообщаться с http сервером не сложнее общения IRC ботов.

Автор: Syrex 15.5.2008, 11:58
То есть на билдере написать что-то типа RoboForm невозможно?

Автор: SABROG 15.5.2008, 12:39
RoboForm - плагин, который юзает функции экспортируемые браузером. Если есть SDK, то пиши наздоровье. Иначе только на чистых сокетах.

Автор: en-horror 16.5.2008, 00:29
Цитата

en-horror, берем снифер и смотрим, что сваливается браузеру, а что Вашей программе.
100% гарантии даже презервативы не дают.

это я смотрел... в том то и дело что браузеру сваливаются куки... а программе нет =( поэтому и перекидывает обратно на страницу регистрации, только я так и не понял почему мне они не сваливаются?

Автор: gather 16.5.2008, 08:28
en-horror, Какого вида сваливаются куки? Пример в студию.

Автор: en-horror 16.5.2008, 21:03
вот
POST /login.php HTTP/1.1
User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)
Host: vkontakte.ru
...
Cookie: remixfriendsCommon=1; remixwall=1; remixmatches=1; remixautobookmark=10; remixchk=5
Cookie2: $Version=1
...
email=horreodor%40****.ru&pass=*****

далее идет
GET /js/simpleajax.js?3 HTTP/1.1
User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)
Host: vkontakte.ru
..
Cookie: remixfriendsCommon=1; remixwall=1; remixmatches=1; remixautobookmark=10; remixchk=5; remixmid=109351; remixemail=horreodor%****.ru; remixpass=352a************f26dc453edfa7
Cookie2: $Version=1

далее идет тоже самое на
GET /js/langRus.js HTTP/1.1
GET /js/functions.js?5 HTTP/1.1

мне же
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Host: vkontakte.ru
User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)


email=horreodor%****.ru&pass=****

Автор: gather 17.5.2008, 13:53
Код

Cookie: remixfriendsCommon=1; remixwall=1; remixmatches=1; remixautobookmark=10; remixchk=5; remixmid=109351; remixemail=horreodor%****.ru; remixpass=352a************f26dc453edfa7
Cookie2: $Version=1

В чем проблема подсунуть такие же?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)