Jak zrobić Captchę na formularzu?

Jak zrobić Captchę na formularzu?
EM
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:7
0

Jeżeli w WebBrowser1 występuje CAPTCHA to wyświetl Captche na Formie

Jak takie coś zrobić? Przy czym nie chce by cały WebBrowser1 mi się wyświetlał, a wyłącznie CAPTCHA...która musi nie tylko wizualnie się wyświetlać, ale też być "prawdziwą Captchą", tzn że po kliknięciu na nią - dzieją się dalsze instrukcje..

1.png

myslalem o tym by stworzyć webbrowser2, który by miał wymiary width="300" height="57" (takie jak captcha) i w przypadku wystąpienia captchy - Captcha by się kopiowała do webbrowser2, a następnie działania -kliknięcie / wpisanie znaków z webbrowser2 by się duplikowały do webbrowser1...dobrze myślę ?

  • 1.png (12 KB) - ściągnięć: 245
edytowany 7x, ostatnio: emptylines
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Gorlice
0

Łap przykład do pobrania obrazka użyłem WebClient

Kopiuj
Option Explicit On

Imports System.IO
Imports System.Text.RegularExpressions

Public Class Form1

    Dim recaptcha_challenge As String

    Private Sub btnNavigate_Click(sender As Object, e As EventArgs) Handles btnNavigate.Click
        WebBrowser1.Navigate("http://www.google.com/recaptcha/demo/") 'test capcha
    End Sub

    Private Sub btnSendCaptcha_Click(sender As Object, e As EventArgs) Handles btnSendCaptcha.Click
        Dim PostData As String = "recaptcha_challenge_field=" & recaptcha_challenge & _
           "&recaptcha_response_field=" & tbCaptcha.Text & "&Button1=Submit"
        Dim Headers As String = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
        Dim bPostData() As Byte = System.Text.Encoding.ASCII.GetBytes(PostData)
        WebBrowser1.Navigate("http://www.google.com/recaptcha/demo/", Nothing, bPostData, Headers) 'wyslanie POST
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim pageSrc As String = WebBrowser1.Document.Body.InnerHtml 'pobieramy zrodlo strony

        Dim m As Match = Regex.Match(pageSrc, "<INPUT id=recaptcha_challenge_field type=hidden value=([^ ]+)") 'pobieramy challenge (jest potrzebne do wyslania POST)
        If m.Success Then
            recaptcha_challenge = m.Groups.Item(1).Value
        Else
            MsgBox("Bład pobierania challenge!")
            Exit Sub
        End If

        Dim imageURL As String
        m = Regex.Match(pageSrc, "<IMG id=recaptcha_challenge_image alt=""Zadanie obrazkowe reCAPTCHA"" src=""([^""]+)""") 'pobieramy adres obrazka
        If m.Success Then
            imageURL = m.Groups.Item(1).Value
        Else
            MsgBox("Bład pobierania adresu obrazka!")
            Exit Sub
        End If

        Dim webClient As New System.Net.WebClient
        Dim imgStream As New MemoryStream(webClient.DownloadData(imageURL)) 'pobieramy obrazek

        PictureBox1.Image = Image.FromStream(imgStream) 'i wyswietlamy go w PictureBox
    End Sub

End Class

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
flowCRANE
"VB" było w tytule, ale zdjąłem, bo nie wolno; Dodałem do tagów wątku;
EM
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:7
0

