Clipper On Line • Ver Tópico - Consulta optante do simples online
Mudar para estilo Clássico
Projeto Harbour - Compilador de código aberto compatível com o Clipper.
Postar uma resposta

Consulta optante do simples online

19 Fev 2016 15:44

Ola pessoal, gostaria da ajuda de vocês para tentar fazer esta consulta, só falta enviar os dados para o site,
tentei mais não estou conseguindo

Código:
#include "minigui.ch"
#include "directry.ch"
#include "Fileio.ch"
#include "xhb.ch"
**********************************************
FUNCTION Main()
   Public cUrl := "http://www8.receita.fazenda.gov.br/simplesnacional/aplicacoes/atbhe/consultaoptantes.app/consultaropcao.aspx?"
   Public cUrlC:= "http://www8.receita.fazenda.gov.br/simplesnacional/aplicacoes/atbhe/consultaoptantes.app/Captcha/Inicializa.ashx"
   Public cCaptcha, cCnpj, cStringCookie, cViewState, cEeventValidation, cHiddenField

   LOAD WINDOW F_Simples
   Captcha()
   F_Simples.Center
   F_Simples.Activate

***********************************************
Function Consulta()
   cCaptcha:= F_Simples.text_2.Value
   cCnpj   := Tira_Mascara(F_Simples.text_1.value)

   oHttp:=TipClientHttp():new( cURL )
   oHttp:open()
   cHtml := oHttp:readAll()
   oHttp:close()
   memowrit('site.txt', cHtml)
   nIni:= At('id="__VIEWSTATE" value=',  cHtml) + 24
   cHtml1:= SubStr( cHtml, nIni)
   nFim:= At(' />', cHtml1) - 1
   cViewState:= SubStr(cHtml, nIni, nFim)

   nIni1:= At('id="__EVENTVALIDATION" value="',  cHtml) + 30
   cHtml1:= SubStr( cHtml, nIni1)
   nFim1:= At(' />', cHtml1) - 1
   cEeventValidation:= SubStr(cHtml, nIni1, nFim1)

   nIni2:= At('ctl00$ContentPlaceHolderConteudo$',  cHtml) + 33
   cHtml1:= SubStr( cHtml, nIni2)
   nFim2:= At('" type="text"', cHtml1) - 1
   cHiddenField:= SubStr(cHtml, nIni2, nFim2)

    cRet:= MicrosoftPost()
    F_Simples.Edit_1.Value:= cRet
    Return Nil

***************************************
Function Captcha()

   oHttp:=TipClientHttp():new( cURLc )
   oHttp:open()
   cHtml := oHttp:readAll()
   oHttp:close()
   memowrit('sitec.txt', cHtml)
   nIni1:= At('"Token":',  cHtml) + 7
   nFim1:= At('","Dados"', cHtml) - nIni1
   cStringCookie:= SubStr(cHtml, nIni1, nFim1)
   nIni:= At('Dados":"',  cHtml) + 8
   nFim:= At('","ContentType"', cHtml) - nIni
   txt_file:=fcreate("captcha.png", 0)
   if (!(ferror() = 0))
      MsgInfo("Erro de criacao do arquivo TESTE.TXT ::> " + ;
      Str(ferror(), 3, 0))
      quit
   endif
   cFile:= SubStr(cHtml, nIni, nFim)
   cFile:= hb_base64Decode(cFile, "image/png")
   fwrite(txt_file, cFile)
   fclose(txt_file)
   SetProperty ('F_Simples', 'image_1', 'Picture', 'Captcha.png')
   Return Nil

***************************************
Function Tira_Mascara(arg)
Local arg1:= "", x

   For x:= 1 To Len(arg)
      If SubStr(arg, x, 1) != "/"
         If SubStr(arg, x, 1) != "."
            If SubStr(arg, x, 1) != "-"
               If SubStr(arg, x, 1) != "("
                  If SubStr(arg, x, 1) != ")"
                     If SubStr(arg, x, 1) != " "
                        arg1+= SubStr(arg, x, 1)
                     EndIf
                  EndIf
               EndIf
            EndIf
         EndIf
      EndIF
   Next x
   Return(AllTrim(arg1))

***************************************
Function TrocaUtf8(cTexto)

cTexto := StrTran( cTexto, "/", "%2F" )
cTexto := StrTran( cTexto, "=", "%3D" )

