LER CAPTCHA DO SITE NO VB. NET
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
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
Com uma simples depuração você descobre o problema...
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:
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
O problema esta depois do
Alguém me ajuda ou me da uma diretriz de como resolver
Citação:não faço ideia como resolver, o sistema roda normalmente até ali, porem depois fica só ocupando memória do PCEnd While
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
Ao invés de fazer esse loop sem sentido esperando a página carregar, use o evento DocumentCompleted do WebBrowser....
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
tentou do jeito que eu passei??
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
Cod do site em JavaScript onde preciso pegar a ID
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[Ô]>
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 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.
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.
Conseguiu alguma coisa?
Tópico encerrado , respostas não são mais permitidas