コード例 #1
0
        /// <summary>
        /// Consulta o CNPJ especifico.
        /// </summary>
        /// <param name="cnpj">O CNPJ.</param>
        /// <param name="captcha">O captcha.</param>
        /// <returns>Dados da empresa.</returns>
        public ACBrEmpresa Consulta(string cnpj, string captcha = "")
        {
            Guard.Against <ACBrException>(cnpj.IsEmpty(), "Necessário informar o CNPJ.");
            Guard.Against <ACBrException>(!cnpj.IsCNPJ(), "CNPJ inválido.");

            if (captcha.IsEmpty() && OnGetCaptcha != null)
            {
                var e = new CaptchaEventArgs();
                OnGetCaptcha.Raise(this, e);

                captcha = e.Captcha;
            }

            Guard.Against <ACBrException>(captcha.IsEmpty(), "Necessário digitar o captcha.");

            var request = GetClient(urlBaseReceitaFederal + paginaValidacao);

            var postData = new Dictionary <string, string>
            {
                { "origem", "comprovante" },
                { "cnpj", cnpj.OnlyNumbers() },
                { "txtTexto_captcha_serpro_gov_br", captcha },
                { "submit1", "Consultar" },
                { "search_type", "cnpj" }
            };

            var retorno = request.SendPost(postData);

            Guard.Against <ACBrCaptchaException>(retorno.Contains("Imagem com os caracteres anti robô"), "Catpcha errado.");
            Guard.Against <ACBrException>(retorno.Contains("Erro na Consulta"), "Erro na Consulta.");
            Guard.Against <ACBrException>(retorno.Contains("Verifique se o mesmo foi digitado corretamente"), $"Não existe no Cadastro de Pessoas Jurídicas o número de CNPJ informado.{Environment.NewLine}Verifique se o mesmo foi digitado corretamente.");
            Guard.Against <ACBrException>(retorno.Contains("a. No momento não podemos atender a sua solicitação. Por favor tente mais tarde."), "Erro no site da receita federal. Tente mais tarde.");

            return(ProcessResponse(retorno));
        }
コード例 #2
0
        public void SessionOnCaptchaReceived(object sender, CaptchaEventArgs e)
        {
            AccountState accountState = ClientManager.AccountState;

            ClientManager.AccountState = AccountState.CaptchaReceived;

            ClientManager.LogCaller(new LoggerEventArgs("Captcha received.", LoggerTypes.Warning));

            ClientManager.LogCaller(new LoggerEventArgs("Bot paused VerifyChallenge...", LoggerTypes.Captcha));

            bool solved = false;

            //int retries = 1;

            //while (retries-- > 0 && !solved)
            //{
            solved = ClientManager.CaptchaSolver.SolveCaptcha(this, e.CaptchaUrl).Result;
            //}
            if (solved)
            {
                ClientManager.LogCaller(new LoggerEventArgs("Unpausing bot Challenge finished...", LoggerTypes.Captcha));
                ClientManager.AccountState = accountState;
                return;
            }

            ClientManager.Stop();
        }
コード例 #3
0
        /// <summary>
        /// Consultas the specified CNPJ.
        /// </summary>
        /// <param name="uf"></param>
        /// <param name="cnpj">The CNPJ.</param>
        /// <param name="ie">The ie.</param>
        /// <param name="captcha">The captcha.</param>
        /// <returns>ACBrEmpresa.</returns>
        public ACBrEmpresa Consulta(ConsultaUF uf, string cnpj = "", string ie = "", string captcha = "")
        {
            Guard.Against <ACBrException>(ie.IsEmpty() && cnpj.IsEmpty(), "É necessário informar o CNPJ ou o Número da Inscrição Estadual.");

            var consultaSintegra = GetConsulta(uf);

            if (captcha.IsEmpty() && OnGetCaptcha != null && consultaSintegra.HasCaptcha)
            {
                var e = new CaptchaEventArgs();
                OnGetCaptcha.Raise(this, e);

                captcha = e.Captcha;
            }

            Guard.Against <ACBrCaptchaException>(captcha.IsEmpty() && consultaSintegra.HasCaptcha, "O captcha não pode ser vazio.");
            return(consultaSintegra.Consulta(cnpj, ie, captcha));
        }
