![]() |
|
|
#1
|
|||
|
|||
![]() Здравствуйте уважаемые форумчане. Возникла проблема, решил я написать программу для регистрации на сайте, но она не работает. Точнее не регистрирует.
В общем суть её такова: 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
|
|||
|
|||
![]() В общем я понял в чём моя ошибка. Кукисы передаются не все. Не передаются такие кукисы как: __utma, __utmz, __utmb, __utmc
Но почему они не передаются? Хотя вроде всё верно |