Хочу напсать сабмиттер [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Goodwin_, 5 Mar 2011.

  1. Goodwin_

    Goodwin_ Elder - Старейшина

    Joined:
    29 May 2008
    Messages:
    61
    Likes Received:
    6
    Reputations:
    0
    Добрый день. Есть желание разобраться в механизме и написать свой сабмиттер (на примере регистрации в каталогах) Но информации по этому вопросу не могу найти. Поделитесь у кого что есть или подскажите в каком направлении копать. Обещаю делиться наработками.
     
  2. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    А что советовать :)
    Бери код страницы интересующих каталогов, и смотри что куда как отправляется.
    потом бери любую компоненту по работе с сетью и пиши на ней.
    Потом снифер и дебагер в руки и отлаживать, отлаживать, отлаживать.
     
  3. 3Bepek

    3Bepek New Member

    Joined:
    3 Mar 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    -5
    Смотри значит, я тоже когда-то интересовался этой темой, в основном тут заложены одни парсеры, тоесть твоя программа должна рыть всю страницу и распознаватель формы: Например форма cообщения:<input type="text" size="9" maxlength="100" name="message" id="message"> значит робот вставляет сюда сообщение. Также нужна можно сделать функцию изучения, чтобы допустим тебе доска попалась которая не забита в твоем роботе пользователь ее сам заполняет и запоминает форму чтобы распознать их в следующий раз, ну это все что я узнал когда то :)
     
  4. heJiZzZ

    heJiZzZ Member

    Joined:
    1 Jun 2009
    Messages:
    39
    Likes Received:
    18
    Reputations:
    10
    если будешь писать - пиши лучше на indy, это попроще будет чем с сокетами мараться
     
  5. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,309
    Reputations:
    327
    вы ваще чтоли тут охренели?

    ты булками поработай с гуглом

    давай еще стартани топик о том что ты собираешься написать через месяц
     
  6. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    и так, покажу на примере: допустим мы хотим залогиниться в mail.ru программно через вэбформу. идем на мэйль ру, на страницу входа http://win.mail.ru/cgi-bin/login,(можно и на главную но там много параши в html коде, и трудно разобраться)) открываем исходный код страницы и ищем описание формы входа. вот оно:
    HTML:
    <form method="post" action="http://win.mail.ru/cgi-bin/auth" name="Auth" onSubmit="return CheckForm(this);">
    
    <input type="hidden" name="page" value="">
    
    <input type="hidden" name="post" value="">
    
    <input type="hidden" name="login_from" value="">
    
    <tr>
    
    <td><img src=http://img.imgsmail.ru/0.gif width=55 height=1><br>Имя</td>
    
    <td width=63%><input type="text" name="Login" value="" class=w_100></td>
    
    <td width=37%><select class=w_100  name="Domain"><option value="mail.ru"  SELECTED>@mail.ru</option><option value="inbox.ru" >@inbox.ru</option><option value="bk.ru" >@bk.ru</option><option value="list.ru" >@list.ru</option></select></td>
    
    </tr>
    
    <tr>
    
    <td>Пароль</td>	
    
    <td colspan=2>
        <div id="tooltipAuth_shell" class="tooltip" style="display: none;"><div id="tooltipAuth_tail" class="tail"></div><div class="ltc"></div><div class="rtc"></div><div class="ts"></div><div class="inner"><div class="rborder">
    		<div id="tooltipAuth_mess" class="mess">
    			<span id="tooltipAuth_mess_var">Вы вводите русские буквы</span>
    			<span id="tooltipAuth_mess_var2" style="display: none;">Включен Caps Lock</span>
    			<span id="tooltipAuth_mess_var3" style="display: none;">Пароль содержит русские буквы</span>
    		</div>
    	<div id="tooltipAuth_struter" class="struter"></div></div></div><div class="lbc"></div><div class="rbc"></div><div class="bs"></div></div>
    <table width=100% cellpadding=0 cellspacing=0 border=0><tr>
    
    <td width=100%><input  type="password" name="Password" class=w_100></td>
    
    <td>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.mail.ru/pages/help/2.html#2185" target=_new>Забыли&nbsp;пароль?</a></td>
    
    </tr></table>
    
    </td>		
    
    </tr>			
    
    <tr>				
    
    <td>&nbsp;</td>
    
    <td><input type=checkbox name="level" value=1 id="alien"><label for="alien">Чужой компьютер</label></td>
    
    <td>&nbsp;</td>
    
    </tr>
    
    <tr>
    
    <td>&nbsp;</td>
    
    <td><input id="EnterBtn" type="Submit"  value="     Войти     " style="margin-top:4px"></td>
    
    <td>&nbsp;</td>
    
    </tr></form>
    
    
    если уберем все лишнее получим:
    HTML:
    <form method="post" action="http://win.mail.ru/cgi-bin/auth" name="Auth">
    
    <input type="hidden" name="page" value="">
    
    <input type="hidden" name="post" value="">
    
    <input type="hidden" name="login_from" value="">
    <input type="text" name="Login" value="" class=w_100>
    <select class=w_100  name="Domain"><option value="mail.ru"  SELECTED>@mail.ru</option><option value="inbox.ru" >@inbox.ru</option><option value="bk.ru" >@bk.ru</option><option value="list.ru" >@list.ru</option></select>
    
    <input  type="password" name="Password" class=w_100>
    
    
    <input type=checkbox name="level" value=1 id="alien">
    
    
    <input id="EnterBtn" type="Submit"  value="     Войти     " style="margin-top:4px">
    </form>
    
    
    отсюда мы видим, что данные передаються скрипту http://win.mail.ru/cgi-bin/auth методом post. все. теперь стартуем delphi, кидаем компонентв idhttp, memo и кнопку на форму, и пишем на нажатие кнопки код(я не проверял работоспособность , но суть такая):
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    
    begin
    memo1.Lines.Clear;
    memo1.Lines.Add('Login=v.vova15');
    memo1.Lines.Add('Domain=mail.ru');
    memo1.Lines.Add('Password=btf7xkjbc9');
    memo1.Lines.Add('level=1');
    idhttp1.AllowCookies:=true;
    memo2.Text:=idhttp1.Post('http://win.mail.ru/cgi-bin/auth',memo1.Lines);
    end;
    
    end.
    
     
  7. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    realcoder,
    А не проще снифать пакеты и смотреть чего браузер отправляет? А потом просто повторить его действия.
     
  8. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Jakeroid не разговаривай с ботом это же копипаст, да еще и наглый копипаст - без копирайтов и ссылки на источник.
     
  9. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    Jakeroid, зачем ковырять в пакеты, когда можно просто послать http запрос.
    GhostOnline, какой копипаст?! чтобы такое написать достаточно просто знать основы работы протокола http и уметь работать с Indy.
     
  10. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    realcoder IdHttp, авторизация на mail.ru, разбор полей ввода в форме авторизации - где-то я такое уже видел :eek: