Ir para o conteúdo
Gnrtuga

Login Automático

Mensagens Recomendadas

Gnrtuga

Olá pessoal, vi um tutorial (

https://www.youtube.com/embed/j58P7-Cu9CE?feature=oembed

) de como fazer login no hotmail, e queria fazer a mesma coisa para o portal das finanças...

Tenho este código:

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
	WebBrowser1.document.GetElementById("form_senhaNIF").SetAttribute("value", "UserName")
	WebBrowser1.document.GetElementById("form_senha").SetAttribute("value", "Password")
	WebBrowser1.document.GetElementById("btn1").InvokeMember("click")
End Sub
End Class

e ele dá-me o seguinte erro:

A first chance exception of type 'System.NullReferenceException' occurred in Login Finanças2.exe

An unhandled exception of type 'System.NullReferenceException' occurred in Login Finanças2.exe

Additional information: A referência de objecto não foi definida como uma instância de um objecto.

The program '[4896] Login Finanças2.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).

E a pergunta é, o que estou a fazer mal?

Obrigado!


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Olá novamente, aparentemente o problema era mesmo com o site....

troquei de site e já faz o login, mas eu queria que ele preenchesse a caixa de texto do site com o valor que foi preenchido na caixa de texto do meu formulário... estou a usar o mesmo método e já não funciona... WTF...

tenho este código:

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
	' WebBrowser1.Navigate("https://www.e-financas.gov.pt/de/jsp-dgaiec/main.jsp?body=/iec/edaa/obterEDAAPdfForm.jsp")
	WebBrowser1.document.GetElementById("_username").InnerText = "meuusername"
	WebBrowser1.document.GetElementById("_password").InnerText = "minhapassword"
	WebBrowser1.document.GetElementById("_password").Focus()
	SendKeys.Send("{Enter}")
	'
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
	' WebBrowser1.Navigate("https://www.e-financas.gov.pt/de/jsp-dgaiec/main.jsp?body=/iec/edaa/obterEDAAPdfForm.jsp")
	WebBrowser1.document.GetElementById("ARC").SetAttribute("value", ARCTB.Text)
	WebBrowser1.document.GetElementById("ARC").Focus()
	' SendKeys.Send("{Enter}")
End Sub

End Class

queria que ele fizesse tudo de uma vez, mas como não estou a conseguir, criei um outro botão para a 2º parte, que é o que não está a funcionar..

Editado por Gnrtuga

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Este código é em VB6 , mas também funciona em .net , com algumas pequenas alterações, não abre no WebBrowser1, mas sim no InternetExplorer, ou no browser predefinido

Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://www.portaldasfinancas.gov.pt/pt/loginFormBox.action"
IE.Visible = True
IE.FullScreen = False
IE.AddressBar = False
IE.StatusBar = True
IE.Toolbar = False

Sleep (2500)
VOLTA:
On Error GoTo erro
IE.document.All.Item("_username").Value = "username"
IE.document.All.Item("_password").Value = "password"
IE.document.Forms(0).submit

GoTo fim
erro:
Sleep (2500)
a = a + 1
If a = 2 Then IE.Navigate "https://www.portaldasfinancas.gov.pt/logout.action"
If a = 3 Then IE.Navigate "http://www.portaldasfinancas.gov.pt/pt/loginFormBox.action"
If a = 5 Then GoTo fim
Resume VOLTA
fim:

Editado por Caça
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Antes de mais, Carlos obrigado pelo código. Eu percebo muito pouco disto, e fiquei com algumas dúvidas:

o volta, o erro e o fim são algum tipo de label? para que servem? Nunca tinha visto (pelo menos reparado) em nenhum código..:)

a variável a conta o numero de tentativas para entrar no site? e incrementa cada vez que entra no erro ou o

IE.document.Forms(0).submit

zero tem alguma coisa a ver com o incremento?

Só tive de fazer estas alterações:

Imports System.Threading
Dim a As Int16 ' porque foi a primeira opção a aparecer
Thread.Sleep(2500)

Funciona perfeitamente.

Obrigado


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

If a = 2 Then IE.Navigate "https://www.portaldasfinancas.gov.pt/logout.action"
If a = 3 Then IE.Navigate "http://www.portaldasfinancas.gov.pt/pt/loginFormBox.action"
If a = 5 Then GoTo fim

Sim, a variável "a", de facto conta as varias tentativas, e se não conseguir fazer o login a 2º Vez, é porque possivelmente tem o login feito, e assim o programa obriga o site a fazer o logout, e depois a 3º vez volta a fazer o login ...

IE.document.Forms(0).submit

Este código significa que é o 1º botão que aparece, e que o programa vai "Clicar" para entrar, embora também, se se conhecer o nome do botão utilizar o código seguinte :

IE.document.All.Item("nomedobotao").Click

Antes de mais, Carlos obrigado pelo código. Eu percebo muito pouco disto, e fiquei com algumas dúvidas:

o volta, o erro e o fim são algum tipo de label? para que servem? Nunca tinha visto (pelo menos reparado) em nenhum código.. :)

a variável a conta o numero de tentativas para entrar no site? e incrementa cada vez que entra no erro ou o

IE.document.Forms(0).submit

zero tem alguma coisa a ver com o incremento?

Só tive de fazer estas alterações:

Imports System.Threading
Dim a As Int16 ' porque foi a primeira opção a aparecer
Thread.Sleep(2500)

Funciona perfeitamente.

Obrigado

Editado por Carlos Pais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Mais uma vez obrigado.

Tentei alterar o código para que ele fosse pesquisar logo o número de contribuinte, mas não está a dar..

Imports System.Threading
Public Class Form1
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim a As Int16
    Dim IE
    IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    ' IE.Navigate("http://www.portaldasfinancas.gov.pt/pt/loginFormBox.action")
    IE.navigate("https://www.portaldasfinancas.gov.pt/pt/main.jsp?body=/external/sitcad/sitcad/jsp/identClientFornMenu.do")
    IE.Visible = True
    IE.FullScreen = False
    IE.AddressBar = False
    IE.StatusBar = True
    IE.Toolbar = False
    Thread.Sleep(2500)
VOLTA:
    On Error GoTo erro
    IE.document.All.Item("_username").Value = "username"
    IE.document.All.Item("_password").Value = "password"
    IE.document.Forms(0).submit()
    'IE.navigate("https://www.portaldasfinancas.gov.pt/pt/main.jsp?body=/external/sitcad/sitcad/jsp/identClientFornMenu.do")
    IE.document.All.Item("nifConsultaId").value = "TextBox1.Value"
    GoTo fim
erro:
    Thread.Sleep(2500)
    a = a + 1
    If a = 2 Then IE.Navigate("https://www.portaldasfinancas.gov.pt/logout.action")
    If a = 3 Then IE.navigate("https://www.portaldasfinancas.gov.pt/pt/main.jsp?body=/external/sitcad/sitcad/jsp/identClientFornMenu.do")
    If a = 5 Then GoTo fim
    Resume VOLTA
fim:

   End Sub
End Class


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Pois para ser sincero não percebo a parte da volta, erro e fim... penso que seja tipo label? será? eu possivelmente faria da mesma maneira, mas volta erro e fim seriam procedimentos... acrescento que percebo pouco disto..


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Sim, são labels, e são uma prática arcaica e que só é utilizada em casos muitíssimo específicos e excepcionais, o que não é o caso presente.

On Error foi substituído pelo bloco Try Catch, e estes segmentos de código dentro de labels devem ficar em procedimentos. Mais, aquela série de if's no final deveria ser substituída por um bloco Select Case.

Esse código que está aí é pura "comédia" para a actualidade. Isso só seria assim com o velhinho BASIC, lá para os anos 70.


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Como foi dito logo no inicio ... "este código é de VB6, apesar de funcionar em .net com algumas alterações, ", claro que hoje em dia não se fazia assim ... mas há uns 10 anos , era o que havia de melhor ..., pois eu já tenho um programa em VB6 http://www.infornos.com/contages.htm, a funcionar assim , desde que passou a ser possível o envio das declarações ( IVA / IRS ) para as finanças ... , tendo hoje muitas + opções como login automáticos nas Segurança Social, ViaCTT, Sirapa, Ponto Verde, Relatório Único, Certidões Permanentes, Iapmei ... e diversas companhias de Seguros, e agora recentemente no e.factura, e como funciona bem, ainda não me atrevi a fazer um novo em VB2010 ... mas vou pensar no caso ....

Editado por Carlos Pais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

TextBox1.Value Sem Aspas

O Item deve ser o Valor NAME <input title="Número de Contribuinte" id="nifConsultaID" type="text" name="nif_consultado" ....

Colocar o Clik automatico no botao, pode não ser o Botão (0), é uma questao de ir testando varios numeros ....

Em 2/3/2013 às 09:27, Gnrtuga disse:

Mais uma vez obrigado.

Tentei alterar o código para que ele fosse pesquisar logo o número de contribuinte, mas não está a dar..


Imports System.Threading
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
	Dim a As Int16
	Dim IE
	IE = CreateObject("InternetExplorer.Application")
	IE.Visible = True
	' IE.Navigate("http://www.portaldasfinancas.gov.pt/pt/loginFormBox.action")
	IE.navigate("https://www.portaldasfinancas.gov.pt/pt/main.jsp?body=/external/sitcad/sitcad/jsp/identClientFornMenu.do")
	IE.Visible = True
	IE.FullScreen = False
	IE.AddressBar = False
	IE.StatusBar = True
	IE.Toolbar = False
	Thread.Sleep(2500)
VOLTA:
	On Error GoTo erro
	IE.document.All.Item("_username").Value = "username"
	IE.document.All.Item("_password").Value = "password"
	IE.document.Forms(0).submit()


'TextBox1.Value Sem Aspas
' O Item deve ser o Valor NAME <input title="Número de Contribuinte" id="nifConsultaID" type="text" name="nif_consultado" ....
' Colocar o Clik automatico no botao, pode não ser o Botão (0), é uma questao de ir testando varios numeros ....

IE.navigate("https://www.portaldasfinancas.gov.pt/pt/main.jsp?body=/external/sitcad/sitcad/jsp/identClientFornMenu.do")
Thread.Sleep(1000)
IE.document.All.Item("nif_consultado").value = TextBox1.Value  
IE.document.Forms(0).submit()

	GoTo fim
erro:
	Thread.Sleep(2500)
	a = a + 1
	If a = 2 Then IE.Navigate("https://www.portaldasfinancas.gov.pt/logout.action")
	If a = 3 Then IE.navigate("https://www.portaldasfinancas.gov.pt/pt/main.jsp?body=/external/sitcad/sitcad/jsp/identClientFornMenu.do")
	If a = 5 Then GoTo fim
	Resume VOLTA
fim:

End Sub
End Class
 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Comédia ... talvez ... mas funciona ...

Sim, são labels, e são uma prática arcaica e que só é utilizada em casos muitíssimo específicos e excepcionais, o que não é o caso presente.

On Error foi substituído pelo bloco Try Catch, e estes segmentos de código dentro de labels devem ficar em procedimentos. Mais, aquela série de if's no final deveria ser substituída por um bloco Select Case.

Esse código que está aí é pura "comédia" para a actualidade. Isso só seria assim com o velhinho BASIC, lá para os anos 70.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Comédia ... talvez ... mas funciona ...

É certo que antigamente era o que havia, nada contra.

Mas se hoje em dia há outros métodos muito melhores, então porque havemos de utilizar aquilo que é arcaico e mais não é do que uma má prática de programação? A mim não me interessa que funciona, interessa-me mais o facto de o código estar transformado num esparguete à bolonhesa.


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

Cá eu prefiro que funcione ... se não ... não dá para nada ... mas já agora converta o código para VB2010, que assim ... sim ... seria uma boa ajuda,

É certo que antigamente era o que havia, nada contra.

Mas se hoje em dia há outros métodos muito melhores, então porque havemos de utilizar aquilo que é arcaico e mais não é do que uma má prática de programação? A mim não me interessa que funciona, interessa-me mais o facto de o código estar transformado num esparguete à bolonhesa.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Cá eu prefiro que funcione ... se não ... não dá para nada ...

Este é um pensamento que tem levado a uma boa quantidade de software lamentável que se diz ser "certificado".

mas já agora converta o código para VB2010, que assim ... sim ... seria uma boa ajuda,

O @Gnrtuga já mostrou saber os princípios pelos quais se pode fazer a conversão. Assim, deixarei que seja ele a fazer, que é o mais correcto. Se ele tiver dúvidas, então cá estaremos para o ajudar.


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Ora o feedback, já dá outro tipo de erro, agora é o site das finanças que retorna o erro "Por motivos de ordem técnica não podemos satisfazer o seu pedido".

Ontem experimentei manualmente no site e dava um erro parecido, hoje já consigo entrar manualmente, mas através da aplicação dá o mesmo erro...

já tive para dar um tiro ao pc, mas corria o risco de não acertar em nenhum órgão vital e depois ficava com um pc com um buraco de 9mm e não ia servir de nada... principalmente porque a culpa é do utilizador...

Já tentei de todas as maneiras que me lembrei e mesmo assim..nada...

Offtopic Carlos Pais se ainda não experimentaste o Visual Express 2012, não sabes o que andas a perder... eu tenho com o Dark Theme, e só me dá vontade de debitar código, pena é não perceber o suficiente disto :)


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Pais

"Por motivos de ordem técnica não podemos satisfazer o seu pedido". este erro não é seu, nem do programa ... e o erro do Governo deste País ( deste governo e dos outros todos que já lá estiveram ) .... e do site das finanças ....

Eu tenho e utilizo presentemente o VB2010, mas vou ver se compro o VB2012, mas custa 650€ e ainda outro a "desviar" a verba ....

Só para que conste, eu comecei a programar em QBasic em Dos, depois passei para VB5, VB6 ( Bom ), depois experimentei o .net ( sem comentarios ), e por agora parei no VB 2010 ( bom ) o qual utilizo, mas já experimentei o VB 2012 Express, o qual penso que será uma boa aposta ....

Programas Feitos em VB2010...

Ora o feedback, já dá outro tipo de erro, agora é o site das finanças que retorna o erro "Por motivos de ordem técnica não podemos satisfazer o seu pedido".

Ontem experimentei manualmente no site e dava um erro parecido, hoje já consigo entrar manualmente, mas através da aplicação dá o mesmo erro...

já tive para dar um tiro ao pc, mas corria o risco de não acertar em nenhum órgão vital e depois ficava com um pc com um buraco de 9mm e não ia servir de nada... principalmente porque a culpa é do utilizador...

Já tentei de todas as maneiras que me lembrei e mesmo assim..nada...

Offtopic Carlos Pais se ainda não experimentaste o Visual Express 2012, não sabes o que andas a perder... eu tenho com o Dark Theme, e só me dá vontade de debitar código, pena é não perceber o suficiente disto :)

Editado por Caça
Publicidade removida (Regra 4.2)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Eu tenho e utilizo presentemente o VB2010, mas vou ver se compro o VB2012, mas custa 650€ e ainda outro a "desviar" a verba ....

Só para que conste, eu comecei a programar em QBasic em Dos, depois passei para VB5, VB6 ( Bom ), depois experimentei o .net ( sem comentarios ), e por agora parei no VB 2010 ( bom ) o qual utilizo, mas já experimentei o VB 2012 Express, o qual penso que será uma boa aposta ....

Programas Feitos em VB2010...

Eu estava a falar da versão Express que é gratuita...Experimenta!

Pois, eu estou a começar a programar, já tinha tido alguns contactos com Pascal, C++ (na altura que um 4.8.6 era maquina... xD), e mais recentemente com Python, VBA (no Word e no Excel), e tenho estado a ver se aprendo mais qualquer coisinha.

Editado por Caça
Publicidade removida (Regra 4.2)

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

programadorvb6 já experimentei com esses nomes para os atributos, e ai entrava, o problema era(é) na página seguinte.

Que tipo de programa é que usaste para veres esses atributos? eu uso o chrome mas acho que aparece informação a mais para mim (não percebo 90% do que aparece).


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
programadorvb6

Veja se te safas com este exemplo.

Foi feito á pressa mas dá para retirares os valores.

Nota : Segue os passos.

1. Entra normalmente com os teus dados.(Para obteres o link seguinte e captares os dados que queres)

2. Quando entrares, pressionas no botão : Activar Leitura.

3. Clikas onde queres que os dados sejam introduzidos. (Para poderes captar os valores)

- Parte deste exemplo( este ainda está com bugs) foi como te disse feito á pressa.

Link : http://multiupload.biz/r5qa4g6ty65d/WindowsApplication1_MultiUpload.biz.rar.html

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.