Histoire de fond:
Vous aimez votre nouveau poste de programmeur dans une méga-multinationale. Cependant, vous n'êtes pas autorisé à naviguer sur le Web car votre ordinateur ne dispose que d'une interface de ligne de commande. Ils effectuent également des balayages sur les disques durs de tous les employés. Vous ne pouvez donc pas simplement télécharger un navigateur Web de grande taille. Vous décidez de créer un simple navigateur textuel aussi petit que possible afin de pouvoir le mémoriser et le saisir dans un fichier temporaire tous les jours.
Défi:
Votre tâche consiste à créer un navigateur Web avec golf dans une interface de ligne de commande. Cela devrait:
- Prendre une seule URL dans via args ou stdin
- Fractionner les composants
directory
ethost
de l'URL - Envoyer une simple requête HTTP à la
host
pour demander laditedirectory
- Imprimer le contenu de toutes les étiquettes de
<p>
paragraphe</p>
- Et soit sortir ou demander une autre page
Plus d'informations:
Une simple requête HTTP ressemble à ceci:
GET {{path}} HTTP/1.1
Host: {{host}}
Connection: close
\n\n
Terminer les nouvelles lignes soulignées.
Une réponse typique ressemble à:
HTTP/1.1 200 OK\n
<some headers separated by newlines>
\n\n
<html>
....rest of page
Règles:
- Il ne doit fonctionner que sur le port 80 (pas de SSL nécessaire)
- Vous ne pouvez pas utiliser netcat
- Quel que soit le langage de programmation utilisé, seules les API TCP de bas niveau sont autorisées (sauf netcat).
- Vous ne pouvez pas utiliser l'interface graphique, rappelez-vous, c'est une CLI
- Vous ne pouvez pas utiliser les analyseurs HTML, sauf ceux qui sont intégrés (BeautifulSoup n'est pas intégré)
- Prime!! Si votre programme effectue une boucle et demande une autre URL au lieu de quitter, -40 caractères (tant que vous n'utilisez pas de récursivité)
- Aucun programme tiers. Rappelez-vous, vous ne pouvez rien installer.
- code-golf , donc le nombre d'octets le plus court gagne
import webbrowser;webbrowser.open(url)