Backend 4

[BOJ-AutoSync] 4. Github OAuth Apps 연동하기

BOJ에서 정보를 불러오는 작업이 어느정도 마무리됐으니, 이번에는 Github 연동 단계로 넘어가봅시다. Github를 앱과 연동하기 위해서는 다음의 3단계를 거쳐야 합니다.GitHub OAuth 로그인Access Token 발급GitHub 사용자 정보 가져오기Github OAuth Apps 등록하기먼저 깃허브에 접속해 Settings > Developer Settings > OAuth Apps 에 들어가줍니다.New OAuth app 버튼을 찾아 눌러주면 다음과 같이 새로운 app을 등록하는 창이 나옵니다.위 페이지에서 다음 필수 정보를 입력해줍니다.Application nameHomepage URLAuthorization callback URL입력 후 Register application 버튼을 클릭..

백엔드 2025.03.16

[BOJ-AutoSync] 2. selenium으로 BOJ 로그인하고 코드 불러오기

앞서 requests로 BOJ 로그인과 제출 기록 가져오는 코드가 잘 작동하는 것을 확인하고 신나있었으나...알고보니 requests 방식으로는 BOJ 사이트에서 로그인이 되지 않을 뿐만 아니라, 내가 잘 되고 있다고 착각한 것은 로그인이 되지 않은 상태에서도 조회가 가능한 부분이었었다😭 그래서 결국 selenium을 이용해 다시 구현해보기로 결정했습니다. selenium은 웹 브라우저를 자동화하는 도구입니다. 웹 크롤링을 하다보면 웹 페이지의 버튼을 누르는 등 페이지와 상호작용을 해야할 때가 있는데, selenium은 이를 동적으로 관리해주며 GUI를 통해 사용자가 직접 웹 페이지에 접근할 수 있기에 매우 편리합니다. 일부 웹 사이트는 크롤링을 막아둬 requests 같은 라이브러리를 통해 보내지는 ..

백엔드 2025.03.14

[BOJ-AutoSync] 1. requests와 bs4로 BOJ 크롤링하기

requests로 백준 로그인 구현하기백준에 제출한 코드를 열람하기 위해서는 반드시 로그인이 되어 있어야 하고, 비공개로 설정된 코드는 제출한 계정으로만 열람이 가능합니다.저는 가장 많이 사용되는 requests 라이브러리를 활용하여 로그인을 구현해보기로 결정했습니다. 먼저, 간단하게 사용자 아이디, 비밀번호 정보를 통해 로그인 함수를 구현해보았습니다.import requestsBASE_URL = "https://www.acmicpc.net"def login(boj_id, boj_pwd): session = requests.Session() login_url = f"{BASE_URL}/signin" payload = {'login_user_id': boj_id, ..

백엔드 2025.03.14

[BOJ-AutoSync] 0. 프로젝트 기획

평소 알고리즘 학습을 위해 1일1백준을 즐겨하는 저는 제가 제출해서 통과된 코드를 기록이나 백업 용도로 깃허브에 업로드해서 보관하고는 했습니다. 하지만 이렇게 직접 일일이 업로드하는 것은 상당히 귀찮기 때문에 결국 저의 레포는 껌데기만 남았습니다. 그래서 저는 이런 아이디어를 떠올렸습니다. 클릭 한 번에 내 제출 이력을 토대로 깃허브에 알아서 커밋해주는 친구가 있으면 좋지 않을까?  저는 이를 직접 웹으로 개발해보기로 결정하고, 아이디어를 떠올린 바로 그 순간 그 자리에서 곧장 개발을 시작했습니다. 주요 기능현재 생각하고 있는 기능은 아래와 같습니다백준 계정 연동사용자가 백준 아이디와 비밀번호를 입력하여 로그인합니다.깃허브 로그인 및 저장소 선택사용자가 GitHub 계정으로 로그인하고, 연동할 레포지토리..

백엔드 2025.03.14