방화벽과 User-Agent
왜 어려운가
섹션 제목: “왜 어려운가”로그인이 되고 TLS도 통과했는데 요청이 이상하게 실패하는 경우가 있습니다. 원인은 요청 헤더의 User-Agent입니다. 포털 흐름에서 확인한 동작은 두 가지입니다.
| 상황 | 결과 |
|---|---|
User-Agent를 보내지 않음 |
classic.sejong.ac.kr이 SSO 이후 404를 돌려줍니다 |
라이브러리 기본값 (예: Python-urllib) |
sjpt.sejong.ac.kr의 방화벽이 막고 「Alert!!!」 HTML 페이지를 돌려줍니다 |
둘 다 코드가 올바른데도 응답만 이상하므로, 모르면 파싱이나 로그인 문제로 오해하기 쉽습니다.
라이브러리가 하는 일
섹션 제목: “라이브러리가 하는 일”비어 있지 않고 기본값도 아닌, 식별 가능한 User-Agent를 모든 요청에 보냅니다. 형식은 계약에 이렇게 정해져 있습니다.
pro-sejongpeia-<언어>/<버전>- Python:
pro-sejongpeia-python/<버전> - Node.js:
pro-sejongpeia-node/<버전> - Java 공개 데이터 호출:
pro-sejongpeia-java - 인증 요청의 User-Agent 형식은 위 계약을 따릅니다.
직접 구현한다면
섹션 제목: “직접 구현한다면”- 모든 HTTP 클라이언트에 비어 있지 않은 고유한
User-Agent를 설정하세요. - 브라우저를 흉내 내는 대신 라이브러리 이름과 버전이 보이게 두면, 문제가 생겼을 때 서로 원인을 찾기 쉽습니다.
- 404나 「Alert!!!」 페이지가 오면 파서보다 먼저 헤더를 의심하세요.
