O extrator de título da página hospedada do Google Cloud App Engine retorna 403 Proibido em casos

1

Eu tenho um serviço de análise de encurtamento / tráfego de URL hospedado em um projeto do Google App Engine (GAE) no Google Cloud (GC). Quando um URL é enviado para encurtamento, ele executa um urllib2.urlopen do Python para extrair a página e obter seu título, que é usado para gerar uma postagem de mídia social contendo o link encurtado. Alguns sites estão retornando um 403 Forbidden no comando urllib2.urlopen e não podem gerar o corpo da postagem da mídia social a partir do título da página como resultado. Observe que isso ocorre apenas ao tentar carregar a página para obter o título da página; a URL encurtada gerada funciona corretamente no meu navegador e 302s para a página de destino corretamente.

Meu palpite é que as solicitações de páginas provenientes dos intervalos de IP do GC estão na lista negra dos sites aos quais estou tentando vincular como uma fonte de possível bot ou outro tráfego não humano ou mal-intencionado.

O GC tem um serviço de lista de permissões para o qual eu posso aplicar ou isso é causado por outra coisa?

    
por B Lowery 04.05.2016 / 14:56

1 resposta

1

De acordo com as Solicitações de saída , o Google App Engine usa o serviço Busca de URL para emitir solicitações de saída. As solicitações do seu aplicativo estão sendo intermediadas por proxy pelo serviço de busca de URL do Google. Outros sites podem identificar com bastante facilidade a origem dessas solicitações. Além disso, o App Engine anexará uma string de identificação ao cabeçalho User-Agent para permitir que os servidores identifiquem solicitações do App Engine de acordo com Solicitar cabeçalhos .

Não há nenhum serviço de lista de permissões disponível que permita que seu aplicativo do App Engine busque URLs e receba 2xx de respostas. Solicitar um determinado URL e analisar a resposta HTML para uma parte de seu conteúdo é comumente chamado de "scraping" e a maioria dos grandes sites tem políticas severas sobre esse tipo de interação.

Facebook, por exemplo

Os Termos de Serviço do Facebook explicitamente desautorizam a extração informando o seguinte:

You will not collect users' content or information, or otherwise access Facebook, using automated means (such as harvesting bots, robots, spiders, or scrapers) without our prior permission.

O Facebook tem sua API de gráficos , que é a principal maneira de obter dados dentro e fora do gráfico social do Facebook. Isso requer o registro de um aplicativo e a obtenção de um app secret . Dessa forma, você pode fornecer uma appsecret_proof para chamadas de API do Graph para autenticação. Em seguida, você pode usar a URL chamada para obter essencialmente um objeto do Facebook (compartilhamentos, comentários, etc.), fornecendo um URL externo do Facebook.

O caso geral

A maioria dos outros sites de mídia social tem suas próprias APIs também. Isso porque eles querem decidir como aplicativos externos, como o seu, acessam o conteúdo e o conteúdo que recebem de seus usuários. Você deve ter certeza de respeitar os termos de serviço de cada site se quiser acessar seus recursos.

    
por 06.05.2016 / 22:17