Return cTexto
***************************************
Function MicrosoftPost()
   LOCAL oServer, cRetorno := "*ERRO*", cMsgErro:= ''

   cParm:= [__EVENTTARGET%3D&] + ;
           [__EVENTARGUMENT%3D&] + ;
           [__VIEWSTATE%3D] +  TrocaUtf8(cViewState) + ;
           [&__EVENTVALIDATION%3D] + TrocaUtf8(cEeventValidation) + ;
           [&ctl00%24ContentPlaceHolderConteudo%24] + cHiddenField + [%3D] + cCnpj + ;
           [&ctl00%24ContentPlaceHolderConteudo%24HiddenField1%2F] + cHiddenField + ;
           [&ctl00%24ContentPlaceHolderConteudo%24hddServidorCaptcha%3D] + 'pro' + ;
           [&ctl00%24ContentPlaceHolderConteudo%24txtTexto_captcha_serpro_gov_br%3D] + cCaptcha + ;
           [&ctl00%24ContentPlaceHolderConteudo%24btnConfirmar%3D] + 'Consultar'

   TRY
      oServer:= win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")
   CATCH
      cMsgErro:= "Serviço não mapeado"
      RETURN(cMsgErro)
   END
   TRY
       oServer:Open( "POST", cUrl , .F. )
       oServer:SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
      oServer:SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
        oServer:SetRequestHeader("Accept-Encoding", "gzip, deflate" )
        oServer:SetRequestHeader("Accept-Language", "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3")
        oServer:SetRequestHeader("Connection", "keep-alive")
        oServer:SetRequestHeader("Cookie", "captcha_token=" +  cStringCookie)
        oServer:SetRequestHeader("Host", "www8.receita.fazenda.gov.br")
//       oServer:SetRequestHeader("Referer", "http://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATBHE/ConsultaOptantes.app/ConsultarOpcao.aspx")
        oServer:SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36")
   CATCH
        RETURN('Erro no open')
   END
   TRY
   //msgInfo(cUrl+cParm)
      oServer:send(cParm)
      oServer:WaitForResponse( 500 )
   CATCH
      cMsgErro:= "Erro ao criar"
      RETURN(cMsgErro )
   END
   cRetorno:= (oServer:ResponseText() + cMsgErro)
   HB_MemoWrit("Reposta.txt", cRetorno, .f. )
     RETURN(cRetorno)
/*
parte do site pelo firebug
Accept
text/html,application/xhtml+xml,application/xml;q=0.9,* /*;q=0.8
Accept-Encoding
gzip, deflate
Accept-Language
pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3
Connection
keep-alive
Content-Type
application/x-www-form-urlencoded
Cookie
captcha_token=45615119762207542432998174142126158180112212181911714386
Host
www8.receita.fazenda.gov.br
Referer
http://www8.receita.fazenda.gov.br/simplesnacional/aplicacoes/atbhe/consultaoptantes.app/consultaropcao
.aspx?__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTI4MDEzODYyMg9kFgJmD2QWAgIDD2QWAgICD2QW
AgIDD2QWBAIBD2QWAgIDDw8WAh4RQ29udHJvbFRvVmFsaWRhdGUFEjYzNTkxMzI1NzgwNDY5MzQ4OGRkAgMPDxYCHgdWaXNpYmxl
aGQWCAITD2QWBAIDDzwrABEBARAWABYAFgBkAgcPPCsAEQEBEBYAFgAWAGQCGQ9kFgICAw88KwARAQEQFgAWABYAZAIfD2QWAgID
DzwrABEBARAWABYAFgBkAiUPZBYCAgMPPCsAEQEBEBYAFgAWAGQYBQU7Y3RsMDAkQ29udGVudFBsYWNlSG9sZGVyQ29udGV1ZG8k
Z3JkUGVyaW9kb3NBbnRlcmlvcmVzU0lNRUkPZ2QFOmN0bDAwJENvbnRlbnRQbGFjZUhvbGRlckNvbnRldWRvJGdyZEFnZW5kYW1l
bnRvc09wY2FvU2luYWMPZ2QFOWN0bDAwJENvbnRlbnRQbGFjZUhvbGRlckNvbnRldWRvJEdyaWRWaWV3T3Bjb2VzQW50ZXJpb3Jl
cw9nZAUyY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyQ29udGV1ZG8kZ3JkRXZlbnRvc0Z1dHVyb3MPZ2QFN2N0bDAwJENvbnRlbnRQ
bGFjZUhvbGRlckNvbnRldWRvJGdyZEV2ZW50b3NGdXR1cm9zU2ltZWkPZ2T920T0GuCQkl8xdxBEk0zVBiLNY06JbOckBYKTOSNRsQ
%3D%3D&__EVENTVALIDATION=%2FwEWBgLc6fWoAgL89J3qBALm7oLoAQK03OyQCwKI9eioCgLDwpOgAaQZXvAsQIyYcxZ4x%2FcSIf5qFytGdIkWWT
%2BCwr38M2bm&ctl00%24ContentPlaceHolderConteudo%24635913257804693488=02351488000127&ctl00%24ContentPlaceHolderConteudo
%24HiddenField1=635913257804693488&ctl00%24ContentPlaceHolderConteudo%24hddServidorCaptcha=pro&ctl00
%24ContentPlaceHolderConteudo%24txtTexto_captcha_serpro_gov_br=uztgyg&ctl00%24ContentPlaceHolderConteudo
%24btnConfirmar=Consultar
User-Agent
Mozilla/5.0 (Windows NT 10.0; rv:44.0) Gecko/20100101 Firefox/44.0

RETURN( NIL ) */


