|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.07.2010, 11:47 | #1 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
проблемы с написанием проги для регестрации на blog.ru
набросал прожку для авторегера на сайте blog.ru, но непонятно мне по каким приченам она не регестрируеться!! при отправке пост запроса снифер получает в ответ 200 ок но регестрация не происходит! вот собственно код программы:
Код:
Последний раз редактировалось AlDelta; 09.07.2010 в 11:53. Причина: [CODE][/CODE] |
11.07.2010, 00:54 | #2 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 305
|
На сколько я заметил, IdHTTP не хочет получать куки =(
А точнее получает их но не передает серверу при последующих запросах. Исправить это можно вот так Код:
Код:
Код:
Последний раз редактировалось kangreon; 11.07.2010 в 00:56. |
11.07.2010, 17:00 | #3 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
спасибо большое за помощь!!!но помоги еще немного плиз!!! что то я функию когда всовываю в форму он даже на едиты материться что не понимает их!!!не могу сняит чихлы!!блин
|
11.07.2010, 17:07 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
эти компоненты нужно на форму кинуть для начала.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
11.07.2010, 17:07 | #5 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
ребята я засунул все в процедуру и вот что у меня получилось:
procedure TForm1.regestrationClick(Sender: TObject); var sl : TStringList; jpg : TJPEGImage; ms : TMemoryStream; c : string; begin sl := TStringList.Create; jpg := TJPEGImage.Create; ms := TMemoryStream.Create; IdHTTP1.Get('http://blog.ru/registration/step1'); c := IdHTTP1.Response.RawHeaders.Values['Set-Cookie name']; c := Copy(c,1,Pos(';',c)); IdHTTP1.Request.CustomHeaders.Add(' Cookie: '+c); IdHTTP1.Get('http://blog.ru/inc/captcha/image.php',ms); ms.Seek(0,0); jpg.LoadFromStream(ms); ms.Free; Image1.Picture.Assign(jpg); Image1.Width := jpg.Width; Image1.Height := jpg.Height; jpg.Free; sl.Add('user_data[nick]=' + Edit1.Text); sl.Add('user_data[email]=' + edit2.Text); sl.Add('user_data[password]=' + Edit3.Text); sl.Add('user_data[password_confirm]=' + Edit3.Text); sl.Add('user_data[sex]=male'); sl.Add('user_data[code]=' + InputBox('Eai?a', 'Aaaaeoa oaeno n eai?e', ''));// Здесь в code убрать пробелы =) sl.Add('ih-service-name=&ih-username=&ih-password=&service-name=&username=&password='); sl.Add('user_data[agreement]=1'); IdHTTP1.HandleRedirects := True; IdHTTP1.Post('http://blog.ru/registration/step1/submit',sl); end; снифер пишет на 2 гет и пост запросы 200 ок!!а регистрация не происходит!!и на сколько я смотрю куки он по прежнему не отправляет!!что делать?? Последний раз редактировалось maloy_ya; 11.07.2010 в 18:17. |
11.07.2010, 23:37 | #6 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 305
|
А зачем в строчке
c := IdHTTP1.Response.RawHeaders.Values['Set-Cookie name']; name ? При загрузки страницы в первый раз, сервер возвращает строчку Код:
Последний раз редактировалось kangreon; 11.07.2010 в 23:43. |
12.07.2010, 04:25 | #7 | |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
Цитата:
|
|
12.07.2010, 05:31 | #8 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 305
|
А какая у вас версия Indy установлена?
PS Исходник + exe в архиве |
12.07.2010, 10:37 | #9 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
огромное спасибо за помощь! не перевелись всетаки добрые люди в нашем рунете!!!
ps я вроде так вашу функцию и вставлял!!! может это правда из-за версии!!у меня щас 9.00.10. эт галимоватая??переустанавливать?? Последний раз редактировалось maloy_ya; 12.07.2010 в 10:47. |
15.07.2010, 16:02 | #10 |
Пользователь
Регистрация: 09.07.2010
Сообщений: 59
|
благодаря kangreon спасибо ему огромное прога начала регать аккаунты!!я туда всунул модуль работы с антикапча, но столкнулся с проблемой дальнейшей обработки аккауунта! При попытке спарсить нужные компоненты из страницы залогиненного аккаунта он в ответ выдает мне исходную страничку кода! Подскажите как его заставить невыходя из акка продолжать работу! вот как я пытаюсь это сделать:
procedure TForm1.Button2Click(Sender: TObject); var a,a1,a2: string; i,etc:integer; begin memo1.Lines.LoadFromFile('acc.txt') ; memo4.Lines.LoadFromFile('blogs.txt '); if Memo1.Lines.Count<>0 then // проверка ненулевого количества строк for i:=0 to Memo1.Lines.Count-1 do // задается цикл, равный кол-ву строк etc:=memo1.Lines.Count-1; memo2.Clear; memo3.Clear; for i:=0 to etc do begin a:= memo1.Lines[i]; a1:= Copy(a,1,Pos(':',a)-1); a2:= copy (a,Pos(':',a)+1,20); memo2.Lines.Add(a1); memo3.Lines.Add(a2); KD_RegBlogRu(IdHTTP1,image1,i); end; end; function TForm1.KD_RegBlogRu(IdHTTP : TIdHTTP; Image: TImage; i:integer): Boolean; var sl : TStringList; jpg : TJPEGImage; ms : TMemoryStream; c, res : string; // FS:TFileStream; begin sl := TStringList.Create; jpg := TJPEGImage.Create; ms := TMemoryStream.Create; IdHTTP.Get('http://blog.ru/registration/step1'); c := IdHTTP.Response.RawHeaders.Values['Set-Cookie']; c := Copy(c,1,Pos(';',c)); IdHTTP.Request.CustomHeaders.Add('C ookie: '+c); IdHTTP.Get('http://blog.ru/inc/captcha/image.php',ms); ms.Seek(0,0); jpg.LoadFromStream(ms); ms.Free; Image.Picture.Assign(jpg); Image.Width := jpg.Width; Image.Height := jpg.Height; jpg.SaveToFile('captcha.jpg'); jpg.Free; sl.Add('user_data[nick]=' + memo4.Lines[i]); sl.Add('user_data[email]=' + memo2.lines[i]); sl.Add('user_data[password]=' + memo3.Lines[i]); sl.Add('user_data[password_confirm]=' + memo3.lines[i]); sl.Add('user_data[sex]=female'); sl.Add('user_data[code]='+ recognize(filenameedit.Text,apikeye dit.Text,false,false,false,0,0)); //InputBox('Eai?a', 'Aaaaeoa oaeno n eai?e', '')); sl.Add('ih-service-name=&ih-username=&ih-password=&service-name=&username=&password='); sl.Add('user_data[agreement]=1'); IdHTTP.HandleRedirects := True; res:=IdHTTP.Post('http://blog.ru/registration/step1/submit',sl); postblog(IdHTTP1); memo1.Text:=res; memo1.Lines.SaveToFile('File2.txt') ; if pos('logout', res)<>0 then label2.Caption:='неcoздано'+memo2.L ines[i] else label2.Caption:='создано'+memo2.Lin es[i]; end; function recognize(filename: string; apikey: string; is_phrase: boolean; is_regsense: boolean; is_numeric: boolean; min_len: integer; max_len: integer): string; var ftype,tmpstr,captcha_id: String; i: integer; http: TIdHTTP; multi: Tidmultipartformdatastream; begin //сдесь запрос на антикапчу. Форум не позволил настолько много всунуть в сообщение!! end; function TForm1.Pars(T_, ForS, _T: string): string; var a, b: integer; begin Result := ''; if (T_ = '') or (ForS = '') or (_T = '') then Exit; a := Pos(T_, ForS); if a = 0 then Exit else a := a + Length(T_); ForS := Copy(ForS, a, Length(ForS) - a + 1); b := Pos(_T, ForS); if b > 0 then Result := Copy(ForS, 1, b - 1); end; function TForm1.postblog(IdHTTP : TIdHTTP): Boolean; var id, key, zapros : string; begin memo5.Lines.LoadFromFile('for event.txt'); zapros:=IdHTTP.Get('http://blog.ru/post_insert_form'); memo6.lines.Add(zapros); id:=Pars('id="id_blog" value="',zapros,'"'); memo_id.Text:=id; memo_id.Lines.SaveToFile('id.txt'); end; скажите что не так?? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с написанием проги на перевод чисел (С++) | Olya90 | Помощь студентам | 6 | 26.04.2009 16:38 |
Помогите с написанием маленькой проги | Nightprince | Помощь студентам | 6 | 16.01.2009 00:08 |