Ich habe eine Login-Seite bei localhost\administration
und ich verwende diesen Code anmelden:Wie logge ich mich mit Python in eine Webseite ein?
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())
Die Seite ist nur PHP-Code. Jetzt möchte ich auf dieser Seite localhost:8080/pentaho/Login
einloggen, aber die Seite verwendet Javascript für Login und ich verstehe nicht, wie & welche Daten ich an die Seite senden sollte.
Ich verstehe, dass ich url = localhost:8080/pentaho/Login
und lg = {'j_username':'username','j_password':'password'}
haben muss, aber das ist nicht alle Informationen, die ich an die Aktion senden muss, oder das ist falsch. Hier
ist der HTML-Code, der Login-Formular:
<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>
Und hier ist das Javascript auf der Seite
<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>
Danke für Sie beantworten, ich habe gerade versucht, aber es funktioniert nicht wirklich. Alles, was ich zurückbekomme, ist, was bedeutet, dass ich versuche, auf ein komplexes Dokument auf dem Server zuzugreifen –
Andrew