250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- hadoop
- API
- session 유지
- XAI
- spark udf
- integrated gradient
- GenericGBQException
- Counterfactual Explanations
- requests
- 유튜브 API
- BigQuery
- gather_nd
- 공분산
- top_k
- GCP
- Airflow
- 상관관계
- login crawling
- subdag
- correlation
- chatGPT
- tensorflow text
- flask
- airflow subdag
- TensorFlow
- youtube data
- grad-cam
- UDF
- Retry
- API Gateway
Archives
- Today
- Total
데이터과학 삼학년
request.values 로 body를 분석( base64 encode --> decode) 본문
반응형
WEB 개발에서 로그인 혹은 사용자가 어떤 action을 취하였을 때 누가 뭘 했는지 알고 싶다.
그럴때 사용하는 것이
flask.request.values 이다!
falsk.request.values를 얻게 되면 각 형태에 따라 dictionary 형태의 파일을 불러올 수 있다.
현재 내가 작업하고 싶은 것이
'SAMLResponse' 의 key값을 받아오고 싶다면
from flask import request
body = str(request.values['SAMLResponse'])
로 불러온다.
이결과는 아마 아래 사진처럼 알아볼수가 없다.
--> 이것은 base64 로 encoding 된 형태이기 때문이다.
그렇다면 이것을 사람이 알아볼수 있게 표현하려면
base64로 decode 하면 된다
from flask import request
import base64
body = str(request.values['SAMLResponse'])
body = base64.b64decode(body)
print(body)
이렇게 decode를 해주면 아래사진 처럼 사람이 볼수 있는 형태의 xml 파일이 된다.
이 xml 파일을 가지고
접속한 user의 email이 궁금하다.
xml parser 를 활용해서 찾아내면 된다.
import xml.etree.ElementTree as ET
tree = ET.fromstring(body)
tag_tuple = [(i.tag, i.text) for i in tree.iter()]
print(tag_tuple)
이렇게 tag_tuple을 통해서 내가 찾기 원하는 tag를 입력해서 값을 뽑아내면된다.
email 주소를 알아내기 위해 아래처럼 코드를 입력하여 접속한 유저의 email 정보를 얻을 수 있다.
import xml.etree.ElementTree as ET
tree = ET.fromstring(body)
email = [i.text for i in tree.iter() if i.tag =='{urn:oasis:names:tc:SAML:2.0:assertion}NameID'][0].strip()
print(email)
# xx@aaa.com
접속한 user의 행동을 파악하기 위한 좋은 방법이고, 이를 체계적으로 시간별 db에 저장해 놓으면 새로운 인사이트를 얻을 수 있을 것이다.
728x90
반응형
LIST
'Web' 카테고리의 다른 글
AJAX란? (0) | 2020.04.19 |
---|---|
NGINX 504 Gateway Time-out 에러와 해결방법 (0) | 2020.03.11 |
로그인 기능 추가 --> 다 만든 web에 로그인만 입히기 (0) | 2020.03.06 |
flask request (0) | 2020.03.05 |
flask http 요청 핸들러 (0) | 2020.03.05 |
Comments