CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Pobieranie określonego obrazu ze strony

Pobieranie określonego obrazu ze strony

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Pobieranie określonego obrazu ze strony

Nowy postprzez Gazunio » piątek, 23 lipca 2010, 16:09

Witam. Chciałbym napisać program, który ułatwiałby wpisywanie Capchty na pewnej stronie. Ta captchta to reCapchta - więc też nie ma mowy o ominięciu tego. Nie ma pomysłu jak to zrobić. Na formie umieszczam CppWebBrowsera i ładuję w nim stronkę gdzie jest ta reCapchta. Na formie mam też Image do którego chcę załadować obrazek captchy, Edita do którego chcę wpisywać to co jest na obrazku i Buttona, którym chcę to wysyłać. Ale mam problem jak tą Capchtę wsadzić do Image'a. Dalej to już poradzę sobie.
Proszę o omoc :)
Avatar użytkownika
Gazunio
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): środa, 13 maja 2009, 18:40
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2009
Gadu Gadu: 5147883
    Windows 7Firefox

Re: Pobieranie określonego obrazu ze strony

Nowy postprzez Cyfrowy Baron » piątek, 23 lipca 2010, 18:59

Trzeba parsować źródło strony i wyciągnąć z niej link do strony zawierającej info do recaptcha.
Na przykład dla strony: http://hotfile.com/dl/54437989/bea20c6/m_ch2003.rar.html
Otrzymamy źródło strony, które zawiera taki wpis: <tr><td aling=center><script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6LfRJwkAAAAAAGmA3mAiAcAsRsWvfkBijaZWEvkD"></script>

Ten adres: http://api.recaptcha.net/challenge?k=6L ... BijaZWEvkD zwiera info o recaptcha, czyli po pobraniu zawartości tego adresu otrzymamy takie informacje:


var RecaptchaState = {
site : '6LfRJwkAAAAAAGmA3mAiAcAsRsWvfkBijaZWEvkD',
challenge : '03AHJ_VuvwPaJis-zlmNwVunDSo3IaGC2NCq5iPsKVtTl-X1a4E9B2Wt7MTsGuYsgY70r5nMIPguWy-sd_Dde8nDt_XhAOVZREbZvMX-xbQrZkGiYpLq8zbcmPQYVLEm0U6b39jDXla0RVhQnuc9H-f4kvxl7Z-Wkt1w',
is_incorrect : false,
programming_error : '',
error_message : '',
server : 'http://www.google.com/recaptcha/api/',
timeout : 18000
};

document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');



i tak wpis: http://www.google.com/recaptcha/api/ + image?c= + 03AHJ_VuvwPaJis-zlmNwVunDSo3IaGC2NCq5iPsKVtTl-X1a4E9B2Wt7MTsGuYsgY70r5nMIPguWy-sd_Dde8nDt_XhAOVZREbZvMX-xbQrZkGiYpLq8zbcmPQYVLEm0U6b39jDXla0RVhQnuc9H-f4kvxl7Z-Wkt1w da nam adres:

http://www.google.com/recaptcha/api/ima ... bwRU_UwbKw

I to jest właśnie adres obrazka. Teraz wystarczy go pobrać z sieci i załadować do Image, a o tym jak ładować obrazki z sieci do TImage przeczytasz w serwisie Cyfrowy Baron w dziale: porady -> sieć - internet -> Wyświetlanie plików graficznych bezpośrednio z Internetu.

No ale jak chcesz przepisać zawartość obrazka do obiektu typu TEdit, nie mam pojęcia, to wymagałoby zastosowania metody rozpoznawania tekstu i nie mam pojęcia jak to zrobić.

Przykład parsowania strony również znajdziesz w serwisie Cyfrowy Baron w dziale: porady -> sieć - internet -> Wyciąganie adresów URL ze stron internetowych.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Pobieranie określonego obrazu ze strony

Nowy postprzez Gazunio » piątek, 23 lipca 2010, 19:56

Dziękuję za pomoc. Najpierw, co do przepisywania to po prostu ja będę to przepisywać - to co widzę w Image'u ;) Jeszcze żaden czytnik OCR nie rozpoznaje tekstu zawartego w reCaptchta.
Co do wyszukiwania tego ciągu <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6LeTP7sSAAAAAGIUH5LnsFDoxII3-5qXAN_p9Ma0"></script> to niestety nie wiem jak tutaj przerobić ten kod podany w poradzie. Usunąłem jedną część z <a href> i zostawiłem tylko tą drugą, bo dwie nie są potrzebne/ Dałem
KOD cpp:     UKRYJ  
 unsigned short p = Value.Pos("<script type=\"text/javascript\" src=\"http://www.google.com/recaptcha/api/");
zamiast
KOD cpp:     UKRYJ  
 p = Value.Pos("\"http");
bo ta część się pojawia w kodzie strony tylko raz. Ale dalej już mam problem z zapisywaniem tego adresu.
Nie ma pojęcia jak to przerobić.
Avatar użytkownika
Gazunio
Bladawiec
Bladawiec
 
Posty: 32
Dołączył(a): środa, 13 maja 2009, 18:40
Podziękował : 3
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2009
Gadu Gadu: 5147883
    Windows XPFirefox

Re: Pobieranie określonego obrazu ze strony

Nowy postprzez Cyfrowy Baron » piątek, 23 lipca 2010, 23:20

Kluczem jest ten fragment kodu: <tr><td aling=center><script type="text/javascript" src=, gdyż pojawia się tylko raz i określa początek kodu, końcem jest: </script>, tak więc funkcja parsująca powinna wyglądać tak:

KOD cpp:     UKRYJ  
String ReturnCaptchaUrl(String Text)
{
  String Result = "";
  String k1 = "<tr><td aling=center><script type=\"text/javascript\" src=", k2 = "</script>";
  int x = Text.Pos(k1);

  if(x > 0)
  {
   Result = Text.SubString( x + k1.Length() + 1, Text.Length() ); // x + k1.Length() + "
   int y = Result.Pos(k2);
   if(y > 0)
   {
     return Result.SubString( 1, y - 3 ); // y - "><
   }
  }

 return Result;
}

Funkcja Pos zawsze przeszukuje łańcuch od początku, dlatego po odnalezieniu klucza początku do zmiennej Result przepisuję łańcuch znaku, ale od wyszukanej pozycji skróconej o długość przeszukiwanego klucza, potem szukam dalej ale już w zmiennej Result klucza końcowego. Następnie wycinam z tego interesujący mnie fragment tekstu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 8 gości

cron