ReCaptcha na FileSonic

0

Witam,
czy ktoś by pomógł ugryźć problem z recaptchą na serwisie filesonic ? Z tego co zauważyłem, to ściąga tylko ten skrypcik którego nie potrafię rozgryść.

<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>

Czytałem wcześniejsze tematy o recaptchy, jednak widocznie coś się pozmieniało z nią.

Z góry dzięki za rady.
Pozdrawiam!

0

Czytałeś http://4programmers.net/Forum/Delphi_Pascal/167357-Delphi_-_obsluga_recaptcha_Prosba_do_Olesio?hl=CAPTCHA ?
No i w ogóle za pomocą czego to chcesz zrobić? Indy, Synapse czy może WebBrowser?

0
kAzek napisał(a)

Czytałeś http://4programmers.net/Forum/Delphi_Pascal/167357-Delphi_-_obsluga_recaptcha_Prosba_do_Olesio?hl=CAPTCHA ?

Tak, jednak jak napisałem w pierwszym post'cie, tutaj chyba całkiem inaczej jest to zrealizowane, albo ja nie potrafię wyciągnąć tego key'a z tej strony.

kAzek napisał(a)

No i w ogóle za pomocą czego to chcesz zrobić? Indy, Synapse czy może WebBrowser?

A czy to naprawdę istotne? Nie zależy mi na gotowcu, tylko o podpowiedzi w schemacie postępowania. Czy to będzie indy czy synapse to chyba jeden wacław.

Dodam tylko że chodzi o pobranie pliku, czyli webbrowser raczej nie jest tu potrzebny.

0

Poszukaj strony w kodzie fragmentu:

                <script type="text/javascript">
                    function showRecaptcha() {
                        Recaptcha.create("6LdNWbsSAAAAAIMksu-X7f5VgYy8bZiiJzlP83Rl", "capt", {
                         theme: "clean",
                         callback: Recaptcha.focus_response_field});
                    }
                    showRecaptcha();
                </script>

a później zrób sobie link:

url:= 'http://www.google.com/recaptcha/api/challenge?k=' + //to miedzy Recaptcha.create(" a ", "capt", {

a dalej to jak w temacie do którego wcześniej podałem link.

0
kAzek napisał(a)

Poszukaj w kodzie strony fragmentu:

                <script type="text/javascript">
                    function showRecaptcha() {
                        Recaptcha.create("6LdNWbsSAAAAAIMksu-X7f5VgYy8bZiiJzlP83Rl", "capt", {
                         theme: "clean",
                         callback: Recaptcha.focus_response_field});
                    }
                    showRecaptcha();
                </script>

.

I tutaj pojawia się mój problem, gdyż nie widzę niczego związanego z recaptchą, oprócz linku http://www.google.com/recaptcha/api/js/recaptcha_ajax.js

Może podam przykładowy linki do pliku i ktoś bardziej rozgarnięty ode mnie w tej tematyce, zerknie pomocnym wzrokiem?

http://www.filesonic.pl/file/993501854/ChromePortable11.0.696.68.rar

0

Na pierwszej (tej która się wczytuje po wklejeniu linku do pliku) stronie nie ma, wspomniany kod pojawia się na stronie drugiej tej po kliknięciu Slow Download odczekaniu 30 sekund. To 30 sekund to tylko pierwszym razem (przy tym samym linku) później nie wiem strona zapamiętuje IP czy coś w każdym razie na ten sam link nie trzeba czekać przynajmniej jeżeli wywoła się go ponownie w ciągu kilkunastu minut.

EDIT//
Nie wiem jak Ty ale ja robię tak:

//funkcja by olesio
function TForm1.Parse(StrBegin, StrEnd, Str : string) : string;
var
  B, E : integer;
begin
  Result := '';
  if StrBegin = '' then
  begin
    B := 1;
  end
  else
  begin
    B := Pos(StrBegin, Str);
  end;
  if B > 0 then
  begin
    Str := Copy(Str, B + Length(StrBegin), MaxInt);
    if StrEnd = '' then
    begin
      E := Length(Str) + 1;
    end
    else
    begin
      E := Pos(StrEnd, Str);
    end;
    if E > 0 then
    begin
      Result := Copy(Str, 1, E - 1);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  USER_AGENT = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT ' +
    '5.1; pl; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.17 ( .NET CLR 3.5.30729)';
  CAPTCHA_API_URL = 'http://www.google.com/recaptcha/api/challenge?k=';

  LINK = 'http://www.filesonic.pl/file/993501854/ChromePortable11.0.696.68.rar';
var
  inStr, outStr: string;
  i: Integer;
begin
  try
  IdHTTP1.Request.UserAgent:= USER_AGENT;
  IdHTTP1.HandleRedirects:= True;
  outStr:= IdHTTP1.Get(LINK);
  //link z przycisku Slow Download
  inStr:= Parse('<th class="freeAccount"><a href="', '" id="free_download">', outStr);
  if Length(inStr) = 0 then
     raise Exception.Create('Błąd pobierania linku Slow Download');
  //prymitywne czekanie 30 sekund pewnie można to lepiej zrobić ale to test
  for i:= 0 to 30 do
  begin
    outStr:= IdHTTP1.Get(inStr);
    inStr:= Parse('Recaptcha.create("', '", "capt", {', outStr);
    if Length(inStr) > 0 then break;//jest już link to po co czekać dalej
    Sleep(1000);
    Application.ProcessMessages;
  end;
  if Length(inStr) = 0 then //po 30 sekundach nadal nie ma linku?
     raise Exception.Create('Błąd pobierania linku Captcha');
  inStr:= CAPTCHA_API_URL + inStr;
  outStr:= IdHTTP1.Get(inStr);
  Memo1.Text:= outStr;
  except
    on E: Exception do
      ShowMessage(E.Message);
  end;
end

;

EDIT// Dziwne a teraz nie działa :/ Już zgłupiałem nie wiem od czego to zależy.

0

Uff, banał.

Po prostu

outStr:= IdHTTP1.Get(inStr);

winno być wysyłane Postem i pięknie widać kluczyk.

Dzięki wielkie! Pomogłeś niesamowicie, bo ja nie wpadłbym na to, by pobrać jeszcze raz kod strony po 30s. Myślałem, że to musi gdzieś siedzieć w środku.
Także jeszcze raz, Dzięki!

Tylko zastanawie mnie, czemu źródło strony w przeglądarce, mimo ponownego odświeżenia i naciśnięcia "slowdownload" dalej pokazuje wersję bez kluczyków, skoro captcha pokazuje się od razu.. ale mniejsza, ważne, że działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1