我正在编写一个应该模拟的 bash 脚本:
- 在搜索栏中输入内容。
- 提交其内容。
- 获取结果页面。
给定这个基本示例:
<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
和搜索之前一样,这意味着什么都没有改变;它返回主页而不是结果页面。
我将如何提交此表单?我是不是忘记了什么?
注意:目标 URL 本身包含多种形式(包括移动搜索栏、登录表单和其他形式),其中一些即使不能说完全相同也非常相似,因此,告诉使用此特定表单的脚本。
最佳答案
我不小心用错了链接。为了通过 GET
解析结果页面,对我有用的正确方法方法是:
curl -L '<URL>/search.asp?_search=value'
我需要 -L
标记以遵循重定向,正如@TravisClarke 所幸声明的那样。 <URL>
在这种情况下代表基本 URL。 ?
对于有经验的用户来说非常简单;它将一组参数传递给目标 URL,而目标 URL 又应该输出所需的结果页面。
不需要 -d
或 --data
标志作为参数直接通过链接传递,而不是 POST
需要 -d
的方法有时 --cookie
关于bash - cURL - 提交表单未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46479478/