No mundo do web scraping, muitas vezes precisamos acessar sites HTTPS
, a versão S
egura do HTTP
(Hyper Text Transfer Protocol). Esse protocolo é utilizado para encriptar as mensagens trocadas por usuário e servidor.
O pacote httr
utiliza um padrão SSL
(Secure Sockets Layer) para lidar com HTTPS
. O SSL nada mais é que uma forma de informar ao servidor que você é você, garantindo que suas mensagens só possam ser interpretadas por esse servidor, e vice-versa. O padrão do httr
funciona bem para a maioria dos sites, permitindo o acesso sem sofrimento.
No entanto, alguns sites dão o seguinte erro:
httr::GET("https://esaj.tjsp.jus.br")
## Response [https://esaj.tjsp.jus.br/esaj/portal.do?servico=740000]
## Date: 2022-07-13 18:39
## Status: 200
## Content-Type: text/html;charset=ISO-8859-1
## Size: 71.4 kB
##
##
##
##
##
##
##
##
## <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3...
##
## ...
A solução para esse problema é bem simples. Basta mandar o httr
ignorar o protocolo SSL
usando a função httr::config()
. Ignorar o SSL costuma ser uma má ideia, pois faz com que as mensagens entre usuário e servidor voltem a ser em texto puro, como se fosse HTTP
. Mas no web scraping isso não é exatamente um problema.
Para solucionar o problema acima, rode:
httr::GET("https://esaj.tjsp.jus.br", httr::config(ssl_verifypeer = FALSE))
## Response [https://esaj.tjsp.jus.br/esaj/portal.do?servico=740000]
## Date: 2022-07-13 18:39
## Status: 200
## Content-Type: text/html;charset=ISO-8859-1
## Size: 71.4 kB
##
##
##
##
##
##
##
##
## <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3...
##
## ...
E… Feliz web scraping!
OBS: Certa vez um amigo teve problema com SSL mesmo tentando a solução acima numa máquina com Ubuntu Resolvemos o problema reinstalando a biblioteca libcurl4-openssl-dev
via apt-get
e o pacote curl
do R. Assim:
No terminal:
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
No R:
install.packages('curl')