무엇을 해 주나요
학번 인증 하나와, 로그인 없이 받는 학교 데이터입니다. 카드를 누르면 메서드와 결과 필드가 나옵니다.
학생 인증
재학 여부, 이름, 학과, 학년, 고전독서 인증 현황, 연락처를 한 번의 로그인으로 받습니다.
authenticate학과·강의
학과·학기 코드와 개설강좌를 학과, 과목명, 교수명으로 찾습니다. 모두 비우면 그 학기 전체입니다.
departmentslectures학사일정
기간을 주면 학부와 대학원 학사일정을 날짜와 제목으로 돌려줍니다.
calendargraduate_calendar기숙사
일주일 식단(조식·중식·석식)과 공지 목록을 받습니다.
dormitory_menudormitory_notices학식
식당 목록(번호·이름·건물·위치)과 식당별 메뉴, 가격을 받습니다.
cafeteria_placescafeteria_menu캠퍼스 지도
건물과 편의시설의 이름, 위치(위도·경도), 안내 정보를 받습니다.
campus_places비교과
기간별 비교과 프로그램을 분류와 함께 받습니다.
extracurricular_events교육과정
학과 코드와 과목 번호로 권장 학년·학기, 이수 구분, 학점, 교과목 개요를 받습니다.
curriculum_courses
왜 이 라이브러리인가
네 가지를 약속하고, 약속마다 코드나 테스트로 확인할 수 있는 근거를 붙였습니다.
빠르고 가볍게
- Python, Node는 런타임 의존성 0개 (표준 라이브러리만 사용)
- 같은 요청은 캐시에서 바로 답하고, 학교 서버를 다시 부르지 않습니다
- 통합 인증은 포털 로그인 1번으로 DHC와 SIS를 모두 조회합니다
요청은 아끼고
- 결과를 메모리에 24시간 캐시, 같은 인자의 동시 호출은 요청 1번으로 합침
- 호출 하나당 요청 1번 (학식 식당 목록만 번호 범위만큼 순서대로)
- 실패는 60초 기억, 캐시는 최대 500개 (기본값)
안전하게
- 비밀번호를 저장하지 않고 오류 메시지에도 담지 않음
- 첫 실패에서 멈춰 계정 잠금을 피하고, 잠긴 계정은 ACCOUNT_LOCKED로 알림
- SIS 부가 필드에서 세션값·접속 IP·주민번호·계좌·주소 등 민감 키를 항상 제외
믿을 수 있게
- 매일 09:00(KST) 세 언어가 실제 포털에 로그인하고, 실패하면 이슈가 자동으로 열림
- 세 언어 결과를 spec/contract.json 한 곳으로 맞추고, 어긋나면 테스트 실패
- 공개 메서드 목록이 소스·문서와 같은지 CI가 검사
30초면 첫 호출
설치하고 두 줄이면 됩니다. 아래 코드를 그대로 붙여 넣으세요.
로그인 없이 학과 코드 받기
SejongPublicData publicData = new SejongPublicData(); // Spring 에서는 빈으로 주입List<Department> departments = publicData.departments("20", "2026", "20"); // 학부, 학기 값은 학교 값학번 인증
// build.gradle: implementation "kr.suhsaechan:sejongpeia:<version>" (latest: central.sonatype.com/artifact/kr.suhsaechan/sejongpeia)SejongAuthResult result = sejongAuthEngine.authenticate("21011234", "비밀번호");result.getName(); // "홍길동"result.getMajor(); // "컴퓨터공학과"로그인 없이 학과 코드 받기
from sejongpeia import SejongPublicData
public_data = SejongPublicData()departments = public_data.departments("20", "2026", "20") # 학부, 학기 값은 학교 값학번 인증
# pip install pro-sejongpeiafrom sejongpeia import authenticate
result = authenticate("21011234", "비밀번호")print(result.name, result.major)로그인 없이 학과 코드 받기
import { SejongPublicData } from 'pro-sejongpeia';
const publicData = new SejongPublicData();const departments = await publicData.departments({ categoryCode: '20', year: '2026', semesterCode: '20' });학번 인증
// npm install pro-sejongpeiaimport { authenticate } from 'pro-sejongpeia';
const result = await authenticate('21011234', '비밀번호');console.log(result.name, result.major);서버에서만 호출하세요. 학번과 비밀번호를 브라우저나 앱에서 직접 보내면 제3자 코드에 노출됩니다.
지금 바로 체험하기
본인 세종대 포털 계정으로 라이브러리가 실제로 무엇을 돌려주는지 확인해 보세요.
인증 결과
세 언어가 모두 지원합니다
기능, 결과 필드, 에러 코드, 값 규칙이 같습니다. 어긋나면 공통 계약 테스트가 실패하도록 해 두었습니다.
| 기능 | Java | Python | Node.js |
|---|---|---|---|
| 통합 인증학생 정보 + 고전독서 + 연락처, 로그인 1회 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| DHC · SIS 개별 인증필요한 쪽만 조회 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 학사 업무 기간수강신청, 성적 조회 등 (로그인 필요) | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 원문 · extra 옵션학교 원문 응답과 나머지 필드 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 학과 · 학기 코드소속 분류, 학기, 학과, 이수 구분, 선택 영역 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 개설강좌 검색학과 · 과목명 · 교수명 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 교육과정학년 · 학기 · 학점 · 교과목 개요 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 학사일정학부 · 대학원 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 기숙사 식단 · 공지7일 식단, 공지 검색 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 학식 식당 · 메뉴식당 목록과 메뉴, 가격 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 캠퍼스 장소건물 · 편의시설, 위도 · 경도 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 비교과 프로그램기간별 일정 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 에러 코드 10종같은 코드, 같은 의미 | Java: 지원 | Python: 지원 | Node.js: 지원 |
| 메모리 캐시 · 실패 격리공개 데이터 기본 24시간 | Java: 지원 | Python: 지원 | Node.js: 지원 |
실행 환경은 다릅니다. Java는 17 이상 (Spring Boot 3.x 자동 설정), Python은 3.9 이상, Node.js는 18 이상이며 Python과 Node.js는 외부 의존성이 없습니다. 이름 표기만 Python snake_case, Node.js와 Java camelCase로 다릅니다.
직접 구현하면 어려운 것들
포털 로그인은 눈에 보이는 것보다 훨씬 까다롭습니다. 아래를 모두 라이브러리가 대신 처리합니다. 카드를 누르면 자세한 설명이 나옵니다.
- 1
레거시 TLS 암호
포털이 허용하는 유일한 암호(TLS_RSA_WITH_AES_256_CBC_SHA)를 최신 JDK, Python, Node 기본 설정이 막습니다. 언어마다 다른 방식으로 풀어 두었습니다.
- 2
방화벽과 User-Agent
기본 라이브러리 User-Agent는 방화벽이 막고, 없으면 일부 사이트가 404를 돌려줍니다. 식별 가능한 User-Agent를 자동으로 보냅니다.
- 3
SSO 쿠키와 리다이렉트
세종대 도메인 여러 곳에 걸친 SSO 쿠키와 리다이렉트를 처리해, 로그인 한 번으로 DHC와 SIS를 모두 조회합니다.
- 4
로그인 판정과 계정 보호
200 응답 안의 스크립트 값으로 비밀번호 오류, 계정 잠금, 이용 불가를 구분합니다. 틀린 비밀번호는 재시도하지 않아 계정 잠금을 막습니다.
- 5
실패 격리와 캐시
공개 데이터는 한 곳이 실패해도 나머지가 그대로 동작하고, 마지막 캐시 값이나 빈 목록을 돌려줍니다. 같은 요청은 한 번만 보냅니다.
- 6
매일 도는 실제 포털 점검
매일 세 언어로 실제 포털에 로그인하고, 계정이 필요 없는 공개 데이터의 응답 모양도 확인합니다. 이상이 있으면 이슈가 열립니다.
더 알아보기
이 프로젝트는 세종대 학생이 만든 개인 오픈소스입니다. 하위 호환을 보장하지 않으니 버전을 고정해서 쓰세요.
이 프로젝트는 세종대학교의 공식 제품이 아니며 세종대학교와 제휴 관계가 없습니다. 세종대학교 교표의 권리는 세종대학교에 있습니다.
