Dieser Artikel stellt vor, wie man Daten mit dem Linux curl-Befehl per HTTP POST sendet und wie man Ampersands (&) maskiert.
Für curl-Formulardaten-POST können zwei Optionen verwendet werden.
f und d. Der Unterschied ist, dass f nur einen Schlüssel senden kann, aber d kann mehrere Parameter senden.
curl https://example.com/ -X POST -f 'html=hogehogehoge' #=> Ok
curl https://example.com/ -X POST -f 'html=hogehogehoge&fuga=fugafuga' #=> Error
curl https://example.com/ -X POST -d 'html=hogehogehoge' #=> Ok
curl https://example.com/ -X POST -d 'html=hogehogehoge&fuga=fugafuga' #=> Ok
Wenn ”&” in den Daten enthalten ist, wird es als separater Schlüssel nach dem & erkannt, daher ist Escaping erforderlich.
curl https://example.com/ -X POST -d 'html=hogehogehoge&fugafugafuga'
Sie können folgendermaßen gleichzeitig maskieren und curl verwenden:
curl https://example.com/ -X POST --data-urlencode 'html=hogehogehoge&fugafugafuga'
Wenn Sie mehrere Parameter angeben möchten, geben Sie mehrere Optionen an.
curl https://example.com/ -X POST --data-urlencode 'html=hogehogehoge&fugafugafuga' --data-urlencode 'hoge=hoge'
Oder verwenden Sie dieses Skript. Bash urlencode und urldecode
urlencode 'hogehogehoge&fugafugafuga'
hogehogehoge%26fugafugafuga
curl https://example.com/ -X POST -d 'html=hogehogehoge%26fugafugafuga'