LER CAPTCHA DO SITE NO VB. NET

JULIOBERTOSO 25/11/2015 22:06:34
#454404
Boa noite!

seguinte galera estava iniciando um projeto e já deu problema, quando eu executo o Form eu sei que o programa esta rodando, porem o Form não aparece, acho que deve ser alguma coisa no código, dependendo do site que coloco o Form aparece normalmente quando mando executar.

estou postando o projeto pra ver se alguém descobre o problema, já testei em duas maquinas e da na mesma

estou postando o arquivo feito em dois VB.NET 2010 e 2015 compactado em Winzip

nos dois eu adicionei referencia ao .microsoft.mshtml

o projeto é pra rodar o afreesms.com via vb.net


KERPLUNK 26/11/2015 09:42:45
#454416
Com uma simples depuração você descobre o problema...
MESTRE 26/11/2015 10:13:58
#454418
Aproveitando o tópico, é possível quebrar esse Captcha para o usuário não ter que digitar fornecido através de uma imagem .jpg, .png etc.. ?

por exemplo pegando o captcha:

  using System;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Text.RegularExpressions;

namespace captcha
{
public partial class FrmCaptcha : Form
{
private readonly CookieContainer _cookies = new CookieContainer();

public FrmCaptcha()
{
InitializeComponent();
picCaptcha.Image = new Bitmap(RequestCaptcha());
}

private void BtnRequestCaptchaClick(object sender, EventArgs e)
{
picCaptcha.Image = new Bitmap(RequestCaptcha());
}

private Stream RequestCaptcha()
{
var request = (HttpWebRequest)WebRequest.Create([Ô]http://www.afreesms.com/image.php?[Ô]);
request.CookieContainer = _cookies;

WebResponse response = request.GetResponse();
return (response.GetResponseStream());
}


  Imports System.Drawing
Imports System.IO
Imports System.Text
Imports System.Windows.Forms
Imports System.Net
Imports System.Text.RegularExpressions

Namespace captcha
Public Partial Class FrmCaptcha
Inherits Form
Private ReadOnly _cookies As New CookieContainer()

Public Sub New()
InitializeComponent()
picCaptcha.Image = New Bitmap(RequestCaptcha())
End Sub

Private Sub BtnRequestCaptchaClick(sender As Object, e As EventArgs)
picCaptcha.Image = New Bitmap(RequestCaptcha())
End Sub

Private Function RequestCaptcha() As Stream
Dim request = DirectCast(WebRequest.Create([Ô]http://www.afreesms.com/image.php?[Ô]), HttpWebRequest)
request.CookieContainer = _cookies

Dim response As WebResponse = request.GetResponse()
Return (response.GetResponseStream())
End Function
End Class
End Namespace

JULIOBERTOSO 26/11/2015 19:23:38
#454440
O problema esta depois do
Citação:

End While

não faço ideia como resolver, o sistema roda normalmente até ali, porem depois fica só ocupando memória do PC

Alguém me ajuda ou me da uma diretriz de como resolver

  Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
wb.Navigate([Ô]http://www.afreesms.com/freesms/[Ô]) , False)
While wb.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()

End While

Call grabthecaptcha()

End Sub

Private Sub grabthecaptcha()
Dim doc As mshtml.IHTMLDocument2 = wb.Document.DomDocument
Dim imgrange As mshtml.IHTMLControlRange = CType(doc.body, mshtml.HTMLBody).createControlRange
For Each img As mshtml.IHTMLImgElement In doc.imagens
If img.getattribute([Ô]src[Ô]).ToString.Contains([Ô]http://www.afreesms.com/image.php?[Ô]) Then
imgrange.add(img)
imgrange.execCommand([Ô]copy[Ô], False, Nothing)
PictureBox1.Image = Clipboard.GetDataObject.GetData(DataFormats.Bitmap)
Exit For
End If
Next
End Sub


End Class
DS2T 26/11/2015 19:45:31
#454441
Ao invés de fazer esse loop sem sentido esperando a página carregar, use o evento DocumentCompleted do WebBrowser....
JULIOBERTOSO 26/11/2015 23:20:05
#454448
Citação:

Ao invés de fazer esse loop sem sentido esperando a página carregar, use o evento DocumentCompleted do WebBrowser....



o problema é que nao manjo muito disso e segui os passos certinhos do videos https://www.youtube.com/watch?v=9NMLK-Mpg_w
, mas na primeira parte o meu ja nao abre, pelo que entendi o código espera carregar o site todo pra depois prosseguir, porem o site parece que nao tem fim

MESTRE 27/11/2015 07:45:00
#454452
tentou do jeito que eu passei??
JULIOBERTOSO 29/11/2015 20:07:04
#454572
Consegui resolver esta parte do captcha, porem estou travado em outra onde preciso pegar uma informação do site, porem me deparei com um problema no campo em que digita a mensagem no site...o problema é o seguinte, o ID da mensagem tem um tipo de criptografia que muda toda vez que atualiza o site e com isso não consigo finalizar o meu sistema

minha ideia é toda vez que eu carregar o site eu conseguir pegar a linha com o ID e aparecer em uma textbox e a partir dela carregar no meu projeto conforme abaixo

  Private Sub btuCarregarDados_Click(sender As Object, e As EventArgs) Handles btuCarregarDados.Click
With WebBrowser1.Document
.GetElementById([Ô]smsto[Ô]).SetAttribute([Ô]value[Ô], txtNumber.Text)
.GetElementById([Ô]6dd71d06e7e2339396fa7a46fe58029532b0[Ô]).SetAttribute([Ô]value[Ô], txtMessage.Text)
.GetElementById([Ô]imgcode[Ô]).SetAttribute([Ô]value[Ô], txtCaptcha.Text)
System.Threading.Thread.Sleep(3000)
.GetElementById([Ô]submit[Ô]).InvokeMember([Ô]click[Ô])

End With
End Sub


Cod do site em JavaScript onde preciso pegar a ID


  <td valign=[Ô]top[Ô] style=[Ô]text-align:right[Ô]><strong>Message:  </strong></td>
<td valign=[Ô]top[Ô]><textarea id=6dd71d06e7e2339396fa7a46fe58029532b0 onfocus=[Ô]setbg([ô]#d9ffd9[ô],this.id);[Ô] name=3d855b5bbaa26dd391f7741fa01954c377e40f onblur=[Ô]setbg([ô]#f0f5e6[ô],this.id)[Ô]></textarea>
<script type=[Ô]text/javascript[Ô]>$([ô]#6dd71d06e7e2339396fa7a46fe58029532b0[ô]).focus();</script><br /><input type=[Ô]text[Ô] id=[Ô]msgLen[Ô] name=[Ô]msgLen[Ô] style=[Ô]width:26px;[Ô] size=[Ô]1[Ô] maxlength=[Ô]3[Ô] value=[Ô]160[Ô] readonly /><span class=[Ô]sm[Ô]>
PEGUDO 01/12/2015 07:14:14
#454632
Cara,
Eu modifiquei seu exemplo um pouco mas eu acho que é o que você precisa.

Só tem um problema: mesmo colocando os dados como o site pede, sempre dá erro no celular do destinatário. Mesmo colocando +55219xxxxxxxx ou 219xxxxxxxx, ou +559xxxxxxxx sempre o site avisa que o [Ô]country[Ô] do destinatário está faltando.

O programa já está colocando os dados no site. Resta, agora, tentar descobrir qual é o formato do celular de destino que o site quer.
OBS: alterei a versão 2015.
JULIOBERTOSO 05/12/2015 22:30:28
#454832
Citação:

Cara,
Eu modifiquei seu exemplo um pouco mas eu acho que é o que você precisa.

Só tem um problema: mesmo colocando os dados como o site pede, sempre dá erro no celular do destinatário. Mesmo colocando +55219xxxxxxxx ou 219xxxxxxxx, ou +559xxxxxxxx sempre o site avisa que o [Ô]country[Ô] do destinatário está faltando.

O programa já está colocando os dados no site. Resta, agora, tentar descobrir qual é o formato do celular de destino que o site quer.
OBS: alterei a versão 2015.



eu dei uma olhada no seu projeto, ficou bem bacana...porem nao deu certo tb.
estava pesquisando algo na Net pra ver se achava alguma coisa pra descriptografar o textarea do javascript ou alguma forma de pegar a linha que aparece o ID e jogar em uma textbox focando o ID.

ta foda, nao queria abandonar este projeto.
MOUSER 08/02/2016 15:59:40
#457371
Conseguiu alguma coisa?
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas