Problemas ao Baixar Arquivos de URLs de Websites Sem Usar um Navegador

Em certos aplicativos, é possível usar uma URL como se fosse um arquivo. Feito isso, o aplicativo baixaria o arquivo da URL, e então o abriria como se fosse um arquivo normal. Alguns exemplos incluem:

  1. No Krita, é possível copiar a URL de uma imagem em um navegador e colar no Krita, e o Krita automaticamente baixa a imagem.
  2. Em alguns gerenciadores de arquivos no Linux, é possível arrastar e soltar uma imagem do navegador para o gerenciador, e, feito isso, o gerenciador tentará baixar a imagem.
  3. Em alguns casos é possível digitar uma URL no campo de nome de arquivo de uma caixa de diálogo para selecionar arquivo, e, feito isso, o arquivo seria baixado.

Infelizmente, há vários problemas que podem ocorrer ao fazer isso.

Primeiramente, quando você acessa uma página de um website em seu navegador, o navegador automaticamente baixa objetos incluídos na página, como imagens, de suas respectivas URLs. Quando isso ocorre, uma requisição HTTP é feita, e 3 informações relevantes são transmitidas:

  1. Um código que identifica o navegador (user agent string).
  2. Os cookies.
  3. De qual página a requisição está vindo (referer).

Quando você dá apenas a URL para um outro aplicativo, esse outro aplicativo não transmitirá as mesmas informações acima que o navegador transmitiu. Consequentemente, a resposta da requisição HTTP poderá ser diferente. Isto é: no navegador a URL é de uma imagem, mas no Krita a URL seria uma página de erro, por exemplo.

Os motivos para isso são bem sensatos.

Primeiro, muitos websites só permitem tráfico vindo de navegadores. O código identificador é usado para identificar navegadores que seres humanos estão usando, e também é usado por "bots," programas que acessam URLs como se fossem navegadores. Por exemplo, todo motor de busca com seu próprio índice possui seu próprio bot para construir o índice, e.g. Google tem o Googlebot. Websites permitem que esse bot "benigno" acesse as páginas, mas podem não estar interessados em permitir que outros bots tenham acesso.

Segundo, se uma página só for acessível para usuários que estiverem autenticados, é necessário que o cookie contendo o código da chave da sessão de usuário seja passada para o website. Esse cookie é dado ao navegador quando você faz "login" no website. Logo, apenas o navegador possui o cookie, outros aplicativos não o terão. Em prática, embora é comum que websites escondam páginas do site para usuários não-autenticados, não é comum esconder arquivos como imagens, sendo possível acessar imagens que só aparecem em páginas "escondidas" mesmo sem ter conta através de suas URLs diretamente.

É possível testar isso facilmente abrindo a URL da imagem em uma janela incógnita.

Terceiro, em alguns casos, alguém encontra uma imagem hospedada em um website e coloca essa imagem em uma página em outro website sem o consentimento do dono do website original. Essa prática é chamada de hotlinking. Note que isso não se trata de um "link" clicável na página não, estamos falando de fazer a imagem aparecer na página, sendo baixada automaticamente do website B toda vez que alguém acessar o website A. Existem websites de hospedagem de imagens que permitem o hotlinking de imagens pequenas (thumbnails), mas para ver imagens maiores é necessário visitar o website de hospedagem diretamente. Esse sistema depende do fato que o navegador sempre diz ao website em qual página ele encontrou a imagem que está baixando.

Como é o aplicativo que fornece as informações acima para o website, é possível para o programa mentir para o website e fingir ser o Googlebot ou até mesmo um navegador de verdade, fingir que está acessando a URL vindo de uma página que não está, e simplesmente usar os mesmos cookies que o navegador copiando-os de seja onde o navegador guarda seus cookies.

Normalmente isso não é feito por que há poucos casos onde os problemas acima ocorrem, e quando ocorrem é mais fácil baixar o arquivo usando o navegador em vez de dar a URL para outro programa tentar baixar a mesma URL separadamente.

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *