如何从命令行填写此Web表单?

时间:2019-11-27 10:11:24

标签: forms curl

我想在网页上填写表格以通过命令行而不是使用浏览器发送一些文件。我发现cURL可以帮到我,但我不确定如何。除此之外,我发现了每个请求的“ authenticity_token”更改。我将如何成功验证和发布我的文件?

我精简了html代码以仅显示输入,请参见下文。感谢您的浏览。

<form action="https://XXXXXXXX.com/aspera/faspex/test/dropbox_submissions" class="well form-horizontal form-horizontal-small-labels" id="send" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="cU/zhZKnbjk90v57Phmdgewq97lKclj63MtzfCHhEqc=" /></div>

<input id="dropbox_id" name="dropbox[id]" type="hidden" value="738" />

<input id="passcode" name="passcode" type="hidden" value="1738d1bc02755019655dd424Xf2717f1c8a7c579" />

<input id="delivery_title" maxlength="100" name="delivery[title]" size="100" type="text" value="" />

<input id="fileupload" multiple="multiple" name="file" type="file" />

<input id="delivery_source_paths_list" name="delivery[source_paths_list]" type="hidden" />

<input class="btn large primary" data-prompt_password="true" disabled="disabled" id="send_button" name="commit" type="submit" value="Send Package" />

<label>Passphrase:</label>
<input autocomplete="off" id="password" type="password" />

<label>Confirmation:</label>
<input autocomplete="off" id="password_confirmation" type="password" />

</form>

3 个答案:

答案 0 :(得分:0)

这看起来像CSRF的防御。

您需要提出两个请求,然后use a cookie jar to store cookies between them

您需要通过HTML解析器(例如pup)运行的第一个请求,以提取authenticity_token。

然后,您需要提出第二个请求,并使用第一个请求中的数据和cookie jar。

答案 1 :(得分:0)

这似乎是IBM Aspera Faspex提交页面。

实际上,实际文件传输将使用IBM Aspera FASP协议(在客户端免费)

您可以使用以下免费客户端,该客户端将允许您通过身份验证访问或公共访问(URL中带有密码)发送到faspex:

https://www.rubydoc.info/gems/asperalm

示例:

mlia faspex package send --link='https://faspex.org.com/aspera/faspex/external/dropbox_submissions/new?passcode=xxx123xxx.........' --delivery-info=@json:'{"title":"my title"}' /path/to/files

答案 2 :(得分:-1)

您可以在任何浏览器(开发人员模式)中打开调试器,以演示html表单并捕获网络请求并将其复制为curl。

目标主机必须存在,因为您需要POST操作的某些响应。

这是我从Chrome浏览器中获得的内容。

curl 'https://XXXXXXXX.com/aspera/faspex/test/dropbox_submissions'  -X POST \
-H 'Connection: keep-alive'  \
-H 'Cache-Control: max-age=0' -H 'Upgrade-Insecure-Requests: 1' -H 'Origin: null'  \
-H 'Content-Type: application/x-www-form-urlencoded'  \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'  \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'  \
-H 'Accept-Encoding: gzip, deflate'  \
-H 'Accept-Language: en-US,en;q=0.9,ko;q=0.8,la;q=0.7'  \
--data 'authenticity_token=cU%2FzhZKnbjk90v57Phmdgewq97lKclj63MtzfCHhEqc%3D&dropbox%5Bid%5D=738&passcode=1738d1bc02755019655dd424Xf2717f1c8a7c579&delivery%5Btitle%5D=&file=&delivery%5Bsource_paths_list%5D=' --compressed --insecure