1. ホーム
  2. bash

[解決済み] curlを使ったバイナリデータの投稿

2022-03-07 19:11:58

質問

基本的に、私はDot Net Nukeと対話するための一連のスクリプトを書こうとしているのです。私はトラフィックを分析し、現在ログインしていくつかの基本的な作業を行うことができます。しかし、私はcurlでバイナリファイルのアップロードを扱ったことがありません。誰かが私を助けるためにこれを見てくれるでしょうか?ここにリクエストの解剖学があります。

http://pastebin.com/qU8ZEMaQ

今のところcurlはこんな感じです。

http://pastebin.com/LG2ubFZG

編集:怠け者のために-。

の長さが達成され、LENGTH に格納されます。
STUFFは、URLそのものを除いた、パラメータ付きのリクエストURLをコピー&ペーストしただけのものです。

curl -L --cookie ~/.cms --data-binary "@background.jpg" \
--header "Content-Length: $LENGTH" \
--header "Content-Disposition: form-data" \
--header "name=\"RadFileExplorer1_upload1file0\"" \
--header "Content-Type: image/jpg" \
--header "Filename=\"background.jpg\"" \
--data $STUFF \
--referer "Kept-Secret" \
"Kept-Secret"

解決方法は?

は必要ありません。 --header "コンテンツ長: $LENGTH" .

curl --request POST --data-binary "@template_entry.xml" $URL

GETリクエストはコンテンツボディをサポートしないことに注意してください。 広く .

また、POSTリクエストには2つの異なるコーディングスキーマがあることを覚えておいてください。これは最初の形式です。

  $ nc -l -p 6666 &
  $ curl --request POST --data-binary "@README" http://localhost:6666

ポスト / http/1.1
ユーザーエージェント: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
ホスト: localhost:6666
受け入れる。*/*
コンテンツの長さ: 9309
Content-Type: application/x-www-form-urlencoded
期待値:100-continue

.. -*- mode: rst; coding: cp1251; fill-column: 80 -*-
... rst2html.py README README.html
... コンテンツ::

おそらくこれを要求しているのでしょう。

-F/--form name=content
           (HTTP) これは、curl に入力されたフォームをエミュレートさせます。
              ユーザーが送信ボタンを押したとき。これは
              を使用してデータをPOSTします。
              RFC2388に準拠したmultipart/form-dataです。これは
              バイナリファイルなどのアップロードが可能になります。バイナリファイルなどをアップロードできるようになります。
              content' の部分をファイルにするには、ファイル名の前に
              を@記号で囲んでください。コンテンツ部分のみを取得する場合は
              という記号をファイル名の前につけてください。この
              と<の違いは、@をつけると
              ファイルをアップロードすると、そのファイルが投稿に添付されます。
              一方、<はテキストフィールドを作成し、単に
              の内容をファイルから取得します。