Jump to content
Fivewin Brasil

CAPTCHA - isto me tira do sério


zekasan

Recommended Posts

Sugestão para estudo!

DEFINE DIALOG oMapa SIZE 800, 490 ICON oIco;
TITLE "IEPTB";
STYLE nOR(WS_SYSMENU,WS_MINIMIZEBOX,WS_MAXIMIZEBOX)
oActivex := TActiveX():New(oMapa,"Shell.Explorer.2",0,0)
oMapa:oClient := oActivex
ACTIVATE DIALOG oMapa CENTERED ;
ON INIT oActivex:Do("Navigate2","http://www.ieptb.com.br")
oActivex:Destroy()
oMapa:End()
Return nil
Link to comment
Share on other sites

Boa tarde amigo!

Aqui vai um exemplo que fiz pra baixar o captcha do website da NF-e. Creio que servirá pra você.

*************************************************************************
FUNCTION BaixaCaptcha()
* Funcao que baixa a imagem captcha
LOCAL ErroNET:= .F.
LOCAL cUrl, oPg, cBuf
LOCAL cImage:= ""
IF !IsInternet()
MsgInfo("Equipamento sem conexão com a Internet")
RETURN cImage
ENDIF
oPg:=CreateObject("Microsoft.XMLHTTP")
oPg:Open("GET", cUrl, .F.)
* Tenta enviar a requisicao
Try
oPg:Send()
Catch oError
ErroNET:=.T.
End Try
IF !ErroNET
* obtem o retorno da requisicao
cBuf := oPg:responseBody
* grava o arquivo de imagem
memowrit("./captcha.jpg", cBuf)
cImage:= "./captcha.jpg"
ELSE
MsgInfo("Ocorreu um erro de conexão com o website da receita federal. Tente mais tarde.")
ENDIF
RETURN cImage
Link to comment
Share on other sites

Sugestão para estudo!

DEFINE DIALOG oMapa SIZE 800, 490 ICON oIco;
TITLE "IEPTB";
STYLE nOR(WS_SYSMENU,WS_MINIMIZEBOX,WS_MAXIMIZEBOX)
oActivex := TActiveX():New(oMapa,"Shell.Explorer.2",0,0)
oMapa:oClient := oActivex
ACTIVATE DIALOG oMapa CENTERED ;
ON INIT oActivex:Do("Navigate2","http://www.ieptb.com.br")
oActivex:Destroy()
oMapa:End()
Return nil
Excelente idéia JMSILVA. Thanks.
// CONSULTA PROTESTOS: 08/12/2015, AUTOR: JMSILVA Forum Fivewin Brasil.
#include "FiveWin.ch"
 
MEMVAR oActiveX
 
FUNCTION PROTESTOS()
 
   LOCAL cTitle, cSite, cEvents, oWnd
 
   IF ( !IsInternet() )
 
      MsgInfo("Necessário conexão com a internet."+CRLF+"Operação cancelada","Informação")
 
      RETURN NIL
 
   ENDIF
 
   cEvents := "Vidal"
   cSite  := ( "http://www.ieptb.com.br" )
   cTitle := ( " ..::" + "| IEPTB - CONSULTA GRATUITA DE PROTESTO: CPF/CNPJ: " )
 
   DEFINE WINDOW oWnd TITLE cTitle + cSite
 
   oActiveX = TActiveX():New( oWnd, "Shell.Explorer" )
 
   oActivex:Silent := .T. // para nao gerar erro de scripts.
 
   oActivex:SetFocus()
 
   oWnd:oClient = oActiveX
 
   oActiveX:Navigate( cSite )
 
   ACTIVATE WINDOW oWnd MAXIMIZED
 
   oWnd:End()
 
Return nil
Link to comment
Share on other sites

Obrigado pela ajuda, mas não se enquadra ainda no que eu preciso:

Programa que está sendo desenvolvido:

- Usuário digita o CNPJ ou CPF

- O sistema verifica primeiramente no banco de dados interno se há alguma restrição para aquele cliente

- Não havendo restrição ele irá procurar no www.ieptb.com.br se há algum protesto negativando o cliente

- Caso não haja restrição ele irá depois na receita e no sintegra para verificar se ele está ativo.

- Eu preciso que não mostre a página de cada www, vou entrar com o cnpj automaticamente em cada página,

mostrando apenas o captcha de cada www em uma dialog minha.

- Isto para agilizar o processo, semi-automatizando a pesquisa, porque o cliente pode estar na linha.

Link to comment
Share on other sites

Tem algum método que eu consiga jogar o código abaixo para ser exibido dentro da minha dialog? e não na página do browser? Aí eu mataria uma fase do captcha.



oIE1 := CreateObject('InternetExplorer.Application')

oIE1:Visible := .t.


oIE1:left := 0

oIE1:top := 0

oIE1:height := 180

oIE1:width := 260

oIE1:Visible := .T.



while( oIE1:ReadyState != 4 )

HB_IdleSleep( 0 )

end while

Link to comment
Share on other sites

Amigo, se você conseguir vou dizer que "VOCÊ É O CARA!".

Pesquisando descobri que para gerar esse código na imagem é usado algo do tipo:

<?php

session_start();
$codigoCaptcha = substr(md5( time()) ,0,9);

$_SESSION['captcha'] = $codigoCaptcha;


$imagemCaptcha = imagecreatefrompng("fundocaptch.png");

$fonteCaptcha = imageloadfont("anonymous.gdf");

$corCaptcha = imagecolorallocate($imagemCaptcha,255,0,0);

imagestring($imagemCaptcha,$fonteCaptcha,15,5,$codigoCaptcha,$corCaptcha);


header("Content-type: image/png");

imagepng($imagemCaptcha);

imagedestroy($imagemCaptcha);

?>

Depois de dar um SUBMIT no formulário é usado outro .php para validar o código.

Portanto, é preciso não só saber de antemão qual é o código como também enviar isso via parâmetro para o .php validador capturar e validar.

Até onde sei, só os administradores do site poderão fornecer essa informação, se isso for permitido.

Só espero estar errado.

Link to comment
Share on other sites

O Toya pode nos explicar melhor, mas se não estiver engando é um Aplicativo q ele criou pra fazer o Download do XML, resumidamente falando, q de alguma maneira consegue decifrar o Captcha, q é solicitado qdo informamos a chave da NFe ai "precisaria" do captcha tb e esta parte ele faz...

Compartilhe conosco Toya como fez...

Como diriam "O POVO QUER SABER"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...