Beste tweakerts
Voor mijn eigen SAAS webscrape ik m.b.v. Java bepaalde websites. Nu heeft 1 van deze websites een onderdeel voorzien van een Authorization bearer laag. Op dit moment laat ik de gebruikers de bearer token d.m.v. Chrome development tools opzoeken en pasten in mijn website. Niet echt gebruiksvriendelijk en nogal wat mensen hebben hier moeite mee.
Op dit moment gebruik ik OkHttp3 library in Java om de requests te maken. Heb al e.e.a. gevolgd via development tools van Chrome en kan het punt detecteren dat de bearer token beschikbaar is. Eerst zie ik een OPTIONS request:
gevolgd door een GET request:
Als ik dezelfde OPTIONS request naboots, krijg ik de volgende response headers:
Heb wat gevonden en het ziet er in principe goed uit, dus de Access-Control-Allow-Credentials true & Access-Control-Allow-Headers authorization headers zijn wat je zou verwachten, alleen zit ik met de GET die daarop volgt. Hoe krijg ik dat voor elkaar? Want de bearer token zit namelijk al in de request headers, hoe komt die daar? Klopt het dat er onder de motorkap een Javascript call plaats vindt? En zo ja, waarom wordt de traffic daarvan niet door Chrome gecaptured? Die bearer token lijkt namelijk vanuit het niets in de headers tevoorschijn te komen.
Any idea?
Voor mijn eigen SAAS webscrape ik m.b.v. Java bepaalde websites. Nu heeft 1 van deze websites een onderdeel voorzien van een Authorization bearer laag. Op dit moment laat ik de gebruikers de bearer token d.m.v. Chrome development tools opzoeken en pasten in mijn website. Niet echt gebruiksvriendelijk en nogal wat mensen hebben hier moeite mee.
Op dit moment gebruik ik OkHttp3 library in Java om de requests te maken. Heb al e.e.a. gevolgd via development tools van Chrome en kan het punt detecteren dat de bearer token beschikbaar is. Eerst zie ik een OPTIONS request:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| OPTIONS /.well-known/openid-configuration HTTP/1.1 Host: www.website.com Connection: keep-alive Access-Control-Request-Method: GET Origin: https://feature.website.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 Access-Control-Request-Headers: authorization Accept: */* Sec-Fetch-Site: same-site Sec-Fetch-Mode: cors Referer: https://feature.website.com/?sharedView=93c8be4b-03b6-4c4f-9de4-6a16fded085c Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9,fr;q=0.8,nl;q=0.7,de;q=0.6,af;q=0.5,hu;q=0.4 |
gevolgd door een GET request:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| GET /.well-known/openid-configuration HTTP/1.1 Host www.website.com Connection keep-alive Accept application/json, text/plain, */* Origin https://feature.website.com Authorization Bearer eyJhbGciOiJS User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 Sec-Fetch-Site same-site Sec-Fetch-Mode cors Referer https://feature.website.com/?sharedView=93c8be4b-03b6-4c4f-9de4-6a16fded085c Accept-Encoding gzip, deflate, br Accept-Language en-US,en;q=0.9,fr;q=0.8,nl;q=0.7,de;q=0.6,af;q=0.5,hu;q=0.4 |
Als ik dezelfde OPTIONS request naboots, krijg ik de volgende response headers:
code:
1
2
3
4
5
6
7
8
9
| Cache-Control no-cache Pragma no-cache Expires -1 Access-Control-Allow-Origin https://feature.website.com Access-Control-Allow-Credentials true Access-Control-Allow-Headers authorization Date Wed, 18 Dec 2019 14:39:10 GMT Content-Length 0 Set-Cookie BNI_ServerId=00000000000000000000000099960c0a0000 |
Heb wat gevonden en het ziet er in principe goed uit, dus de Access-Control-Allow-Credentials true & Access-Control-Allow-Headers authorization headers zijn wat je zou verwachten, alleen zit ik met de GET die daarop volgt. Hoe krijg ik dat voor elkaar? Want de bearer token zit namelijk al in de request headers, hoe komt die daar? Klopt het dat er onder de motorkap een Javascript call plaats vindt? En zo ja, waarom wordt de traffic daarvan niet door Chrome gecaptured? Die bearer token lijkt namelijk vanuit het niets in de headers tevoorschijn te komen.
Any idea?