Besides the username
, password
and the cookies
, the site requeires two additional values for the login – VIEWSTATE
and EVENTVALIDATION
.
You can get them from the response of the first Get
request, like this –
Document doc = loginForm.parse();
Element e = doc.select("input[id=__VIEWSTATE]").first();
String viewState = e.attr("value");
e = doc.select("input[id=__EVENTVALIDATION]").first();
String eventValidation = e.attr("value");
And add it after the password
(the order doesn’t really matter) –
org.jsoup.nodes.Document document = (org.jsoup.nodes.Document) Jsoup.connect("https://www.capitaliq.com/CIQDotNet/Login.aspx/authentication.php").userAgent("Mozilla/5.0")
.data("myLogin$myUsername", "MyUsername")
.data("myLogin$myPassword, "MyPassword")
.data("myLogin$myLoginButton.x", "22")
.data("myLogin$myLoginButton.y", "8")
.data("__VIEWSTATE", viewState)
.data("__EVENTVALIDATION", eventValidation)
.cookies(loginForm.cookies())
.post();
I would also add the userAgent
field to both requests – some sites test it and send different pages to different clients, so if you would like to get the same response as you get with your browser, add to the requests .userAgent("Mozilla/5.0")
(or whatever browser you’re using).
Edit
The userName
‘s field name is myLogin$myUsername
, the password is myLogin$myPassword
and the Post
request also contains data about the login button. Ican’t test it, because I don’t have user at that site, but I believe it will work. Hope this solves your problem.
EDIT 2
To enable the remember me
field during login, add this line to the post
request:
.data("myLogin$myEnableAutoLogin", "on")