我在localhost\administration
一個登錄頁面,我使用此代碼登錄:如何使用Python登錄到網頁?
import urllib
import http.cookiejar as ckj
lg = {'nick':'john','pass':'password'}
url = 'http://localhost/administration/'
cj = ckj.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
lgdata = urllib.parse.urlencode(lg).encode("utf-8")
opener.open(url,lgdata)
res = opener.open(url)
print(res.read())
的頁面是唯一的PHP代碼。 現在我要登錄到這個頁面localhost:8080/pentaho/Login
,但該頁面正在使用JavaScript進行登錄,我不知道如何&什麼數據我應該發送到頁面。
據我所知,我需要有url = localhost:8080/pentaho/Login
和lg = {'j_username':'username','j_password':'password'}
,但這並不是我需要發送給操作的所有信息,或者這是不正確的。
這裏是登錄表單的HTML代碼:
<form name="login" id="login" action="j_spring_security_check" method="POST"
onkeyup="if(window.event && window.event.keyCode && window.event.keyCode==13)
{var buttonToClick = document.getElementById('loginbtn');
if(buttonToClick){ buttonToClick.click();}}">
<input id="j_username" name="j_username" type="text" placeholder="" autocomplete="off">
<input id="j_password" name="j_password" type="password" placeholder="" autocomplete="off">
<button type="submit" id="loginbtn" class="btn">Login</button>
<input type="hidden" name="locale" value="en_US">
</form>
這裏是頁
<script type="text/javascript">
function toggleEvalPanel() {
var evaluationPanel = $("#evaluationPanel");
evaluationPanel.toggleClass("afterSlide");
$("#eval-arrow").toggleClass("closed");
}
function bounceToReturnLocation() {
// pass
var locale = document.login.locale.value;
var returnLocation = 'http\x3A\x2F\x2Flocalhost\x3A8080\x2Fpentaho\x2Findex.jsp';
if (returnLocation != '' && returnLocation != null) {
window.location.href = returnLocation;
} else {
window.location.href = window.location.href.replace("Login", "Home") + "?locale=" + locale;
}
}
function doLogin() {
// if we have a valid session and we attempt to login on top of it, the server
// will actually log us out and will not log in with the supplied credentials, you must
// login again. So instead, if they're already logged in, we bounce out of here to
// prevent confusion.
if (false) {
bounceToReturnLocation();
return false;
}
jQuery.ajax({
type: "POST",
url: "j_spring_security_check",
dataType: "text",
data: $("#login").serialize(),
error:function (xhr, ajaxOptions, thrownError){
if (xhr.status == 404) {
// if we get a 404 it means login was successful but intended resource does not exist
// just let it go - let the user get the 404
bounceToReturnLocation();
return;
}
//Fix for BISERVER-7525
//parsereerror caused by attempting to serve a complex document like a prd report in any presentation format like a .ppt
//does not necesarly mean that there was a failure in the login process, status is 200 so just let it serve the archive to the web browser.
if (xhr.status == 200 && thrownError == 'parsererror') {
document.getElementById("j_password").value = "";
bounceToReturnLocation();
return;
}
// fail
$("#loginError").show();
$("#loginError button").focus();
},
success:function(data, textStatus, jqXHR){
if (data.indexOf("j_spring_security_check") != -1) {
// fail
$("#loginError").show();
$("#loginError button").focus();
return false;
} else {
document.getElementById("j_password").value = "";
bounceToReturnLocation();
}
}
});
return false;
}
function loginAs (username, password) {
$("#j_username").attr("value", username);
$("#j_password").attr("value", password);
doLogin();
}
$(document).ready(function(){
$("#login").submit(doLogin);
if (false) {
bounceToReturnLocation();
}
$("#login-background").fadeIn(1000, function() {
$("#login-logo").addClass("afterSlide");
$("#animate-wrapper").addClass("afterSlide");
$("#j_username").focus();
$("#login-footer").addClass("afterSlide");
});
});
</script>
謝謝你的答案,我只是試過這個,但並不真正的工作。我回來的是,這意味着我試圖訪問服務器上的複雜文檔 –
Andrew