Erro em webscraping: unsafe legacy renegotiation disabled

Pessoal, boa tarde!

Estou tentando fazer webscrap da página de CNAEs do Concla (IBGE), mas estou tendo uma certa dificuldade em obter as informações do site.

Segue meu script:

# Configurando proxy
#httr::set_config(httr::use_proxy(url = "10.3.100.207", port = 8080))

# Definindo url
url <- "https://cnae.ibge.gov.br/?view=secao&tipo=cnae&versaosubclasse=10&versaoclasse=7&secao=A"

sessao_inicial <- httr::GET(url)
#> Error in curl::curl_fetch_memory(url, handle = handle): error:0A000152:SSL routines::unsafe legacy renegotiation disabled

page = rvest::read_html(url)
#> Error in open.connection(x, "rb"): error:0A000152:SSL routines::unsafe legacy renegotiation disabled

Também tentei baixar o arquivo .html direto com o download.file, mas não consegui.
Se eu usar a função httr::set_config(), o erro do httr::GET() muda para timeout.

Estou usando o Linux Pop 22.04 (baseado no ubuntu), caso isso seja útil.

Desde já, obrigado!

O problema parece ser alguma medida conta bots do site do IBGE. Só consegui raspar depois de reproduzir todos os headers da requisição:

httr::handle_reset("https://cnae.ibge.gov.br")

httr::GET(
  "https://cnae.ibge.gov.br/?view=secao&tipo=cnae&versaosubclasse=10&versaoclasse=7&secao=A",
  httr::add_headers( 
    "Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "User-Agent" = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
    "Accept-Language" = "en-US,en;q=0.5", 
    "Accept-Encoding" = "gzip, deflate, br",
    "DNT" = "1",
    "Connection" = "keep-alive",
    "Upgrade-Insecure-Requests" = "1",
    "Sec-Fetch-Dest" = "document",
    "Sec-Fetch-Mode" = "navigate",
    "Sec-Fetch-Site" = "none",
    "Sec-Fetch-User" = "?1",
    "Pragma" = "no-cache",
    "Cache-Control" = "no-cache"
  ) 
)
#> Response [https://cnae.ibge.gov.br/?view=secao&tipo=cnae&versaosubclasse=10&versaoclasse=7&secao=A]
#>   Date: 2022-08-29 22:32
#>   Status: 200
#>   Content-Type: text/html; charset=utf-8
#>   Size: 18.3 kB
#> 
#> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/T...
#> 
#> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br" dir=...
#> 
#> <head>
#> <!-- Global site tag (gtag.js) - Google Analytics -->
#> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-285486-1"><...
#> <script>
#>   window.dataLayer = window.dataLayer || [];
#> ...

Created on 2022-08-29 with reprex v2.0.2

1 curtida

Aqui ainda não rolou :frowning:

mas já senti um progresso! haha

Preciso alterar algo para ajustar ao meu caso? Algo no user-agent, por exemplo?

Também estou com o mesmo problema com o site do IBGE e não faço ideia de como resolver.
Já tentei a solução do Caio, mas não consegui o mesmo resultado.

Vocês estão usando proxy ou firewall? Esse tipo de coisa pode estar bloqueando o acesso de vocês via robô. Também é possível que o site do IBGE tenha bloqueado o acesso do IP de vocês depois de muitas tentativas.

O erro é bem misterioso mesmo :thinking: Funciona na minha sessão, é bem estranho não estar funcionando no computador de vocês.

Nunca fiz nenhuma alteração em proxy ou firewall no meu sistema.

Mas já tentei tanto em casa (linux) quanto via computadores e servidores da USP (windows).

De qualquer forma, vou ver se consigo procurar alguma solução baseada no firewall. Tinha até abandonado esse projeto depois de não conseguir.

Também testei a do Theodoro e não consegui. Vi que ele teve uma resposta em outro fórum usando um site que compila códigos em Python (?!), mas só roda via navegador. De fato um mistério.

No meu caso a requisição é essa aqui:

  # Requisição da API SIDRA -----------------------------------------
  resposta_API <- httr::GET("https://apisidra.ibge.gov.br/values/t/1736/n1/all/v/44/p/all/d/v44%202")
  base_API <- httr::content(resposta_API)
  
  # tratamento inicial ------------------------------------------------------
  base_Tratada <- data.frame(matrix(unlist(base_API), 
                                    nrow=length(base_API), 
                                    byrow=TRUE))```
1 curtida

Sim, eu até tentei fazer o webscraping a partir deste site e em python, mas tive algum problema em salvar os resultados no meu PC.

Nem lembro o que acontecia, preciso ver isso de novo também.

1 curtida

Pois é pessoal, aparentemente meu código não apresenta mais o erro. Vou monitorar para entender o que pode ter acontecido.

Não sei se tem relação, mas geralmente eu rodo o script durante o período de divulgação do resultado no SIDRA.

1 curtida

É, o meu ainda não roda aqui…nem o seu :frowning:

1 curtida

Ainda não funcionou em casa, mas agora funcionou em um servidor da USP!

Espero que dure até semana que vem, que é quando vou ter tempo de fazer isso haha