Hallo,
ich habe eine Frage zu JSOUP und Sessions bzw. Aufruf von HTML Seiten, die geschützt sind.
Ich möchte das HTML von einer Seite auslesen, was auch prinzipiell funktioniert.
Nun ist es aber so, dass ich eine Seite auslesen möchte, die geschützt ist und zuvor ein Login notwendig ist.
Ich verwende hierzu Apache Shiro.
In Shiro generiere ich mir ein "Subject", welches ich auch durch den Ussername erstellen kann:
In der Config von Apache Shiro verwende ich das hier:
Ich kenne mich mit Sessions nicht so wirklich aus, aber sollte ich Zugriff auf die Seite haben, wenn ich die SessionId habe und dieser der URL anhänge?
Also sowas wie:
Auch das hier habe ich schon probiert: (HTML Unit verwende ich hier)
Wenn ich das probiere, wird der Request auf die Loginseite weitergeleitet, und mein HTML Code ist der Code er Loginseite.
Hat jemand eine Idee?
Danke
ich habe eine Frage zu JSOUP und Sessions bzw. Aufruf von HTML Seiten, die geschützt sind.
Ich möchte das HTML von einer Seite auslesen, was auch prinzipiell funktioniert.
Nun ist es aber so, dass ich eine Seite auslesen möchte, die geschützt ist und zuvor ein Login notwendig ist.
Ich verwende hierzu Apache Shiro.
In Shiro generiere ich mir ein "Subject", welches ich auch durch den Ussername erstellen kann:
Java:
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-web.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Object userIdentity = "myemailAddress";
String realmName = "jdbcRealm";
PrincipalCollection principals = new SimplePrincipalCollection(userIdentity, realmName);
Subject subject = new Subject.Builder().authenticated(true).principals(principals).buildSubject();
In der Config von Apache Shiro verwende ich das hier:
Java:
sessionIdCookie=org.apache.shiro.web.servlet.SimpleCookie
sessionIdCookie.httpOnly = true
sessionIdCookie.name = sid
sessionIdCookie.domain = localhost
Ich kenne mich mit Sessions nicht so wirklich aus, aber sollte ich Zugriff auf die Seite haben, wenn ich die SessionId habe und dieser der URL anhänge?
Also sowas wie:
Java:
http://localhost:8080/mypage.jsf;JSESSION=12132445849445646
oder
http://localhost:8080/mypage.jsf;sid=12132445849445646
Auch das hier habe ich schon probiert: (HTML Unit verwende ich hier)
Java:
WebClient webClient = new WebClient(BrowserVersion.BEST_SUPPORTED);
webClient.getOptions().setJavaScriptEnabled(true); // enable javascript
webClient.getOptions().setThrowExceptionOnScriptError(false); // even if there is error in js continue
webClient.waitForBackgroundJavaScript(10000); // important! wait until javascript finishes rendering
HtmlPage page = webClient.getPage(urlStr);
Cookie cookie = new Cookie("localhost", "sid", sessionId.toString());
webClient.getCookieManager().addCookie(cookie);
String htmlCode = page.getWebResponse().getContentAsString();
doc = Jsoup.parse(htmlCode);
Wenn ich das probiere, wird der Request auf die Loginseite weitergeleitet, und mein HTML Code ist der Code er Loginseite.
Hat jemand eine Idee?
Danke