Código:
*HMGS-MINIGUI-IDE Two-Way Form Designer Generated Code
*OPEN SOURCE PROJECT 2005-2015 Walter Formigoni http://sourceforge.net/projects/hmgs-minigui/

DEFINE WINDOW TEMPLATE AT 198 , 274 WIDTH 597 HEIGHT 300 TITLE 'Consulta Optante do Simples' MAIN

     DEFINE LABEL Label_1
            ROW    10
            COL    30
            WIDTH  40
            HEIGHT 15
            VALUE "CNPJ"
     END LABEL

     DEFINE TEXTBOX Text_1
            ROW    30
            COL    30
            WIDTH  160
            HEIGHT 30
            FONTNAME 'Arial'
            FONTSIZE 12
            INPUTMASK "99.999.999/9999-99"
     END TEXTBOX

     DEFINE LABEL Label_2
            ROW    10
            COL    200
            WIDTH  55
            HEIGHT 15
            VALUE "Captcha"
     END LABEL

     DEFINE TEXTBOX Text_2
            ROW    30
            COL    200
            WIDTH  120
            HEIGHT 30
            FONTNAME 'Arial'
            FONTSIZE 12
            MAXLENGTH 6
     END TEXTBOX

     DEFINE IMAGE Image_1
            ROW    30
            COL    330
            WIDTH  180
            HEIGHT 50
     END IMAGE

     DEFINE EDITBOX Edit_1
            ROW    100
            COL    20
            WIDTH  550
            HEIGHT 140
            VALUE ''
            FONTNAME 'Arial'
            MAXLENGTH  NIL
     END EDITBOX

     DEFINE BUTTON Button_1
            ROW    70
            COL    160
            WIDTH  100
            HEIGHT 28
            CAPTION "Consultar"
            FONTNAME 'Arial'
            ACTION { || Consulta()}
     END BUTTON

END WINDOW

Consulta optante do simples online

26 Fev 2016 12:33

Ufa ate que fim funcionou

Consulta optante do simples online

26 Fev 2016 17:23

:-o
Olá Daniel, fiquei interessado por sua pesquisa, o fonte apresentado aqui está ok.
:)Pos
HASA

Consulta optante do simples online

26 Fev 2016 19:55

Interessante.
Pelo que entendi, o link de consulta recebe a foto codificada e mais o texto digitado.
O truque é trocar a foto por outra já conhecida, com texto digitado já conhecido.

Consulta optante do simples online

27 Fev 2016 21:26

Hasa
nao o apresentado ai estava case proto, agora terminei ele,
e estou tentando a consulta do cnpj, este esta mais dificil pois tem que pegar os cookies
Anexos
Simples.rar
Para testar Consulta Cnpj e Simple
(1.35 MiB) Baixado 537 vezes

Consulta optante do simples online

01 Mar 2016 08:45

Daniel não entendi...

Vc postou um código com uma dificuldade depois relatou q funcionou...

Qual era o problema então?

Consulta optante do simples online

02 Mar 2016 11:05

Fladimir o erro era no script de envio estava usando variável tipo texto
ai troquei para vetor ai funcionou

Consulta optante do simples online

02 Mar 2016 13:37

OI Daniel, posta o exemplo corrigido aqui

Consulta optante do simples online

02 Mar 2016 17:28

:))
Wanderlei o post está acima ok. Ainda não testei, mas... acho que é este com o SIMPLES.RAR
:)Pos
HASA

Consulta optante do simples online

02 Mar 2016 22:18

HASA ... o RAR contém os EXE funcionais... a questão é sobre a correção no código... o Daniel respondeu acima... agora tem q testar a resposta.

Consulta optante do simples online

03 Mar 2016 11:12

:-O
Vixi, então aguardo também... estou na correria com outras obrigações e por isso nem abri o RAR.
:-o
HASA

Consulta optante do simples online

11 Mar 2016 23:53

????

Consulta optante do simples online

22 Mar 2016 16:05

Ola depois de alguns teste parece que esta funcionando blz
só a consulta do Cnpj que enrosca de vezes em quanto
segue os arquivos fontes
Anexos
ConsultaSimplesCnpj.rar
Arquivos fontes
(14.42 KiB) Baixado 828 vezes

Consulta optante do simples online

26 Abr 2016 11:07

Bom Dia Daniel,
Consegui colocar sua função dentro do meu sistema para pegar os dados da empresa, será que vc consegui fazer este mesmo esquema para pegar os dados pelo CPF?

Consulta optante do simples online

26 Abr 2016 11:17

Wanderlei,

Vc pode disponibilizar como vc fez?

Como vc pegou os dados no .html?

Vc usa MiniGUI ou HwGUI? Se hwgui, como vc fez pra exibir o captcha (.png)?

Janio
Postar uma resposta