jm_p_op

인터파크 로그인 코드 뜯어보다 알게된 것과 경험한것들 본문

Front/js

인터파크 로그인 코드 뜯어보다 알게된 것과 경험한것들

jm_p_op 2024. 8. 5. 23:57
  1. XMLHttpRequest
    1. Host와 xhr은 Header에 {"x-requested-with":"XMLHttpRequest"}으로 보내진다
    2. XMLHttpRequest는 과거 많이  썻지만 지금은 fetch를 사용한다.
  2. cookie 
    1. json방식이 아닌 cookie로 토큰 데이터 보낸다.
    2. 쓸모없는 데이터도 많이 보낸다....데이터 아까워라....
  3. JSESSIONID -프론트에서의 jwt같은 놈이다. 연결된 id값을 주는것이다. 없으면 재발급해서 준다.
  4. pcid
    1. 프론트에서 만든다. js라서 date.time()에서 나온 7자리수와 랜덤수 3개를 합쳐서 만든다.
    2. golang으로는 time.unix사용하면 10자리수가 나온다.
    3. nano초 차이라서 동시성 생각해도 1/1000의 확률에서 n번 실행시 겹칠확률이라 랜덤값 잡은듯...
  5. 동적 웹페이지
    1. jwt를 받아서 유저 정보를 받는 api가 있었지만, 동적 웹페이지에서 유저정보를 받아온다.
      1. 어째서 내가 찾았는데 사라진거죠..?
    2. 네이버도 똑같다.
    3. 데이터 크롤링할때 그부분만 빼서 쓰기가 까다롭다.
    4. <script>
                  window["EAGER-DATA"] = window["EAGER-DATA"] || {};
                  window["EAGER-DATA"]["PC-FEED-WRAPPER"] = {
                      "@type": "BLOCK",
                      "blocks": [{
                          "@type": "BLOCK",
                          "blocks": [{
                              "@type": "PC-FEED-BLOCK",
                              "blocks": [{
                                  "@type": "PC-FEED-BLOCK",
                                  "materials": [{
                                      "@type": "MATERIAL-PC-FEED",
                                      "title": "진짜 이럴 거야? 갤럭시 폴드6 슬림 버전 나온다.",
                                      "url": "https://blog.naver.com/PostView.naver?blogId=whitepolarbear&logNo=223531794969&proxyReferer=&noTrackingCode=true",
                                      "image": {
                                          "url": "https://s.pstatic.net/dthumb.phinf/?src=%22https%3A%2F%2Fs.pstatic.net%2Fstatic%2Fwww%2Fmobile%2Fedit%2F20240731_1095%2Fupload_1722424111646EJFiB.jpg%22&type=f504_292&service=navermain"
                                      },
                                      ....
  6. 5분 제한 시점
    1. https://accounts.interpark.com/login/form 에서 데이터를 처음 받을때부터 시작한다
      1. 이는 pc의 정보도 저장하는 방식으로 추정된다.
      2. window으로 접속후, 시크릿으로 보내면 시간제한오류가 뜬다.

결론

  • 코드 뜯어먹는 잡기술만 늘어나고 있다...
  • fetch랑 XMLHttpRequest에서 설정을 다하고 .do()로 보내준다.
  • 6에서 5분제한 시점은 프로그램을 다시 실행해서 보내줄시 다른 유저로 인식하여 시간제한오류가 나온다.
  • xhr로 제작해서 그런지 cookie를 사용하고, 무식하게 쓸모없는 cookie를 보낸다. 무슨 50개쯤씩 보내냐;;;;(범용성 때문이 아니면 귀찮아서 그런듯)
  • golang은 구글링하기가 조금 어렵다. 코드란 것이 data구조, 논리, 함수(검색능력)만 이해하면 다 코딩이 된다
  • 이짓을 하면 데이터 크롤링하더라도 서버와 나의 컴퓨터의 부하를 줄일 수 있다.