我正在嘗試使用cURL(在bash腳本中)在包含我每月數據使用情況的ISP網站上加載頁面。這個curl請求爲什麼不提交POST數據?
下面是從頁的培訓相關表格:
<form method="post" id="Login" name="Login" action="https://signon.bigpond.com/login" class="form">
<input type="hidden" name="goto" value="https://my.bigpond.com/mybigpond/default.do?ref=Net-Header-MyBigPond1"/>
<div class="loginModule roundify">
<div class="loginForm">
<div class="formRow error">
<label for="userName">
Username<span class="reqField">*</span>
</label>
<input type="text" tabindex="1" id="username" name="username" size="30" maxlength="200" onkeypress="EnterKeyPress(event)" value=""/>
</div>
<div class="formRow error">
<label for="password">
Password<span class="reqField">*</span>
</label>
<input type="password" tabindex="2" id="password" name="password" size="30" maxlength="50" onkeypress="EnterKeyPress(event)"/>
</div>
<div class="buttons">
<input class="submit roundify" type="submit" value="Log in" onclick="setCookieForUser();this.disabled=true;document.forms['Login'].submit();" />
</div>
</div>
</div>
</form>
注意,提交按鈕沒有名稱。
在訂立形式的文本調用的函數:
function EnterKeyPress(e) {
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if (code == 13 && document.getElementById("username").value.length > 0 && document.getElementById("password").value.length > 0) {
document.forms['Login'].submit();
e.returnValue = false;
}
}
curl命令行:
$ curl --user-agent "Mozilla/5.0" --verbose --location --cookie-jar "/tmp/bigpond.cookies" --cookie "/tmp/bigpond.cookies" -o "/tmp/bigpond.html" --data-urlencode "username=MY_USERNAME&password=MY_PASSWORD" https://signon.bigpond.com/login?goto=https://my.bigpond.com/mybigpond/default.do?ref=Net-Header-MyBigPond1
然而,保存的HTML文件(/tmp/bigpond.html)僅僅是登錄頁面仍然存在,並添加了文字說我忘了輸入我的用戶名和密碼。 爲什麼cURL不發送POST數據或我做錯了什麼?
更新:回答了我自己的問題。見下面的解決方案。
或者你的&符號可以改爲%26? – Sun