Histórico:
Você gosta do seu novo trabalho de programação em uma megaempresa. No entanto, você não tem permissão para navegar na Web, pois seu computador possui apenas uma CLI. Eles também executam varreduras nos discos rígidos de todos os funcionários, para que você não possa simplesmente baixar um grande navegador da CLI. Você decide criar um navegador de texto simples, o mais pequeno possível, para memorizá-lo e digitá-lo em um arquivo temporário todos os dias.
Desafio:
Sua tarefa é criar um navegador da web dentro de uma interface da linha de comandos. Deveria:
- Adquira uma única URL via args ou stdin
- Divida os componentes
directory
ehost
da URL - Envie uma solicitação HTTP simples para o
host
para solicitar o referidodirectory
- Imprimir o conteúdo de qualquer tag de
<p>
parágrafo</p>
- E saia ou peça outra página
Mais informações:
Uma solicitação HTTP simples se parece com isso:
GET {{path}} HTTP/1.1
Host: {{host}}
Connection: close
\n\n
Enfatizando novas linhas enfatizadas.
Uma resposta típica é semelhante a:
HTTP/1.1 200 OK\n
<some headers separated by newlines>
\n\n
<html>
....rest of page
Regras:
- Ele só precisa funcionar na porta 80 (não é necessário SSL)
- Você não pode usar o netcat
- Qualquer que seja a linguagem de programação usada, apenas APIs TCP de baixo nível são permitidas (exceto netcat)
- Você não pode usar a GUI, lembre-se, é uma CLI
- Você não pode usar analisadores de HTML, exceto os incorporados (BeautifulSoup não é um incorporado)
- Bônus!! Se o seu programa retornar e solicitar outro URL em vez de sair, -40 caracteres (desde que você não use recursão)
- Não há programas de terceiros. Lembre-se, você não pode instalar nada.
- código-golfe , para que a menor contagem de bytes ganhe
import webbrowser;webbrowser.open(url)