네이버 국어사전/영어사전 검색 도구_v1.01_20220708

한가지 오류를 수정한 “네이버 국어사전/영어사전 검색 도구_v1.01_20220708″을 배포한다.

네이버 국어사전, 영어사전 검색 도구 개요와 사용 방법은 아래 글에 정리되어 있다.

네이버 국어사전/영어사전 검색 도구 개요

오늘(2022-07-08) 다음과 같은 댓글이 달렸다.

https://prodtool.tistory.com/28#comment9159871

#ToDo: 댓글 링크 변경할지 검토

네이버 국어사전/영어사전 검색 도구 오류 신고 댓글
네이버 국어사전/영어사전 검색 도구 오류 신고 댓글

확인해 보니 다음과 같은 오류 메시지가 발생한다.

네이버 국어사전/영어사전 검색 도구 오류 메시지
네이버 국어사전/영어사전 검색 도구 오류 메시지

Fiddler로 확인해 보니, Response가 빈 상태이다.

Fiddler로 확인: No Response Body
네이버 국어사전/영어사전 검색 도구 Fiddler로 확인: Response Body 없음

서버에서 어떤 조건이 추가된 것으로 보인다. 그 조건을 만족하지 못할 때는 응답을 주지 않는 것 같다.

웹 브라우저에서 조회하면 정상적으로 Response가 json으로 받아진다.

웹 브라우저 Fiddler로 확인: Response Body 있음
웹 브라우저 Fiddler로 확인: Response Body 있음

정상 응답을 받는 Request header에 Referer가 있다.

혹시나 하여 Referer header를 추가해 보았다.(modUtil.GetDataFromURL 36행)

Option Explicit

Function GetDataFromURL(strURL, strMethod, strPostData, Optional strCharSet = "UTF-8")
  Dim lngTimeout
  Dim strUserAgentString
  Dim intSslErrorIgnoreFlags
  Dim blnEnableRedirects
  Dim blnEnableHttpsToHttpRedirects
  Dim strHostOverride
  Dim strLogin
  Dim strPassword
  Dim strResponseText
  Dim objWinHttp
  lngTimeout = 59000
  strUserAgentString = "http_requester/0.1"
  intSslErrorIgnoreFlags = 13056 ' 13056: ignore all err, 0: accept no err
  blnEnableRedirects = True
  blnEnableHttpsToHttpRedirects = True
  strHostOverride = ""
  strLogin = ""
  strPassword = ""
  Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
  '--------------------------------------------------------------------
  'objWinHttp.SetProxy 2, "xxx.xxx.xxx.xxx:xxxx", "" 'Proxy를 사용하는 환경에서 설정
  '--------------------------------------------------------------------
  objWinHttp.SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout
  objWinHttp.Open strMethod, strURL
  If strMethod = "POST" Then
    objWinHttp.SetRequestHeader "Content-type", "application/x-www-form-urlencoded; charset=UTF-8"
  Else
    objWinHttp.SetRequestHeader "Content-type", "text/html; charset=euc-kr"
  End If
  If strHostOverride <> "" Then
    objWinHttp.SetRequestHeader "Host", strHostOverride
  End If
  objWinHttp.SetRequestHeader "Referer", "https://ko.dict.naver.com/" '2022-07-08 추가

  objWinHttp.Option(0) = strUserAgentString
  objWinHttp.Option(4) = intSslErrorIgnoreFlags
  objWinHttp.Option(6) = blnEnableRedirects
  objWinHttp.Option(12) = blnEnableHttpsToHttpRedirects
  If (strLogin <> "") And (strPassword <> "") Then
    objWinHttp.SetCredentials strLogin, strPassword, 0
  End If
  On Error Resume Next
  objWinHttp.Send (strPostData)
  objWinHttp.WaitForResponse
  If Err.Number = 0 Then
    If objWinHttp.Status = "200" Then
      'GetDataFromURL = objWinHttp.ResponseText
      GetDataFromURL = BinaryToText(objWinHttp.ResponseBody, strCharSet)
    Else
      GetDataFromURL = "HTTP " & objWinHttp.Status & " " & _
        objWinHttp.StatusText
    End If
  Else
    GetDataFromURL = "Error " & Err.Number & " " & Err.Source & " " & _
      Err.Description
  End If
  On Error GoTo 0
  Set objWinHttp = Nothing
End Function


잘 동작한다!

이 오류를 패치한 버전(네이버 국어사전/영어사전 검색 도구_v1.01_20220708)을 github에 업로드 해두었고, 아래 URL로 바로 다운로드할 수 있다.

https://github.com/DAToolset/ToolsForDataStandard/raw/main/네이버 국어사전,영어사전 검색 도구_v1.01_20220708.xlsm

참고로, github에 디렉토리를 만들고 source code를 따로 올려놓았다.

ToolsForDataStandard/src_네이버 국어사전,영어사전 검색 도구 at main · DAToolset/ToolsForDataStandard (github.com)


<< 관련 글 목록 >>

4 Responses

  1. 아바타 사진 서희경 댓글:

    안녕하세요. 단어추출도구에 이어 사전 검색도구도 잘 사용중에 있습니다.
    그런데 한가지를 발견했는데요.
    premium을 오타로 preimium으로 입력하여 검색했는데, premium의 결과값을 뱉어주었습니다.
    저는 의미를 붙이는 작업과 함께 오타도 함께 검출중이었는데.. 이렇게 결과값이 나오더라구요 ^^;;

    네이버사전에서 해당 단어를 검색하니 자동으로 오타변환을 해서 결과값을 줘서 그런 것 같긴하지만.. 정확히 일치하는 경우만 뱉어내도록 하면 좋을 것 같습니다…(물론 ‘정확히일치’라는 옵션이 있긴합니다만 ^^;;)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

ko_KR한국어