l2top_vote своими руками [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Ss[x]dD, 10 Apr 2010.

  1. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Вот код на получение капчи

    procedure TForm1.Button1Click(Sender: TObject);
    var CM: TIdCookieManager;
    captcha1:TMemoryStream;
    captcha2:TMemoryStream;
    ID, pref: String;
    begin
    ID:=edit1.text;
    pref:= edit2.Text;
    CM:= TidCookieManager.Create(IdHTTP1);
    IdHTTP1.AllowCookies:=True;
    IdHTTP1.CookieManager:=CM;
    IdHTTP1.HandleRedirects:=True;
    captcha1:=TMemoryStream.Create;
    captcha2:=TMemoryStream.Create;
    idhttp1.Request.Referer:=('http://l2top.ru/vote/' + ID + '/?prefix='+pref);
    idhttp1.Get('http://l2top.ru/getimg.php?47',captcha1);
    captcha1.SaveToStream(captcha1);
    captcha1.SaveTofile('captcha1.jpeg');
    Image1.Picture.LoadFromfile('captcha1.jpeg');
    Edit5.Text:= idhttp1.Request.Referer;
    idhttp1.Request.Referer:=('http://l2top.ru/vote/' + ID + '/?prefix='+pref);
    idhttp1.Get('http://l2top.ru/getimg.php?610',captcha2);
    captcha2.SaveToStream(captcha2);
    captcha2.SaveTofile('captcha2.jpeg');
    Image2.Picture.LoadFromfile('captcha2.jpeg');
    end;


    Кто нибудь может показать, как и куда отправить эту капчу? Часа 2 искал что куда, пытался разобраться как, вобщем не получилось.
     
    #1 Ss[x]dD, 10 Apr 2010
    Last edited: 10 Apr 2010
  2. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    antigate.com
     
  3. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Открываешь страницу, где просят ввести ник и капчу,
    Исходный код, находишь <form ....
    и выбираешь action= .... // на какой скрипт отправляется форма
    input name="..." // тут смотришь имя, которая отвечает за капчу и ник, делаешь связку и отправляешь.

    P.s. и зачем плодить темы, Создал одну в ней бы и писал.
     
  4. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Имеется вот такая строчка html документа:

    <form action="free.php" method="post"><table> <tr><th align="left"><font size="1" face="Tahoma">Ваш eMail:<br><br>Код подтверждения: <br><input type="submit" value="Получить "><th align="left"><input type="text" name="email"><p><input type="text" name="keystring"><br><th align="left"><img src="cp.php?PHPSESSID=57lgimm74385h9qi9dvrthkd47"></table></form></font><br>

    помогите правиль отправить POST запрос на сервер.

    И еще, тут есть такая строчка интересная - PHPSESSID=57lgimm74385h9qi9dvrthkd47
    При каждом новом запросе это значение меняется, вот хотелось бы еще сделать обработчик, чтобы допустим в memo1 грузился текст 1.html и нажав на кнопку в memo2 вывелось значение (в нашем случае - 57lgimm74385h9qi9dvrthkd47)
     
  5. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    на скрипт: free.php методом пост
    Отправляй:
    'email='+Edit1.text
    'keystring='+Edit2.text

    Edit1 - вводишь E-mail
    Edit2 - Вводишь капчу

    PHPSESSID - Что это такое, читаем тут.

    Code:
    <img src="cp.php?PHPSESSID=57lgimm74385h9qi9dvrthkd47">
    В данном случаи я думаю, она используется для получения capcha и дальшельшей проверки.

    Что бы получить сессию парси страницу, команды:
    Pos('PHPSESSID=',Page), Copy, Delete.
     
  6. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Вот нашел код один, который ищет в мемо введенное слово, и выделяет его:

    procedure TForm1.Button1Click(Sender: TObject);
    var // Объявляем переменные
    Find:string; // Искомая строка
    i:integer; // Счетчик для цикла
    begin
    find:=Edit1.Text; // Записываем в find текст из Edit
    For i:=0 to Memo1.Lines.Count-1 do // Запускаем цикл поиска строки
    If Pos(FIND, Memo1.Lines.Text)<>0
    Then
    Begin
    Memo1.SetFocus();
    Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1;
    Memo1.SelLength:=Length(FIND);
    End;
    end;

    Есть строка : <img src="cp.php?PHPSESSID=57lgimm74385h9qi9dvrthkd47">
    в едит1 вводим : PHPSESSID=
    Нужно, чтобы в едит2 вышло : 57lgimm74385h9qi9dvrthkd47, т.е. до знаков ">
     
  7. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    PHP:
      function ParserBlock(
              
    Page:string;
        const 
    Param1,
              
    Param2:string):string;
      var
        
    BeginPos,
        
    EndPos:integer;
        
    TempPage:string;
      
    begin
        BeginPos
    :=AnsiPos(Param1,Page)+length(Param1);
        
    delete(Page,1,beginPos-1);
        
    BeginPos:=AnsiPos(Param1,Page)+length(Param1);
        
    EndPos:=AnsiPos(Param2,Page);
        
    Result:=copy(page,1,EndPos-1);
      
    end;
    Применять:
    PHP:
    str:='<img src="cp.php?PHPSESSID=57lgimm74385h9qi9dvrthkd47">';
    edit2.Text:=ParserBlock(str,Edit1.text,'">');
     
  8. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Вот что пришло на GET запрос:
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 WebMoney Advisor
    Accept: image/png,image/*;q=0.8,*/*;q=0.5
    Accept-Language: ru,en-us;q=0.7,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://terabit.ru/free.php
    Cookie: PHPSESSID=800fsde3g5jie4njrp6be4rs30
    If-Modified-Since: Sat, 05 Sep 2009 13:42:34 GMT
    If-None-Match: "1f029b-318d-c9f8c680"
    Cache-Control: max-age=0

    HTTP/1.x 304 Not Modified
    Date: Sun, 11 Apr 2010 15:40:07 GMT
    Server: Apache/2.2.3 (Red Hat)
    Connection: close
    Etag: "1f029b-318d-c9f8c680"

    Вот что отправилось на POST:
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 WebMoney Advisor
    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
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://terabit.ru/free.php
    Cookie: PHPSESSID=800fsde3g5jie4njrp6be4rs30
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 45
    email=QAZ1aAA1WsX%40YahOo.com&keystring=8k4hd


    HTTP/1.x 200 OK
    Date: Sun, 11 Apr 2010 15:40:15 GMT
    Server: Apache/2.2.3 (Red Hat)
    X-Powered-By: PHP/5.2.10
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Length: 6886
    Connection: close
    Content-Type: text/html; charset=windows-1251


    Вот что я пытаюсь отправить через дельфи:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    PageText: TStringList;
    PostData: TStringList;
    Http: TidHttp;
    CM: TidCookieManager;
    email, keystring: String;
    begin
    {Создаем объекты в памяти}
    Http:=TIdHTTP.Create(Self);
    PostData:=TStringList.Create;
    CM:=TidCookieManager.Create(Http);

    {Задаем нужные параметры}
    HTTP.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 WebMoney Advisor';
    HTTP.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    HTTP.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
    HTTP.Request.AcceptEncoding:='gzip,deflate';
    HTTP.Request.AcceptCharset:='windows-1251,utf-8;q=0.7,*;q=0.7';
    HTTP.Request.Connection:='keep-alive';
    HTTP.Request.Referer:='http://terabit.ru/free.php';

    //А вот тут у меня судя по всему что то неправильно написано или все правильно?

    HTTP.Request.Cookie:='PHPSESSID=800fsde3g5jie4njrp6be4rs30'; //тут ID будет менятся
    HTTP.Request.Content-Type:='application/x-www-form-urlencoded';


    HTTP.CookieManager:=CM;
    HTTP.AllowCookies:=True;
    HTTP.HandleRedirects:=True;

    А вот отправка запроса у меня правильная?

    {2. Формируем запрос}
    email:=edit1.text;
    keystring:=edit2.text;
    url:=edit6.text;
    PostData.Add('email&keystring');

    PageText.Text:=HTTP.Post('url', PostData);
     
    #8 Ss[x]dD, 12 Apr 2010
    Last edited: 12 Apr 2010
  9. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Тоесть Поле на сайте = текст.
    PHP:
     PostData.Add('email='+Edit1.text);
     
    PostData.Add('keystring='+Edit2.Text);
    то что в апострафах, одинарная ковычка (') считается текстом, поэтому убери вокруг Url.
    PHP:
    PageText.Text:=HTTP.Post(edit6.textPostData);
    //или
    PageText.Text:=HTTP.Post(urlPostData);
    И в самом конце, чаще после перед end припиши ниже указаный код.
    PHP:
    // Не забываем освобождать.
     
    PostData.Free
    P.s. Правильность заполнения запроса не смотрел. Голова не варит, а там еще в добавок много буковок.
     
  10. Ss[x]dD

    Ss[x]dD New Member

    Joined:
    7 Jun 2009
    Messages:
    31
    Likes Received:
    0
    Reputations:
    0
    Ошибку выдает :(
    HTTP.Request.Cookie:='PHPSESSID=800fsde3g5jie4njrp 6be4rs30';

    Вот с этим куксом как поступать? Я его в url добавил.
     
  11. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    1. Я давал тебе ссылку почитать, что такое сессия
    2. Куки скорее всего будут выглядить так:
    HTTP.Request.Cookie:='MTI2NjU3NzYzN31MTsDfY5yMzE5OTI1MDA4NjU2Mzk3NDEwMTExsDU0NDUyNjAxNWExODQxYjkwMWQ1MmJkYTVhYzVjYTc1OGIyZmRjNzg1MGNkNTlmOWQ%3D';
    Самый простой способ их посмотреть Опера>Сервис>Дополнительно>Управление Cookies... там вводишь сайт и выводится все, что тебе надо.