4 votes

Comment télécharger une URL depuis Internet avec netcat ?

Je peux utiliser netcat pour transférer des fichiers entre deux ordinateurs.

# Serveur
nc -l -p 8080 < fichier

# client
nc 192.168.1.101 8080 > fichier

Puis-je utiliser netcat pour télécharger une URL depuis Internet comme wget ?

8voto

Giuseppe R Points 1325

En supposant que vous parliez d'une URL HTTP régulière, c'est possible mais cela nécessite que vous tapiez manuellement la requête HTTP. Si l'URL nécessite un HTTP POST avec un formulaire url-encoded ou recherche des en-têtes spécifiques, cela peut être assez fastidieux.

Vous devrez fournir une requête HTTP valide à l'entrée standard de netcat. L'idée générale est la suivante :

Exécutez la commande nc example.com 80

netcat commencera à lire depuis stdin, et tout ce que vous tapez ou collez dans le terminal sera envoyé sur le réseau au serveur distant sur le port que vous avez sélectionné (80 est le port HTTP par défaut).

Maintenant, vous devez taper ou coller une requête HTTP, comme :

GET / HTTP/1.1
Host: example.com
User-Agent: netcat

Vous devrez également ajouter des sauts de ligne à la fin, appuyez donc plusieurs fois sur Entrée jusqu'à ce que vous receviez la réponse HTTP. Ensuite, vous devrez analyser manuellement la réponse.

netcat fonctionne au niveau TCP, donc tout protocole basé sur HTTP peut techniquement être utilisé avec netcat, mais pour les protocoles qui ne conviennent pas à une entrée humaine (comme ssh et https), il peut être difficile à utiliser si vous ne le scriptez pas à partir d'un programme. Et si vous ÉCRIVEZ un programme, pourquoi n'utilisez-vous pas simplement des sockets TCP normaux ?

Les limitations de netcat à cette fin sont les suivantes :

  • netcat ne comprend pas le HTTP, ou FTP, ou HTTPS, ou SSH, ou tout autre protocole de couche application. Peu importe le script, programme ou saisie manuelle que vous utilisez, cette entrée devra avoir une connaissance suffisante du protocole de communication de couche application afin de s'interfacer correctement avec le serveur.
  • Même des protocoles simples comme HTTP peuvent présenter des complications nécessitant une connaissance détaillée du protocole - codage par tranches, formulaires url-encoded, différents comportements selon les cookies fournis, l'agent utilisateur, etc., et HTTPS nécessitant une poignée de main SSL réussie. Je ne connais personne capable de saisir manuellement une poignée de main SSL uniquement avec leur cerveau :)
  • Étant donné que netcat est simpliste, il ne fournit aucun avantage par rapport à l'utilisation d'une socket TCP programmée si vous écrivez un programme. Si vous tapez simplement sur le terminal, il est préférable d'utiliser un programme prenant en charge des protocoles de couche application appropriés, tels que wget, curl, lftp, ssh, etc.

1voto

kev Points 11612
# créer un fichier de requête
$ cat req
GET / HTTP/1.1
Host: superuser.com
User-Agent: Mozilla/5.0

# envoyer la requête pour obtenir une réponse
$ nc superuser.com 80 <req >res

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X