J'ai besoin d'extraire les téléchargements de http-trafic. Comment pourrait faire ça? Tout d'abord, la méthode de requête sera POST. Deuxièmement, il y aura un champ d'en-tête Content-Type. Je ne veux pas extraire les données de formulaire, mais les télécharger comme des pièces jointes.
Le type de contenu est par spécificationmultipart/form-data
.
Il s'agit d'un type de contenu spécial qui peut être visualisé sous la forme de plusieurs sous-requêtes dans une grande requête. Chacune de ces sous-demandes (un élément de données de formulaire) a son propre ensemble d'en-têtes. Le type de contenu des données réelles est là.
Voici un exemple à quoi cela ressemble avec 1 champ normal et 1 champ de fichier (en termes HTML, avec <input name="textfield"><input type="file" name="filefield">
):
Content-Type: multipart/form-data;boundary=SOME_BOUNDARY
--SOME_BOUNDARY
content-disposition: form-data;name="textfield"
content-type: text/plain;charset=UTF-8
value of textfield here
--SOME_BOUNDARY
content-disposition: form-data;name="filefield";filename="some.ext"
content-type: application/octet-stream
binary file content here
--SOME_BOUNDARY--
En ce qui concerne l'analyse et l'extraction de ces données, pratiquement tous les langages de programmation possèdent des API intégrées/tierces. Comme vous ne dites rien de celui que vous utilisez, il est impossible de donner une réponse ciblée. Dans le cas, par exemple, de Java, il s'agirait de la bibliothèque tierce Apache Commons FileUpload ou, lorsque vous utilisez Servlet 3.0, de la méthode request.getPart()
fournie par l'API.
Si (et je ne dis absolument pas que c'est la bonne façon de faire), vous voulez simplement sauvegarder les données d'un tableau d'octets, vous devriez regarder comment lire le POST - corps à: Reading POST corps avec bottle.py Lire les données puis créer un nouveau fichier devrait faire l'affaire.