コード例 #4
0
        private static void SessionOnCaptchaReceived(object sender, CaptchaEventArgs e)
        {
            var session = (Session)sender;

            Logger.Warn("Captcha received: " + e.CaptchaUrl);

            // Solve
//            var verifyChallengeResponse = await session.RpcClient.SendRemoteProcedureCallAsync(new Request
//            {
//                RequestType = RequestType.VerifyChallenge,
//                RequestMessage = new VerifyChallengeMessage
//                {
//                    Token = "token"
//                }.ToByteString()
//            }, false);
//
//            var verifyChallenge = VerifyChallengeResponse.Parser.ParseFrom(verifyChallengeResponse);
//
//            Console.WriteLine(JsonConvert.SerializeObject(verifyChallenge, Formatting.Indented));
        }
コード例 #5
0
        /// <summary>
        /// Consulta o CPF especifico.
        /// </summary>
        /// <param name="cpf">O CPF.</param>
        /// <param name="dataNascimento">A Data de Nascimento.</param>
        /// <param name="captcha">O captcha.</param>
        /// <returns>Dados da pessoa.</returns>
        public ACBrPessoa Consulta(string cpf, DateTime dataNascimento, string captcha = "")
        {
            Guard.Against <ACBrException>(cpf.IsEmpty(), "Necessário informar o CPF.");
            Guard.Against <ACBrException>(dataNascimento == DateTime.MinValue, "Necessário informar a data de nascimento.");
            Guard.Against <ACBrException>(!cpf.IsCPF(), "CPF inválido.");

            if (captcha.IsEmpty() && OnGetCaptcha != null)
            {
                var e = new CaptchaEventArgs();
                OnGetCaptcha.Raise(this, e);

                captcha = e.Captcha;
            }

            Guard.Against <ACBrException>(captcha.IsEmpty(), "Necessário digitar o captcha.");

            var request = GetClient(urlBaseReceitaFederal + paginaValidacao);

            request.KeepAlive = false;

            var postData = new Dictionary <string, string>();

            postData.Add("TxtCPF", cpf.FormataCPF());
            postData.Add("txtDataNascimento", dataNascimento.ToShortDateString());
            postData.Add("txtToken_captcha_serpro_gov_br", "");
            postData.Add("txtTexto_captcha_serpro_gov_br", captcha);
            postData.Add("Enviar", "Consultar");

            var retorno = request.SendPost(postData, Encoding.UTF8);

            Guard.Against <ACBrCaptchaException>(retorno.Contains("Os caracteres da imagem não foram preenchidos corretamente."), "Os caracteres da imagem não foram preenchidos corretamente.");
            Guard.Against <ACBrException>(retorno.Contains("O número do CPF não é válido."), "EO número do CPF não é válido. Verifique se o mesmo foi digitado corretamente.");
            Guard.Against <ACBrException>(retorno.Contains("Não existe no Cadastro de Pessoas Jurídicas o número de CPF informado."), $"Não existe no Cadastro de Pessoas Jurídicas o número de CPF informado.{Environment.NewLine}Verifique se o mesmo foi digitado corretamente.");
            Guard.Against <ACBrException>(retorno.Contains("a. No momento não podemos atender a sua solicitação. Por favor tente mais tarde."), "Erro no site da receita federal. Tente mais tarde.");

            return(new ACBrPessoa(retorno));
        }
コード例 #6
0
ファイル: Client.cs プロジェクト: sparkycrow/Account-Manager
 public void SessionOnCaptchaReceived(object sender, CaptchaEventArgs e)
 {
     ClientManager.AccountState = AccountState.CaptchaReceived;
     //2captcha needed to solve or chrome drive for solve url manual
     //e.CaptchaUrl;
 }
コード例 #7
0
 private void acbrCnpj_OnGetCaptcha(object sender, CaptchaEventArgs e)
 {
     e.Captcha = FrmCaptcha.GetCaptcha(this, () => acbrCnpj.GetCaptcha());
 }
コード例 #8
0
        private void acbrConsultaSintegra_OnGetCaptcha(object sender, CaptchaEventArgs e)
        {
            var uf = (ConsultaUF)ufSintegraComboBox.SelectedItem;

            e.Captcha = FrmCaptcha.GetCaptcha(this, () => acbrConsultaSintegra.GetCaptcha(uf));
        }