ネイバー国語辞典/英語辞書検索ツール_v1.01_20220708

1つのエラーを修正した「ネイバー国語辞書/英語辞書検索ツール_v1.01_20220708」を配布する。

ネイバー国語辞典、英語辞書検索ツールの概要と使用方法は、以下の記事にまとめられている。

ネイバー国語辞典/英語辞書検索ツールの概要

本日(2022-07-08) 次のようなコメントが走った。

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

#ToDo:コメントリンクを変更するかどうかを確認する

네이버 국어사전/영어사전 검색 도구 오류 신고 댓글
ネイバー国語辞典/英語辞書検索ツールエラー報告コメント

確認してみると、次のエラーメッセージが表示されます。

네이버 국어사전/영어사전 검색 도구 오류 메시지
ネイバー国語辞書/英語辞書検索ツールエラーメッセージ

Fiddlerで確認してみると、Responseが空の状態だ。

Fiddler로 확인: No Response Body
ネイバー国語辞典/英語辞書検索ツール Fiddlerで確認: Response Bodyなし

サーバーでいくつかの条件が追加されているようです。その条件を満たさないときは、答えを与えないようだ。

Webブラウザで検索すると、通常はResponseがjsonとして受け入れられます。

웹 브라우저 Fiddler로 확인: Response Body 있음
Webブラウザの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件のフィードバック

  1. アバター写真 서희경 より:

    こんにちは。単語抽出ツールに続き、辞書検索ツールもよく使用中です。
    ところが一つ発見しました。
    premiumをオタロpreimiumと入力して検索しましたが、premiumの結果値を吐きました。
    私は意味を付ける作業と一緒にタイプミスも一緒に検出中でした。

    ネイバー辞書で該当単語を検索するので自動的に誤字変換をして結果値を与えてそんなようですが…正確に一致する場合だけ吐き出すようにすればいいようです…。 (もちろん「正確に一致」というオプションがありますが^^;;)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ja日本語