cURL - 提交表单不按预期工作

时间:2017-09-28 22:59:04

标签: bash forms shell http curl

我正在编写一个应该模拟的bash脚本:

  1. 键入搜索栏。
  2. 提交内容。
  3. 获取结果页面。
  4. 鉴于这个基本的例子:

    <input name="search"  type="TEXT">
    <input name="submit" value="SUBMIT" type="SUBMIT" align="center">
    

    我会使用curl -s -d "search=value%&submit=SUBMIT" <URL> > export.html提交此表单并将结果写入export.html

    给出下一个表格:

    <form action="/search.asp" method="GET" name="mmssearch">
        <div class="search-group">
            <input class="search-input" type="text" value="" placeholder="Enter search value here..." name="_search" autocomplete="off">
            <input id="form-submit" class="search-submit" type="submit" value="">
        </div>
    </form>
    

    我会使用curl -s -d "_search=value" <URL> > export.html,但表单提交会在搜索之前将html输出到export.html,这意味着没有任何更改;它返回主页而不是结果页面。

    我如何提交此表单?我忘了什么吗?

    NB :目标网址本身包含多种形式(在移动搜索栏,登录表单和其他内容中),其中一些甚至不完全相同,因此,它会合理地说明使用此特定表单的脚本。

1 个答案:

答案 0 :(得分:0)

我不小心用错了链接。对我来说,通过GET方法解析结果页面的正确方法是:

curl -L '<URL>/search.asp?_search=value'

我需要-L标志来跟踪重定向,正如@TravisClarke所表示的那样。在这种情况下,<URL>代表基本URL。 ?对于有经验的用户来说非常简单;它将一组参数传递给目标URL,而目标URL又应输出所需的结果页面。

由于参数直接通过链接传递,因此不需要-d--data标志,而POST方法应该需要-d --cookie也是如此。