TIL | WIL

8/22 (화) LeetCode API 조사중 TIL, TIT

깊은바다거북 2023. 8. 22. 23:59

공부한 것

구상 중

  • 문제풀이 코드 제출 후 실행 결과를 여러 개 모아서 소요 메모리와 시간 추이를 시각화하기:
    1. Node.js에서 실행한다 → 기각

      : 그래프로 시각화하면 결과를 볼 수 있는 방법이 png 등의 이미지 파일로 저장하고 따로 열어보는 수밖에 없어서 기각했다. 내가 원하는 건 실행 시점에 바로바로 추이를 살펴보는 것이지 따로 파일을 열어야 하고 심지어 저장까지 되는 기능이 아니다.

    1. 브라우저에서 실행한다 → Leetcode의 CORS 정책에 걸림

      : 이런 식으로 생긴 Leetcode 페이지에서 제출한 여러 submissions 결과를 추출하고 싶었으나 브라우저에서 바로 보내는 HTTP 요청은 CORS 정책에 막힌다.

    1. 로컬 서버가 브라우저에 렌더링하게 만든다 → 내가 원하는 정보인 submissions 항목은 개인정보에 해당함

      : Express 서버를 간단히 만들어 서버를 실행시키고, axios로 HTTP 요청을 보낸 후, 응답으로 받는 html을 cheerio로 구문분석하여 원하는 정보를 뽑고, 마지막으로 간단한 ejs 템플릿을 만들어 서버사이드 렌더링해주었다. 그러나 axios 등으로 단순 페이지를 요청하면 로그인 없는 결과가 응답되어 원하는 데이터(submissions 정보)가 포함되어 있지 않았다. 로그인 정보와 함께 접근할 수 있는 방법을 찾아야 했다.

    1. 로그인 + 유저의 정보 중 submissions 정보에 접근하는 방법들(다음 Leetcode 질문 페이지의 답변을 전부 살펴봤다: https://leetcode.com/discuss/general-discussion/1297705/is-there-public-api-endpoints-available-for-leetcode):
      • 방법1: https://github.com/JeremyTsaii/leetcode-stats-api

        ⇒ 주소 끝에 내 Leetcode 유저ID를 입력하기만 하면 JSON 결과를 받아볼 수 있는 방법. 로그인해야 얻을 수 있는 정보는 볼 수 없다(submissions의 구체적인 항목이 나오지 않는다)는 점에서 탈락.

      • 방법2:

        ⇒ 주소 끝에 Leetcode 유저ID르 ㄹ입력하기만 하면 JSON 결과를 받아볼 수 있는 방법. 역시나 탈락이다.

      • 방법3: https://github.com/akarsh1995/leetcode-graphql-queries

        ⇒ 로그인에 딱 필요한 EETCODE_SESSION 와 csrftoken 쿠키를 언급하고 있는 걸로 보아 로그인을 하는 것은 확실해보이나, 내가 GraphQL 쿼리를 잘 모르고 샘플 결과에서 submissions 항목도 특별히 보이진 않아서 패스했다.


Uploaded by N2T