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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2013, 23:05   #21
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Вот как у меня код написан при нажатии войти вылезает ошибка а в Edit3 появляется надпись PNG
Код:
procedure TForm2.sSpeedButton7Click(Sender: TObject);
 var
LoginData, Response: TStrings;
S, s_id: string;
begin
LoginData := TStringList.Create;
Response := TStringList.Create;
 S:=IdHTTP1.Get('http://investreklam.com/');
 s_id:=Copy(S, Pos('PHPSESSID=', S), 20);
  S:=IdHTTP1.Get('http://investreklam.com/blocks/captcha.php');
 s_id:=Copy(S, Pos('captcha=', S), 20);
 edit3.text:=s_id;
try
LoginData.Add('email='+Edit1.Text);
LoginData.Add('pass='+Edit2.Text);
LoginData.Add('captcha='+Edit3.Text);
LoginData.Add('login=submit');
LoginData.Add('x=0');
LoginData.Add('y=0');
Response.Text := IdHTTP1.Post('http://investreklam.com/',LoginData);
if Pos('logout',Response.Text)>0 then
ShowMessage('Авторизовались!')
else
ShowMessage('Авторизация не удалась!');
finally
LoginData.Free;
end;
end;
nefakt вне форума Ответить с цитированием
Старый 27.04.2013, 23:31   #22
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Код:
procedure TForm2.sSpeedButton7Click(Sender: TObject);
 var
LoginData: TStrings;
S: string;
begin
LoginData := TStringList.Create;
try
IdHTTP1.Get('http://investreklam.com/');
// получить каптчу по ссылке 'http://investreklam.com/blocks/captcha.php', отобразить ее для удобства на другой форме и запросить ее значение у пользователя
LoginData.Add('email='+Edit1.Text);
LoginData.Add('pass='+Edit2.Text);
LoginData.Add('captcha='+Edit3.Text);
S := IdHTTP1.Post('http://investreklam.com/',LoginData);
if Pos('<a href="http://investreklam.com/exit/">', S)>0 then
ShowMessage('Авторизовались!')
else
ShowMessage('Авторизация не удалась!');
finally
LoginData.Free;
end;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.04.2013, 23:38   #23
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Спасибо сейчас попробую а можно поставить так что бы при загрузки формы он автоматически делал запрос на капчу что бы она сразу выводилась как форма откроется?!

А капчу я запрос делаю так
Код:
var
 html:String;
 Stream:TStream;
 png:TPNGObject;
begin
   try
    png:=TPNGObject.Create
    html:=IdHTTP1.Get('http://investreklam.com/blocks/captcha.php');
    Delete(html,1,pos('<td><img src="',html)+length('<td><img src="'));
    Delete(html,pos('" id',html),length(html));
    Stream:=TStringStream.Create(IdHTTP1.Get('http://investreklam.com/blocks/captcha.php'+html));
    png.LoadFromStream(Stream);
    Image1.Picture.Assign(png);
    Stream.Free;
    png.Free;
   except
    on e:Exception do
     begin
      png.Free;
      Stream.Free;
     end;
   end;
Подключил модель PNGimage и при компиляции он ругается на PNGimage.pas
nefakt вне форума Ответить с цитированием
Старый 27.04.2013, 23:42   #24
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

На мой взгляд это будет не совсем корректно, но так сделать можно.
Тогда в onCreate формы делаете 2 get запроса (первый получит PHPSESSID, а второй - каптчу), а по кнопке посылаете POST запрос.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.04.2013, 23:51   #25
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

А на счет капчи то что я выше написал то что ругается на pngimage.pas что мне делать в этом случае? и правильно ли написан код на её получения?
nefakt вне форума Ответить с цитированием
Старый 28.04.2013, 00:18   #26
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

У меня не ругается (Delphi 2010).
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Stream: TMemoryStream;
  png: TPNGObject;
begin
  try
    png := TPNGObject.Create;
    Stream := TMemoryStream.Create;
    IdHTTP1.Get('http://investreklam.com/blocks/captcha.php', Stream);
    Stream.Position := 0;
    png.LoadFromStream(Stream);
    Image1.Picture.Assign(png);
  finally
    png.Free;
    Stream.Free;
  end
end;
UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 28.04.2013 в 01:03.
BDA на форуме Ответить с цитированием
Старый 28.04.2013, 00:45   #27
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Все авторизовался спасибо за помощь.
nefakt вне форума Ответить с цитированием
Старый 28.04.2013, 03:54   #28
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Ещё последний вопрос, я пытаюсь пропарсить определенные данные
с помощью данного кода
Код:
procedure TForm2.Button9Click(Sender: TObject);
var
HTTP: TidHTTP;
reg2:TRegExpr  ;
prx2: TStringList;
str: string;
int: integer;
Begin
  HTTP:=TidHttp.Create;
  str:= HTTP.Get('http://investreklam.com/crystal-work/');

 ////////////
 prx2:= tstringlist.Create;
 reg2:= tregexpr.Create; 
 reg2.Expression:='<p align="left">(.*?)</p>' ;   
  if reg2.Exec(utf8toansi (str)) then repeat  
 prx2.Add(reg2.Match[1]) ;
 Until
 Not
 Reg2.ExecNext; //Готово

 ////////////

   Form2.Memo1.Lines.Add(prx2.Text)  ;
End;
В итоге ни чего не появляется в memo а если пропарсить просто исходной код он выведет его полностью но со страницы типа я не авторизован хотя до этого через программу авторизуюсь.
Из-за чего это может быть? Заранее спасибо
nefakt вне форума Ответить с цитированием
Старый 28.04.2013, 09:34   #29
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

из-за того что не аутентифицированны
eval вне форума Ответить с цитированием
Старый 29.04.2013, 13:23   #30
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Как сделать парсинг через WebBrowser в инете искал сколько находил пробовал что то не получалось а обычный парсинг в обычном браузере получается. Но мне нужно именно через webbrowser. Заранее спасибо.
nefakt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Captcha shananina-katya Помощь студентам 1 15.05.2012 14:07
captcha Boy7407 Работа с сетью в Delphi 11 09.01.2012 06:22
Проблема с CAPTCHA maximka787 PHP 2 24.08.2010 00:54
отловить Captcha akimov_aleks Работа с сетью в Delphi 3 01.04.2010 23:31
captcha DeDoK Работа с сетью в Delphi 9 30.03.2010 23:22