我可以使用 cURL 填寫並提交此表格嗎?

我可以使用 cURL 填寫並提交此表格嗎?

我正在嘗試將資料提交到工作表單。我懷疑我的天真的方法不起作用,因為頁面中的“技術”幹擾了它。基本上,該網頁(抱歉我無法連結到它,它不是公開的)

<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 包含所有數據,包括空白的第三個欄位)。

好吧,它不起作用(我返回相同的登入頁面,並且我可以檢查在我嘗試時沒有登入)。我對這些事情了解不多,但我懷疑它可能是頁面中沒有的其他程式碼:有

<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 Developer Tools)捕獲了請求。它看起來像這樣:

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 信息,因為我想看看其餘的(不會每次都改變)是否足夠。它起作用了。非常感謝grayity的幫助支持。

答案2

您可以使用 Firefox Web-Tools 擷取每個 HTTP 要求(GET 或 POST 表單):

Web 工具 -> 網路 -> 傳送表單 -> 表單 URL 的上下文選單(右鍵點選表單腳本) -> 複製 => 複製為 cURL 位址

更多資訊:https://everything.curl.dev/usingcurl/copyas

答案3

我認為發文時你應該使用-X 後

您要以以下形式傳送的資料: --資料原始 'formField1=值1&formField2=值2'

curl 'http://localhost:8000/' -X POST --data-raw 'fname=John&lname=Smith'

相關內容