public dynamic ConsultarDadosCnpj(Newtonsoft.Json.Linq.JObject jsonData) { string aCNPJ = jsonData["cnpj"].ToString(); CookieContainer _cookies = CacheHelper.Get <CookieContainer>("CookieReceitaFederal_" + aCNPJ); var oFormatarDados = new FormatarDados(); var id = oFormatarDados.ObterDados(_cookies, aCNPJ, jsonData["captcha"].ToString()); // Testar ////now get cache instance //var cache = Configuration.CacheOutputConfiguration().GetCacheOutputProvider(Request); ////and invalidate cache for method "Get" of "FornecedorController" //cache.RemoveStartsWith(Configuration.CacheOutputConfiguration().MakeBaseCachekey("FornecedorController", "Get")); if (id > 0) //encontrou? { var _fornecedor = dao.Consulta(id); var _quadro_societario = dao.QuadroSocietario(id); return(new { fornecedor = _fornecedor, quadro_societario = _quadro_societario }); } else { return(null); } }
private static Fornecedor ObterDados(string aCNPJ, string aCaptcha) { string cnpj = new Regex(@"[^\d]").Replace(aCNPJ, string.Empty); CookieContainer _cookies = (CookieContainer)HttpContext.Current.Session["cookies"]; var request = (HttpWebRequest)WebRequest.Create(urlBaseReceitaFederal + paginaValidacao); request.ProtocolVersion = HttpVersion.Version10; request.CookieContainer = _cookies; request.Method = "POST"; var postData = string.Empty; postData += "origem=comprovante&"; postData += "cnpj=" + cnpj + "&"; postData += "txtTexto_captcha_serpro_gov_br=" + aCaptcha + "&"; postData += "submit1=Consultar&"; postData += "search_type=cnpj"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; var dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); var response = request.GetResponse(); var stHtml = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1")); var strHtmlFornecedor = stHtml.ReadToEnd(); if (strHtmlFornecedor.Contains("Verifique se o mesmo foi digitado corretamente")) { throw new Exception("O número do CNPJ não foi localizado na Receita Federal"); } if (strHtmlFornecedor.Contains("Erro na Consulta")) { throw new Exception("Os caracteres não conferem com a imagem"); } if (strHtmlFornecedor.Length > 0) { var requestQAS = (HttpWebRequest)HttpWebRequest.Create(urlBaseReceitaFederal + paginaQuadroSocietario); requestQAS.CookieContainer = _cookies; requestQAS.Method = "GET"; var res = (HttpWebResponse)requestQAS.GetResponse(); StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("ISO-8859-1")); string strHtmlQuadroSocietario = sr.ReadToEnd(); var formataDados = new FormatarDados(); Fornecedor fornecedor = formataDados.MontarObjFornecedor(cnpj, strHtmlFornecedor); if (fornecedor != null) { formataDados.MontarObjFornecedorQuadroSocietario(fornecedor, strHtmlQuadroSocietario); var UserName = HttpContext.Current.User.Identity.Name; //fornecedor.IdAtualizacao = Comum.Encrypt(fornecedor.PreparaAtualizacao(UserName).ToString()); fornecedor.UsuarioInclusao = UserName; fornecedor.DataInclusao = DateTime.Now; fornecedor.AtualizaDados(); fornecedor.MarcaVisitado(UserName); } return(fornecedor); } return(null); }
public static void ConsultarCNPJ(string CNPJ) { bool bResolverCapchaAutomatico = false; Random aleatorio = new Random(); mutex.WaitOne(); try { string texto; Bitmap captcha, limpo; int id = 0, i = 0; do { erros[linguagem]++; if (linguagem < linguagens.Length - 1) { linguagem++; } else { linguagem = 0; } if (bResolverCapchaAutomatico) { sw.Stop(); if (sw.Elapsed.TotalSeconds < 4) { System.Threading.Thread.Sleep(aleatorio.Next(3000, 5000)); } } captcha = PegarCaptchaCNPJ(); if (bResolverCapchaAutomatico) { System.Threading.Thread.Sleep(aleatorio.Next(5000, 7000)); sw.Reset(); sw.Start(); } limpo = Captcha.Limpar(captcha); texto = Captcha.OCR(limpo, linguagens[linguagem]); try { Console.WriteLine("Captcha: {0}", texto); if (!bResolverCapchaAutomatico) { Console.WriteLine("Digite o Captcha:"); string temp = Console.ReadLine(); if (!string.IsNullOrEmpty(temp)) { texto = temp; } } var oFormatarDados = new FormatarDados(); id = oFormatarDados.ObterDados(_cookies, CNPJ, texto, true); Console.WriteLine("Fornecedor atualizado: {0}", id); break; } catch (Exception ex) { if (ex.Message == "O número do CNPJ não foi localizado na Receita Federal") { using (Banco banco = new Banco()) { banco.AddParameter("@cnpj_cpf", CNPJ); banco.AddParameter("@controle", 5); banco.AddParameter("@mensagem", ex.Message); banco.ExecuteNonQuery(@"update fornecedor set controle=@controle, mensagem=@mensagem where cnpj_cpf=@cnpj_cpf;"); } break; } else { if (i++ == 5) { break; } } Console.WriteLine(ex.Message); tentativas[linguagem] = (contagem[linguagem] * tentativas[linguagem] + erros[linguagem] + 1) / (contagem[linguagem] + 1); contagem[linguagem]++; erros[linguagem] = -1; //limpo.Save(tempPath + "c.limpo.png"); //limpo.Dispose(); if (ex.Message.Contains("tempo limite")) { System.Threading.Thread.Sleep(3600000); } } } while (id == 0); /*for (int l = 0; l < Receita.linguagens.Length; l++) { * System.Web.HttpContext.Current.Response.Write(linguagens[l] + ": " + (tentativas[l] < erros[l] ? (contagem[l] * tentativas[l] + erros[l] + 1) / (contagem[l] + 1) : tentativas[l]) + "<br />"); * }*/ mutex.ReleaseMutex(); /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) { * sw.WriteLine(DateTime.Now + ": " + retorno); * }*/ } catch (Exception e) { erros[linguagem]--; mutex.ReleaseMutex(); if (e is System.NullReferenceException) { /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) { * sw.WriteLine(DateTime.Now + ": Imagem invalida"); * }*/ throw new BusinessException("Imagem invalida"); } else { if ((e.GetBaseException() is System.IO.IOException) || (e.GetBaseException() is System.Net.Sockets.SocketException)) { //System.Threading.Thread.Sleep(aleatorio.Next(50000, 500000)); /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) { * sw.WriteLine(DateTime.Now + ": IP bloqueado"); * }*/ throw new BusinessException("IP bloqueado"); } else { /*using (StreamWriter sw = File.AppendText(System.Web.HttpContext.Current.Server.MapPath("/log.txt"))) { * sw.WriteLine(DateTime.Now + ": " + e.ToString()); * }*/ throw; } } } }