ale to nadal jest z wykorzystaniem picturebox :(
a mi zależy na tym by to nie było picturebox tylko prawdziwa CAPTCHA wyświetlała się ....gdyż czasem się wyświetla Captcha typu "kliknij na gwiazdkę" lub "kliknij na nożyczki" itp itd...
a jeżeli będzie to w picturebox to taka captcha się nie sprawdzi...

a czy da się zrobić coś takiego, że cały webBrowser1 jest Invisible, ale w momencie pojawienia się Captchy, element Capchy staję się Visible?
coś na zasadzie:

Kopiuj
  WebBrowser1.Document.GetElementById("recaptcha_challenge_image").SetAttribute( Visible = True)

Tak by tylko Captcha się stawała Visible, a pozostały WebBrowser nadal był niewidoczny.. ?

edytowany 3x, ostatnio: emptylines
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Gorlice
1

Nie wiem co to za captcha (na jakiej stronie ją znaleźć) ale to zapewne to jakaś oparta na JS i rzeczywiście zwykły PictureBox się nie sprawdzi. W przykładzie podaję jak można pokazać captcha ze strony http://sweetcaptcha.com/ (oparta czasem na klikaniu czasem na przeciąganiu obrazków)

Kopiuj
    Private Sub btnNavigate_Click(sender As Object, e As EventArgs) Handles btnNavigate.Click
        WebBrowser1.Visible = False
        WebBrowser1.Navigate("http://sweetcaptcha.com/")
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim pageSrc As String = WebBrowser1.Document.Body.InnerHtml 'pobieramy zrodlo strony
        'id diva z capcha jest zmienne dlatego najwygodniej je pobrac za pomoca wyrazen regularnych
        Dim m As Match = Regex.Match(pageSrc, "<DIV ondragover=""return false"" id=([^ ]+) class=""sweetcaptcha rendered ltr""") 'div captcha
        If m.Success Then
            Dim captchaDivID As String = m.Groups.Item(1).Value
            Dim Elem As HtmlElement
            Elem = WebBrowser1.Document.GetElementById(captchaDivID) 'pobierz div z captcha 
            If Elem = Nothing Then 'nie znaleziono captcha
                Exit Sub
            End If
            Elem.ScrollIntoView(True) 'przewin do captcha
            'rozmiary captcha
            Dim x As Integer = Elem.OffsetRectangle.Right - Elem.OffsetRectangle.Left
            Dim y As Integer = Elem.OffsetRectangle.Bottom - Elem.OffsetRectangle.Top
            WebBrowser1.ScrollBarsEnabled = False 'ukryj paski przewijania
            'wielkosc webbrowser taka jak diva captcha
            WebBrowser1.Width = x
            WebBrowser1.Height = y
            'i wreszczie mozna pokazac webbrowser
            WebBrowser1.Visible = True
        End If
    End Sub

PS: Jaki to w ogóle miał być język bo wydaje mi się że wcześniej w temacie było VB - ... i dlatego piszę w Visual Basic


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
EM
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:7
0

moja Captcha ma takie właściwości:

Kopiuj
<div id="captcha_container" style="margin: 0;padding: 0;width: 400px;height: 130px;background-i…mage: url('');"

jak mam zmienić ten fragment kodu?
bo wpisałem coś takiego i coś nie hula ;/

Kopiuj
        Dim m As Match = Regex.Match(pageSrc, "captcha_container") 'div captcha

... dzięki za chęci pomocy :)

Captcha występuje na darkwarez.pl/forum
user image

@Edit

takie rozwiązanie będzie dobre?

Kopiuj
        Dim theElementCollection As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("div")
        For Each Elem As HtmlElement In theElementCollection
            Dim controlName As String = Elem.GetAttribute("id").ToString
            If controlName = "captcha_container" Then
                Elem.Focus()
        Elem.ScrollIntoView(True) 'przewin do captcha
        'rozmiary captcha
        Dim x As Integer = Elem.OffsetRectangle.Right - Elem.OffsetRectangle.Left
        Dim y As Integer = Elem.OffsetRectangle.Bottom - Elem.OffsetRectangle.Top
        WebBrowser1.ScrollBarsEnabled = False 'ukryj paski przewijania
        'wielkosc webbrowser taka jak diva captcha
        WebBrowser1.Width = x
        WebBrowser1.Height = y
        'i wreszczie mozna pokazac webbrowser
        WebBrowser1.Visible = True
            End If
        Next

(niby ten kod działa, nie wiem czemu ale cały webbrowser i aplikacja zawiesza się na około 10 sekund podczas wykonywania tego kodu)

edytowany 5x, ostatnio: emptylines
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)