Beste tweakerts,
Naar aanleiding van mijn vorige topic: [java] & [angularjs] add token header aan een form ben ik nu aan het uitvogelen hoe ik vanuit Java een website moet scrapen die vanuit AngularJS is opgebouwd. Het plan is om de achterliggende API rechtstreeks aan te roepen. Nu heb ik in de desbetreffende pagina (als het goed is) de javascript verwijzing gevonden die de inlog procedure afhandelt. Als deze doorlopen is kom je in een soort overzichtsscherm waarna mijn reguliere web-scraping links weer werken.
Ik heb echter geen idee hoe ik deze API aanroep vanuit Java, heeft iemand wat hints? Er zijn niet veel Java Angular scraping sites te vinden. Als uitgangspositie heb ik de login/pass informatie als ook een token die mee moet worden gegeven.
Hier is de angular Javascript code:
Zou ik dit kunnen met de standaard HtmlUnit Java libraries die ik nu ook gebruik?
Naar aanleiding van mijn vorige topic: [java] & [angularjs] add token header aan een form ben ik nu aan het uitvogelen hoe ik vanuit Java een website moet scrapen die vanuit AngularJS is opgebouwd. Het plan is om de achterliggende API rechtstreeks aan te roepen. Nu heb ik in de desbetreffende pagina (als het goed is) de javascript verwijzing gevonden die de inlog procedure afhandelt. Als deze doorlopen is kom je in een soort overzichtsscherm waarna mijn reguliere web-scraping links weer werken.
Ik heb echter geen idee hoe ik deze API aanroep vanuit Java, heeft iemand wat hints? Er zijn niet veel Java Angular scraping sites te vinden. Als uitgangspositie heb ik de login/pass informatie als ook een token die mee moet worden gegeven.
Hier is de angular Javascript code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| (function() { "use strict"; angular.module("signInApp", ["loadingDataButton"]).config(["$httpProvider", function(n) { n.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest" }]) })(), function() { "use strict"; function n(n) { function t(t) { return n.defaults.headers.common.__RequestVerificationToken = angular.element('input[name="__RequestVerificationToken"]').attr("value"), n.post("/sign-in", t) } return { signIn: t } } angular.module("signInApp").factory("signInService", n); n.$inject = ["$http"] }(), function() { function n(n) { function r(n) { return decodeURIComponent((new RegExp("[?|&]" + n + "=([^&;]+?)(&|#|;|$)").exec(location.search) || [null, ""])[1].replace(/\+/g, "%20")) || null } function u(n) { t.submitDisabled = n.$invalid } function f() { t.submitDisabled = !0; t.isLoading = !0; t.incorrectError = ""; n.signIn({ model: { password: t.password, user: t.user, rememberMe: !1 }, returnUrl: i }).then(function(n) { n.data.returnUrl ? window.location.href = n.data.returnUrl : (t.responseModel = n.data, t.submitDisabled = n.data.lockedOut, t.isLoading = !1) }, function() { t.isLoading = !1; t.submitDisabled = !1; t.responseModel.errorMessage = "An unexpected error has occurred while processing your request. Please try again." }) } var t = this, i = r("ReturnUrl"); t.$onInit = function() { t.incorrectError = ""; t.isLoading = !1; t.user = ""; t.password = ""; t.submitDisabled = !0; t.loading = !1; t.onType = u; t.signIn = f } } angular.module("signInApp").component("signIn", { templateUrl: "/Areas/Main/Apps/SignIn/sign-in.component.html", controller: n }); n.$inject = ["signInService"] }()5 |
Zou ik dit kunnen met de standaard HtmlUnit Java libraries die ik nu ook gebruik?