Pergunta

Se eu apontar o Firefox em http://bitbucket.org/tortoisehg/stable/wiki/home/releasenotes, Eu recebo uma página de HTML. Mas se eu tentar isso em Python:

import urllib

site = 'http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes'
req = urllib.urlopen(site)
text = req.read()

Eu recebo o seguinte:

500 ERRADOR DO SERVIDO INTERNO O servidor encontrou um erro interno ou equívoco e não conseguiu concluir sua solicitação.

O que estou fazendo errado?

Foi útil?

Solução

Você não está fazendo nada de errado, o Bitbucket faz alguma detecção de agentes de usuário (para detectar clientes mercuriais, por exemplo). Apenas Mudando o agente do usuário conserta (se não tiver urllib como uma substring).

Você deve preencher um problema sobre isso: http://bitbucket.org/jespern/bitbucket/issues/new/

Outras dicas

Você não está fazendo nada de errado, na superfície, e como a página de erro diz que você deve entrar em contato com os administradores do site, porque eles são os com os logs do servidor que podem explicar o que está acontecendo. Felizmente, os administradores do site do Bitbucket são um grupo amigável!

Sem dúvida, há algum cabeçalho ou combinação de cabeçalhos que os navegadores definem de uma maneira, o Urllib define de outra maneira e um bug no servidor é agradado no último caso. Você pode querer ver exatamente quais cabeçalhos estão sendo enviados, por exemplo, com o Firebug no Firefox e reproduzi -los até que você isole exatamente o bug do servidor; Provavelmente, será o agente do usuário ou algum cabeçalho "aceitar" que faça cócegas no bug.

Eu não acho que você está fazendo algo de errado - parece que esse servidor foi apenas inativo? Seu script funcionou bem para mim ('texto' continha os mesmos dados exibidos no navegador).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top