Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2009, 21:19   #1
SynonymMixer
Пользователь
 
Аватар для SynonymMixer
 
Регистрация: 25.01.2009
Сообщений: 10
По умолчанию Подскажите что не так...

Начал писать реггер для Lopas.Ru, но вот что-то не получается, может кто то подскажет что не так, и какую какую литература почитать на тему Post и Get запросов...
Код:
unit Lopas;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,PNGImage, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, StdCtrls, ExtCtrls, IdCookieManager, IdCookie;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Image1: TImage;
    Edit4: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
captcha:TMemoryStream;
Data:TStringList;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Data:=TStringList.Create;
Data.Add('username='+Edit1.Text);
Data.Add('password='+Edit2.Text);
Data.Add('password2='+Edit2.Text);
Data.Add('email='+Edit3.Text);
Data.Add('security_code='+Edit4.Text);
Data.Add('agree=1');
Data.Add('Submit=Регистрация');
idhttp1.Request.Referer:='http://lopas.ru/signup.php';
Memo2.Text:=idhttp1.Post('http://www.lopas.ru/signup.php',data);
Data.Free;
MessageDlg('!!!',mtinformation,[mbOK],0);
Memo1.Lines.add(Edit1.Text);
Memo1.Lines.add(Edit2.Text);
Memo1.Lines.add(Edit3.Text);
Memo1.Lines.SaveToFile('acc.txt');
Memo2.Lines.SaveToFile('post.txt');
end;

procedure TForm1.FormCreate(Sender: TObject);
var CM : TIdCookieManager;
begin
CM := TidCookieManager.Create(IdHTTP1);
IdHTTP1.AllowCookies := True;
IdHTTP1.CookieManager := CM;
IdHTTP1.HandleRedirects := True;
captcha:=TMemoryStream.Create;
idhttp1.Get('http://lopas.ru/signup.php');
idhttp1.Get('http://lopas.ru/seccode.php',captcha);
captcha.SaveToFile('captcha.png');
Image1.Picture.LoadFromFile('captcha.png');

end;

end.

Последний раз редактировалось Квэнди; 26.01.2009 в 17:49.
SynonymMixer вне форума Ответить с цитированием
Старый 25.01.2009, 22:26   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Ну, idHttp1.Post это функция, ну и посмотрите что вам выдал сервер.
Да и как оформлять post-запросы следует почитать...
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 25.01.2009, 22:32   #3
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

А про cookies не забываешь?
Denager вне форума Ответить с цитированием
Старый 25.01.2009, 22:49   #4
SynonymMixer
Пользователь
 
Аватар для SynonymMixer
 
Регистрация: 25.01.2009
Сообщений: 10
По умолчанию

Я же подключил IdCookieManager, IdCookie...
Выложил полный код в первом посте

Последний раз редактировалось SynonymMixer; 25.01.2009 в 22:54.
SynonymMixer вне форума Ответить с цитированием
Старый 26.01.2009, 02:01   #5
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

Сорь, не заметил.
Сейчас набросал, посмотрел что шлет браузер и твоя программа, итого:

По нажатию на кнопку, перед строкой
Цитата:
Memo2.Text:=idhttp1.Post('http://www.lopas.ru/signup.php',data);
Необходимо прописать
Цитата:
idhttp1.Request.Referer:='http://lopas.ru/signup.php';
Поэтому у тебя в программе и появлялась капча "следующей" новой регистрации, т.к. серверу не передавалась эта строка реферра

И где
Цитата:
Data.Add('checkbox=1');
Должно быть
Data.Add('agree=1');

И все прекрасно у меня зарегалось

Последний раз редактировалось Denager; 26.01.2009 в 08:54.
Denager вне форума Ответить с цитированием
Старый 26.01.2009, 02:25   #6
SynonymMixer
Пользователь
 
Аватар для SynonymMixer
 
Регистрация: 25.01.2009
Сообщений: 10
По умолчанию

Спасибо.
SynonymMixer вне форума Ответить с цитированием
Старый 26.01.2009, 02:58   #7
SynonymMixer
Пользователь
 
Аватар для SynonymMixer
 
Регистрация: 25.01.2009
Сообщений: 10
По умолчанию

Denager, не подскажешь в чём тут может быть проблема?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, StdCtrls, ExtCtrls, Jpeg, IdCookieManager, IdCookie;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    Button2: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Image1: TImage;
    Button3: TButton;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
Data: TStringList;
s,s2:String;
kod:TMemoryStream;
jpeg: TJPEGImage;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Data:=TStringList.Create;
idhttp1.Get('http://id.rambler.ru/script/newuser.cgi');
Data.Add('back=''');
Data.Add('step=one');
Data.Add('login='+Edit1.Text);
Data.Add('firstname='+Edit2.Text);
Data.Add('lastname='+Edit3.Text);
Data.Add('submit=  Продолжить  ');
s:=idhttp1.Post('http://id.rambler.ru/script/newuser.cgi',data);
Data.Free;
Memo1.Text:=s;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit4.Text:=copy(s,pos('name="number" value=',s)+21,32);
kod:=TMemoryStream.Create;

end;

procedure TForm1.Button3Click(Sender: TObject);


begin


Data:=TStringList.Create;
Data.Add('back=''');
Data.Add('step=one');

Data.Add('login='+Edit1.Text);
Data.Add('domain=rambler.ru');
Data.Add('firstname='+Edit2.Text);
Data.Add('lastname='+Edit3.Text);

Data.Add('password='+Edit5.Text);
Data.Add('password2='+Edit5.Text);
Data.Add('question=Девичья фамилия матери');
Data.Add('answer='+Edit6.Text);
Data.Add('icq_mode=getnew');
Data.Add('gender=gender_1');
Data.Add('news=1');
Data.Add('number='+Edit4.Text);
Data.Add('hash='+Edit7.Text);
Data.Add('submit=Зарегистрировать имя');
s2:=idhttp1.Post('http://id.rambler.ru/script/newuser.cgi',data);

Memo1.Text:=s2;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
kod.SaveToFile('C:\kod.jpg');
jpeg := TJPEGImage.Create;
try
jpeg.CompressionQuality := 100;
jpeg.LoadFromFile('C:\kod.jpg');
Image1.Picture.Bitmap.Assign(Jpeg);
finally
jpeg.Free;
end;
end;


procedure TForm1.Button5Click(Sender: TObject);
begin
idhttp1.Get('http://id.rambler.ru/captcha/'+Edit4.Text+'.jpg',kod);

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Memo1.Text:='';
end;

end.
SynonymMixer вне форума Ответить с цитированием
Старый 26.01.2009, 08:54   #8
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

SynonymMixer, а в этом коде что не так?
Ставь снифер и смотри, что шлет браузер и что получается у тебя, и формируй запросы 1:1
Denager вне форума Ответить с цитированием
Старый 26.01.2009, 18:53   #9
SynonymMixer
Пользователь
 
Аватар для SynonymMixer
 
Регистрация: 25.01.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Denager Посмотреть сообщение
SynonymMixer, а в этом коде что не так?
Ставь снифер и смотри, что шлет браузер и что получается у тебя, и формируй запросы 1:1
Вот задался сегодня вопросом какой снифер поставить, посмотрел нечего нормального не нашел. Может быть поделитесь секретом какой снифер лучше использовать =)
SynonymMixer вне форума Ответить с цитированием
Старый 26.01.2009, 21:46   #10
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

CommView
Ethreal
Denager вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что я не так сделал в игре???Подскажите. spamer Общие вопросы Delphi 1 06.01.2009 23:04
Подскажите что не так в программе? Toxass Общие вопросы Delphi 9 20.12.2008 10:11
Что то не так с переменными.. adwaer Помощь студентам 1 19.06.2008 08:42
Подскажите что тут не так!? dcl Общие вопросы Delphi 5 28.03.2007 08:15
Что-то не так Radiofuck Помощь студентам 2 16.01.2007 22:06