我正在尝试向工作中的表单提交数据。我怀疑我的幼稚方法行不通,因为页面中的“技术”会干扰它。基本上,网页(抱歉,我无法在此处链接到它,它不是公开的)有
<form action="login.php" method="get" name="LogIn" class="form-signin">
然后输入几个像
<input type="text" class="form-control" id="docIdent" name="docIdent" placeholder="@" required>
因此我尝试以下 cURL 命令:
curl -d "docIdent=WHATEVER" -d "type=WHATEVER" -d "comment=" URL
似乎需要的三部分数据是通过以下方式获取的:1. 下载 .html。2. 将表单方法从“post”更改为“get”,然后在浏览器中打开。3. 填写表单并提交(当然,出现了“页面未找到”错误,但新的 URL 包含所有数据,包括空的第 3 个字段)。
好吧,它不起作用(我回到了相同的登录页面,我可以检查在我尝试时没有登录)。我不太了解这些事情,但我怀疑它可能是页面中没有的其他代码:
<script src="dist/js/bootstrap.min.js"></script>
<script src="dist/js/jquery-3.4.1.min.js"></script>
<script src='js/fns.js'></script>
当然还有打开表单时的“login.php”。从许多其他帖子来看,我的语法似乎是正确的;是否有希望实现自动登录(我将放入 cron 中的 bash 脚本类型,就像我正在尝试的单行脚本一样)?谢谢。
答案1
好吧,最后我找到了以下解决方案:使用我的浏览器(Firefox,Web 开发人员工具)捕获了请求。它看起来像这样:
curl 'URL' -H 'Host: SOMETHING' -H 'User-Agent: SOMETHING' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en,en-US;q=0.5' --compressed -H 'Referer: SOMETHING' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' --data 'WHATEVER'
... 加上 cookie 信息,我删除了这些信息,因为我想看看其余信息(每次都不会改变)是否足够。结果成功了。非常感谢 grawity 提供的帮助支持。
答案2
您可以使用 Firefox Web-Tools 捕获每个 HTTP 请求(GET 或 POST 表单):
Web 工具 -> 网络 -> 发送您的表单 -> 表单 URL 的上下文菜单(右键单击表单脚本)-> 复制 => 复制为 cURL 地址
答案3
我认为发帖时你应该使用-X 开机自检
您要以以下形式发送的数据: --原始数据 '表单字段 1=值 1&表单字段 2=值 2'
curl 'http://localhost:8000/' -X POST --data-raw 'fname=John&lname=Smith'