인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Victor Choi님의 프로필 이미지

작성한 질문수

남박사의 파이썬으로 봇 만들기 with ChatGPT

InlineQuery와 스마트폰 위치 정보를 활요한 주변 맛집 검색 봇 만들기

답변 3

1

남박사님의 프로필 이미지
남박사
지식공유자

import requests

header = {
    "referer": "https://map.naver.com/p/search/%EB%A7%9B%EC%A7%91"
}
url = "https://map.naver.com/p/api/search/allSearch?query=%EB%A7%9B%EC%A7%91&type=all&searchCoord=127.23607494606563%3B37.64831199999951&boundary="

r = requests.get(url, headers=header)
print(r.text)

위의 코드에서처럼 헤더값에 referer 값을 설정해서 넘기시면 문제 없이 동작하는것을 확인했습니다.  

referer 값은 현재 페이지를 접속할때 이전에 어떤페이지에서 넘어왔는지를 참조하는 값 입니다. 강좌를 진행할 때는 이 referer 값을 체크하지 않았는데 현재 체크하게 변경된것으로 보입니다. 그래서 브라우저에서 직접 새창열기를 통해 직접 접속하게 되면 이 referer 값을 설정할 수 없기 때문에 서버가 403 오류를 발생시키는건데,

image.png

위의 스샷처럼 postman 같은 웹테스트 툴에서 직접 referer 을 설정해서 테스트 해볼 수 있고,

 

image.png

크롬 개발자 도구에 Modheader라는 확장프로그램을 설치해서 referer값을 설정해서 페이지를 열어보는 방법으로도 테스트 해볼 수 있으니 참고 하시기 바랍니다.

0

Victor Choi님의 프로필 이미지
Victor Choi
질문자

주신 답변은 이해를 못하겠습니다.

여기 강의하시는 분이 답변 안해주시나요?

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.
Victor Choi님, 네이버 API 사용 중 403 에러가 발생한다면 이는 일반적으로 CSRF 보안 설정이나 API 사용 권한 제한으로 인한 문제일 수 있습니다.

403 Forbidden 에러는 서버가 요청을 이해했지만 권한 문제로 요청을 거부했음을 의미합니다. 네이버 API의 경우, 올바른 API 키를 사용했는지, 해당 API의 사용 조건이나 권한이 변경되지는 않았는지 확인하는 것이 좋습니다. 추가적으로 CSRF 보안이 관련이 있을 수 있으며, Spring Security 적용 환경에서는 CSRF 보호가 기본적으로 활성화되어 있어 POST, PUT, DELETE 요청 시 403 에러가 발생할 수 있습니다. 더욱 자세한 내용은 Spring Security Reference Guide를 참조하세요.

이 외에 API 요청 시 필요한 헤더나 요청 형식에 대한 문서 검토가 필요할 수도 있습니다. 네이버 측의 API 문서를 다시 한 번 확인해 보시고, 문제가 지속된다면 네이버 개발자 센터에 문의해 보시기 바랍니다.