Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.08.2011, 22:23
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию Пост запрос

Здравствуйте уважаемые форумчане. Возникла проблема, решил я написать программу для регистрации на сайте, но она не работает. Точнее не регистрирует.
В общем суть её такова:
1) Открывает в Twebbrowser страницу с регистрацией.
2) Парсит через специальную процедуру исх. код с элементами.
3) Из него парсит каптчу.
4) Пользователь всё заполняет.
5) Отправляет пост запрос и поидеи регистрирует.
Но вот с 5 пунктом беда, остальное всё происходит на ура. Не могли бы вы посмотреть код, и может намекнуть на ошибку.
Сам код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var FS:TFileStream;
ur: TIDuri;
begin
IdHttp1.ProxyParams.Create;
IdHttp1.ProxyParams.ProxyServer:='92.244.99.86';
IdHttp1.ProxyParams.ProxyPort:=3128;
IdHttp1.AllowCookies := true;
IdHttp1.CookieManager := IdCookieManager1;
Memo1.Text:=Idhttp1.Get('http://api.recaptcha.net/noscript?k=6LeWK7wSAAAAAA_QFoHVnY5HwVCb_CETsvrayFhu');
captcha_field:=Copy(Memo1.text,Pos('<img width="300" height="57"',Memo1.text)+49,164);
FS:=Tfilestream.Create('captcha.jpg',FMCreate);
IdHttp1.Get('http://www.google.com/recaptcha/api/image?c='+captcha_field,FS);
Fs.Free;
Image1.Picture.Loadfromfile('captcha.jpg');
end;

procedure TForm1.Button3Click(Sender: TObject);
var
Data : Tstringlist;
result, result2 : string;
begin
 try
    IdHttp1.HandleRedirects := true;
    IdHttp1.ProxyParams.ProxyServer:='92.244.99.86';
    IdHttp1.ProxyParams.ProxyPort:=3128;
    IdHttp1.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)';
    IdHttp1.Request.Accept:='*/*';
    IdHttp1.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
    IdHttp1.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
    IdHttp1.Request.ProxyConnection:='keep-alive';
    IdHttp1.Request.ContentType:='application/x-www-form-urlencoded; charset=UTF-8';
    IdHttp1.Request.Referer:='http://www.erepublik.com/en/register';
    IdHttp1.Request.Pragma:='no-cache';
    IdHttp1.Request.CacheControl:='no-cache';
    Data:=Tstringlist.Create;
    Data.Add(UtF8Encode('recaptcha_challenge_field='+captcha_field));
    Data.Add(UtF8Encode('recaptcha_response_field='+Edit4.Text));
    Data.Add(UtF8Encode('_token='+Copy(Memo1.text,Pos('id=_token value=',Memo1.Text)+16,32)));
    result:=IdHttp1.Post('http://www.erepublik.com/ajax_captcha',Data);
    Data.Clear;
    IdHttp1.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    Data.Add('_token='+Copy(Memo1.text,Pos('id=_token value=',Memo1.Text)+16,32));
    Data.Add(UtF8Encode('citizen_name='+Edit1.Text));
    Data.Add(UtF8Encode('country_selected_id=41'));
    Data.Add(UtF8Encode('country_list=41'));
    Data.Add(UtF8Encode('region_selected_id=537'));
    Data.Add(UtF8Encode('region_list=537'));
    Data.Add(UtF8Encode('nationality_list=192'));
    Data.Add(UtF8Encode('citizen_email='+Edit2.Text));
    Data.Add(UtF8Encode('citizen_password=dsfsdfdsf'));
    Data.Add(UtF8Encode('recaptcha_challenge_field='+captcha_field));
    Data.Add(UtF8Encode('recaptcha_response_field='+Edit4.Text));
    result2:=IdHttp1.Post('http://www.erepublik.com/en/register',Data);
    finally
    ShowMessage(Result);
    ShowMessage(Result2);
    Data.Free;
    IdCookieManager1.Free;
    IdHttp1.Free;
  end;
end;

procedure TForm1.GetCode;
var
    iall : IHTMLElement;
begin
   if Assigned(WebBrowser1.Document) then
   begin
     iall := (WebBrowser1.Document AS IHTMLDocument2).body;

     while iall.parentElement <> nil do
     begin
       iall := iall.parentElement;
     end;
     memo1.Text := iall.outerHTML;
   end;
end;

Вот ссылка на регистрацию: http://www.erepublik.com/en/register

Последний раз редактировалось Мяфк, 24.08.2011 в 07:29.
Ответить с цитированием
  #2  
Старый 24.08.2011, 07:28
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

В общем я понял в чём моя ошибка. Кукисы передаются не все. Не передаются такие кукисы как: __utma, __utmz, __utmb, __utmc
Но почему они не передаются? Хотя вроде всё верно
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025