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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 01:30   #1
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию проблемы с recaptcha

Здравствуйте
Для извлечения картинки написал такой код:
Код:
procedure TForm5.Button9Click(Sender: TObject);
var
HTTP: THTTPSend;
ID,Cap_ID:string;
begin
HTTP := THTTPSend.Create;
ID := Pars('http://api.recaptcha.net/challenge?k=', GetHTMLCode(WebBrowser1), '">');
http.HTTPMethod('get','http://www.google.com/recaptcha/api/challenge?k=' + ID);
Cap_ID := Pars('challenge : ''', StreamToStr(HTTP.Document), ''',');
HTTP.Document.Clear;
HTTP.Headers.Clear;
http.HTTPMethod('get','http://www.google.com/recaptcha/api/image?c=' + cap_id);
http.Document.SaveToFile(ExtractFilePath(paramstr(0)) + '\Captcha\'+ 'Captcha.jpeg');
HTTP.Free;
end;
работает код отлично, но картинка то не та !!!!, погуглив увидел что эта проблема у многих и решения так и не нашли(

но тут вроде бы увидел решение , посмотрел в Фаерфоксе ещё раз код рекапчи и увидел в нём ссылку на картинку
http://www.google.com/recaptcha/api/image?c=03AHJ_Vut0LckTlvdN_R7Ge_gGb CDJy4uq-o-Vwh7C0phfANL9ZtxzIGE5rrAOmqbGjJYqZ1 1v62vIE5jkcgVCQPf5EVjZQdewvBuptvyFs Ay9wmB6nxIvHZetYAQHSqhyhc584QhjDs8y 89f-mPxyJna-C0t8FTQd6g

вот думаю и решение проблемы, но как оказалось в html в WebBrowser нету этой строки
</script><script type="text/javascript" src="http://www.google.com/recaptcha/api/js................................. ..................

может нужно догружать как то части html ? или может кто знает как решить эту проблему по другому ?
designer999 вне форума Ответить с цитированием
Старый 25.12.2010, 02:06   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Код HTML:
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6LdDfrwSAAAAAM23QnPqkMU7WHHyuWFXTSaIBDU7"></script>

	<noscript>
  		<iframe src="http://api.recaptcha.net/noscript?k=6LdDfrwSAAAAAM23QnPqkMU7WHHyuWFXTSaIBDU7" height="300" width="500" frameborder="0"></iframe>
http://api.recaptcha.net/noscript?k=
Тут можно получить адрес картинки.
У меня где-то был исходник запроса с recaptha.
Поищу утром.
kangreon вне форума Ответить с цитированием
Старый 25.12.2010, 02:13   #3
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
[HTML]
http://api.recaptcha.net/noscript?k=
Тут можно получить адрес картинки.
У меня где-то был исходник запроса с recaptha.
Поищу утром.
ну так вот написал что бы вытаскивала
Код:
procedure TForm5.Button9Click(Sender: TObject);
var
HTTP: THTTPSend;
ID,Cap_ID:string;
begin
HTTP := THTTPSend.Create;
ID := Pars('http://api.recaptcha.net/challenge?k=', GetHTMLCode(WebBrowser1), '">');
http.HTTPMethod('get','http://www.google.com/recaptcha/api/challenge?k=' + ID);
Cap_ID := Pars('challenge : ''', StreamToStr(HTTP.Document), ''',');
HTTP.Document.Clear;
HTTP.Headers.Clear;
http.HTTPMethod('get','http://www.google.com/recaptcha/api/image?c=' + cap_id);
http.Document.SaveToFile(ExtractFilePath(paramstr(0)) + '\Captcha\'+ 'Captcha.jpeg');
HTTP.Free;
end;
только с http://api.recaptcha.net/challenge?k=, ну если у тебя всё работает то скинь пожалуйста
designer999 вне форума Ответить с цитированием
Старый 25.12.2010, 03:20   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Исходника не нашел...
Но набросал пример регистрации c reCaptcha.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHTTP, StdCtrls, ExtCtrls, StrUtils, jpeg;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  http : TIdHTTP;
  sl : TStringList;

implementation

{$R *.dfm}

function Input(Text,Value: string):string ;
var
  i:integer;
begin
  i := Pos('"'+value+'"',Text);
  i := PosEx('value',Text,i);
  i := PosEx('"',Text,i)+1;
  Result := Copy(Text,i,PosEx('"',Text,i)-i);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s, s1, re: string;
  i : Integer;
  ms : TMemoryStream;
  jpg : TJPEGImage;
begin
  http := TIdHTTP.Create;
  http.HandleRedirects := True;
  s := http.Get('http://tvplayer.co.cc/forum/ucp.php?mode=register');
  sl := TStringList.Create;
  sl.Add('agreed=Я согласен с этими условиями');
  sl.Add('change_lang=');
  sl.Add('creation_time='+ Input(s,'creation_time'));
  sl.Add('form_token='+ Input(s,'form_token'));
  s := http.Post('http://tvplayer.co.cc/forum/ucp.php?mode=register',sl);
  i := Pos('http://api.recaptcha.net/challenge',s);
  i := PosEx('=',s,i)+1;
  re := Copy(s,i,PosEx('"',s,i)-i);

  s1 := http.Get('http://api.recaptcha.net/challenge?k='+ re);
  i := Pos('RecaptchaState',s1);
  i := PosEx('challenge',s1,i);
  i := PosEx(#39,s1,i)+1;
  re := Copy(s1,i,PosEx(#39,s1,i)-i);
  ms := TMemoryStream.Create;
  http.Get('http://www.google.com/recaptcha/api/image?c='+re,ms);
  ms.Seek(0,0);
  jpg := TJPEGImage.Create;
  jpg.LoadFromStream(ms);
  ms.Free;
  Image1.Picture.Assign(jpg);
  jpg.Free;

  sl.Clear;
  sl.Add('lang=ru');
  sl.Add('tz='+ Input(s,'tz'));
  sl.Add('recaptcha_challenge_field='+re);
  sl.Add('agreed=true');
  sl.Add('change_lang=0');
  sl.Add('confirm_id='+ Input(s,'confirm_id'));
  sl.Add('submit=Отправить');
  sl.Add('creation_time='+ Input(s,'creation_time'));
  sl.Add('form_token='+ Input(s,'form_token'));

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  sl.Add('username='+ Edit1.Text);
  sl.Add('email='+ Edit1.Text+'@mail.ru');
  sl.Add('email_confirm='+ Edit1.Text+'@mail.ru');
  sl.Add('new_password='+ Edit1.Text);
  sl.Add('password_confirm='+ Edit1.Text);
  sl.Add('recaptcha_response_field='+Edit2.Text);
  http.Post('http://tvplayer.co.cc/forum/ucp.php?mode=register',sl)
end;

end.
Вложения
Тип файла: zip reCaptha.zip (351.7 Кб, 96 просмотров)

Последний раз редактировалось kangreon; 25.12.2010 в 03:29.
kangreon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с С# PDV199003 Помощь студентам 0 04.06.2010 14:38
Проблемы с memo))) Poltev86 Компоненты Delphi 1 19.05.2010 10:47
Проблемы с BWT >dodger< Помощь студентам 0 17.05.2010 14:00
проблемы с if Vergil Общие вопросы C/C++ 8 21.04.2010 21:43
проблемы с IE xakzona Помощь студентам 1 16.12.2008 21:53