CSEのAPIテスト実行 (CSE/Googleカスタム検索エンジンAPI)
Googleカスタム検索エンジンAPIはプログラムから呼び出す前にWebでテストできます。
実際に独自のプログラムから呼び出しがうまくいかない場合の、
エラー原因の切り分けに有効です。
ここではAPI実行のテスト実行による確認手順をご紹介します。
本投稿は以下コンテンツの1記事になります。一連の流れは以下からご確認下さい。
私(本検証)は既にGoogleアカウントの取得と、
GoogleAPIコンソールへのアクセスの設定は済んでいますので、
途中、ログイン・登録等を促す画面が表示された場合は画面の指示に従ってください。
目次
Googleカスタム検索エンジン(CSE)のAPIテスト実行
Googleカスタム検索エンジンのテスト実行は、
リファレンスページ内で行う事ができます。
https://developers.google.com/custom-search/json-api/v1/reference/cse/list?hl=ja
CSE APIの入力必須項目は以下の通り、3つです。
This method requires three query parameters:
- The search engine to use in your request (using the
cx
query parameter)- The search terms for in this request (using the
q
query parameter).- Your API key (using the
key
query parameter).(抜粋引用)https://developers.google.com/custom-search/json-api/v1/reference/cse/list?hl=ja
リファレンスページの右に表示されている項目(テスト実行)では、
APIキーは不要ですのでの2つを入力して実行します。
- q
- cx
API key
Using a demo API key to authorize your request.(G訳)APIキー
デモAPIキーを使用してリクエストを承認する。
テスト実行
では実際にリファレンスページで入力して実行してみます。
CXキーは各自目的にあったCSEを作成しご確認下さい。
ここではクエリ文字列に「株式会社ケイ・オプティコム」と入力しています。
※利用しているプロバイダ「eo光」の運営会社さんです。
※これは以下でご紹介した「JPNIC」から対象プロバイダのCIDRを検索する手順を、
CSEで置き換えているものです。
実際の動作は以下でも確認ができます。
入力が済んだら、スクロールして下部の「Execute」をクリックして実行します。
指定に問題がない場合には、グリーンバーでレスポンス部分が表示されます。
この場合、以下の様なレスポンスが得られます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
{ "kind": "customsearch#search", "url": { "type": "application/json", "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json" }, "queries": { "request": [ { "title": "Google Custom Search - 株式会社ケイ・オプティコム", "totalResults": "193", "searchTerms": "株式会社ケイ・オプティコム", "count": 10, "startIndex": 1, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "014810786654675656813:8jolq19mpc8" } ], "nextPage": [ { "title": "Google Custom Search - 株式会社ケイ・オプティコム", "totalResults": "193", "searchTerms": "株式会社ケイ・オプティコム", "count": 10, "startIndex": 11, "inputEncoding": "utf8", "outputEncoding": "utf8", "safe": "off", "cx": "014810786654675656813:8jolq19mpc8" } ] }, "context": { "title": "cse-ipvx" }, "searchInformation": { "searchTime": 0.427084, "formattedSearchTime": "0.43", "totalResults": "193", "formattedTotalResults": "193" }, "items": [ { "kind": "customsearch#result", "title": "119.228.0.0/14", "htmlTitle": "119.228.0.0/14", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=119.228.0.0/14", "displayLink": "whois.nic.ad.jp", "snippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 119.228.0.0/14 [\nネットワーク名] [組織名] 株式会社ケイ・オプティコム[Organization] K-Opticom \nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\n] ...", "htmlSnippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 119.228.0.0/14 [\u003cbr\u003e\nネットワーク名] [組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003e[Organization] K-Opticom \u003cbr\u003e\nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\u003cbr\u003e\n] ...", "cacheId": "3KyaBGDlSUkJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=119.228.0.0/14", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=119.228.0.0/14" }, { "kind": "customsearch#result", "title": "219.122.128.0/17", "htmlTitle": "219.122.128.0/17", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=219.122.128.0/17", "displayLink": "whois.nic.ad.jp", "snippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 219.122.128.0/17 [\nネットワーク名] [組織名] 株式会社ケイ・オプティコム[Organization] K-Opticom \nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\n] ...", "htmlSnippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 219.122.128.0/17 [\u003cbr\u003e\nネットワーク名] [組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003e[Organization] K-Opticom \u003cbr\u003e\nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\u003cbr\u003e\n] ...", "cacheId": "m2KnEbsHrXUJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=219.122.128.0/...", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=219.122.128.0/..." }, { "kind": "customsearch#result", "title": "121.84.0.0/14", "htmlTitle": "121.84.0.0/14", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=121.84.0.0/14", "displayLink": "whois.nic.ad.jp", "snippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 121.84.0.0/14 [\nネットワーク名] [組織名] 株式会社ケイ・オプティコム[Organization] K-Opticom \nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\n] ...", "htmlSnippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 121.84.0.0/14 [\u003cbr\u003e\nネットワーク名] [組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003e[Organization] K-Opticom \u003cbr\u003e\nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\u003cbr\u003e\n] ...", "cacheId": "AdnBA-brydUJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=121.84.0.0/14", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=121.84.0.0/14" }, { "kind": "customsearch#result", "title": "61.195.96.0/19", "htmlTitle": "61.195.96.0/19", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=61.195.96.0/19", "displayLink": "whois.nic.ad.jp", "snippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 61.195.96.0/19 [\nネットワーク名] [組織名] 株式会社ケイ・オプティコム[Organization] K-Opticom \nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\n] ...", "htmlSnippet": "Network Information: [ネットワーク情報] [IPネットワークアドレス] 61.195.96.0/19 [\u003cbr\u003e\nネットワーク名] [組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003e[Organization] K-Opticom \u003cbr\u003e\nCorporation [管理者連絡窓口] JP00014196 [技術連絡担当者] JP00014196 [Abuse\u003cbr\u003e\n] ...", "cacheId": "4g_LB4sB7ooJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=61.195.96.0/19", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=61.195.96.0/19" }, { "kind": "customsearch#result", "title": "60.56.227.0/24", "htmlTitle": "60.56.227.0/24", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=60.56.227.0/24", "displayLink": "whois.nic.ad.jp", "snippet": "[組織名] 株式会社ケイ・オプティコムg. [Organization] K-Opticom Corporation m. [\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2004/10/27 [返却年\n月 ...", "htmlSnippet": "[組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003eg. [Organization] K-Opticom Corporation m. [\u003cbr\u003e\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \u003cbr\u003e\nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2004/10/27 [返却年\u003cbr\u003e\n月 ...", "cacheId": "cYua5Ydmu9gJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=60.56.227.0/24", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=60.56.227.0/24" }, { "kind": "customsearch#result", "title": "60.56.224.0/24", "htmlTitle": "60.56.224.0/24", "link": "http://whois.nic.ad.jp/cgi-bin/whois_gw?key=60.56.224.0/24", "displayLink": "whois.nic.ad.jp", "snippet": "[組織名] 株式会社ケイ・オプティコムg. [Organization] K-Opticom Corporation m. [\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2004/08/04 [返却年\n月 ...", "htmlSnippet": "[組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003eg. [Organization] K-Opticom Corporation m. [\u003cbr\u003e\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \u003cbr\u003e\nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2004/08/04 [返却年\u003cbr\u003e\n月 ...", "cacheId": "cOslwy5jEn0J", "formattedUrl": "whois.nic.ad.jp/cgi-bin/whois_gw?key=60.56.224.0/24", "htmlFormattedUrl": "whois.nic.ad.jp/cgi-bin/whois_gw?key=60.56.224.0/24" }, { "kind": "customsearch#result", "title": "59.190.129.0/24", "htmlTitle": "59.190.129.0/24", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=59.190.129.0/24", "displayLink": "whois.nic.ad.jp", "snippet": "[組織名] 株式会社ケイ・オプティコムg. [Organization] K-Opticom Corporation m. [\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2005/04/20 [返却年\n月 ...", "htmlSnippet": "[組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003eg. [Organization] K-Opticom Corporation m. [\u003cbr\u003e\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \u003cbr\u003e\nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2005/04/20 [返却年\u003cbr\u003e\n月 ...", "cacheId": "aDU76UWI-SEJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=59.190.129.0/...", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=59.190.129.0/..." }, { "kind": "customsearch#result", "title": "219.122.35.0/24", "htmlTitle": "219.122.35.0/24", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=219.122.35.0/24", "displayLink": "whois.nic.ad.jp", "snippet": "[組織名] 株式会社ケイ・オプティコムg. ... [ネームサーバ] ns7.eonet.ne.jp [割当年月日] \n2003/01/16 [返却年月日] [最終更新] 2006/04/24 17:05:23(JST) 上位情報---------- \n株式会社ケイ・オプティコム (K-Opticom Corporation) [割り振り] 219.122.32.0/19 \n下位 ...", "htmlSnippet": "[組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003eg. ... [ネームサーバ] ns7.eonet.ne.jp [割当年月日] \u003cbr\u003e\n2003/01/16 [返却年月日] [最終更新] 2006/04/24 17:05:23(JST) 上位情報---------- \u003cbr\u003e\n\u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003e (K-Opticom Corporation) [割り振り] 219.122.32.0/19 \u003cbr\u003e\n下位 ...", "cacheId": "_HHN56bHp5oJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=219.122.35.0/...", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=219.122.35.0/..." }, { "kind": "customsearch#result", "title": "58.191.154.0/24", "htmlTitle": "58.191.154.0/24", "link": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=58.191.154.0/24", "displayLink": "whois.nic.ad.jp", "snippet": "[組織名] 株式会社ケイ・オプティコムg. ... [ネームサーバ] ns7.eonet.ne.jp [割当年月日] \n2006/03/22 [返却年月日] [最終更新] 2006/04/24 17:17:11(JST) 上位情報---------- \n株式会社ケイ・オプティコム (K-Opticom Corporation) [割り振り] 58.188.0.0/14 下位 ...", "htmlSnippet": "[組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003eg. ... [ネームサーバ] ns7.eonet.ne.jp [割当年月日] \u003cbr\u003e\n2006/03/22 [返却年月日] [最終更新] 2006/04/24 17:17:11(JST) 上位情報---------- \u003cbr\u003e\n\u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003e (K-Opticom Corporation) [割り振り] 58.188.0.0/14 下位 ...", "cacheId": "pwMxAxVWvSYJ", "formattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=58.191.154.0/...", "htmlFormattedUrl": "https://whois.nic.ad.jp/cgi-bin/whois_gw?key=58.191.154.0/..." }, { "kind": "customsearch#result", "title": "203.140.64.0/24", "htmlTitle": "203.140.64.0/24", "link": "http://whois.nic.ad.jp/cgi-bin/whois_gw?key=203.140.64.0/24", "displayLink": "whois.nic.ad.jp", "snippet": "[組織名] 株式会社ケイ・オプティコムg. [Organization] K-Opticom Corporation m. [\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2002/05/15 [返却年\n月 ...", "htmlSnippet": "[組織名] \u003cb\u003e株式会社ケイ\u003c/b\u003e・\u003cb\u003eオプティコム\u003c/b\u003eg. [Organization] K-Opticom Corporation m. [\u003cbr\u003e\n管理者連絡窓口] JP00014196 n. [技術連絡担当者] JP00014196 p. [ネームサーバ] \u003cbr\u003e\nns1.eonet.ne.jp p. [ネームサーバ] ns7.eonet.ne.jp [割当年月日] 2002/05/15 [返却年\u003cbr\u003e\n月 ...", "cacheId": "Fe2Z2DKlfVoJ", "formattedUrl": "whois.nic.ad.jp/cgi-bin/whois_gw?key=203.140.64.0/24", "htmlFormattedUrl": "whois.nic.ad.jp/cgi-bin/whois_gw?key=203.140.64.0/24" } ] } |
例えばCXキーに誤りがあるような場合(以下はCXキー未設定)は以下のように表示されます。
しっかりcxキーがエラーだと表示されています。
"message": "Need to provide a Custom Search Engine ID. Missing cx parameter.",
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "error": { "errors": [ { "domain": "global", "reason": "conditionNotMet", "message": "Need to provide a Custom Search Engine ID. Missing cx parameter.", "locationType": "header", "location": "If-Match" } ], "code": 412, "message": "Need to provide a Custom Search Engine ID. Missing cx parameter." } } |
このようにプログラムからAPIを呼び出す前に、
正しく設定ができているか、レスポンスが取れるかという確認ができます。
これで正しく取得できるようであれば、
後はプログラムから呼び出してあげるだけです。
もっと言えば、URLにアクセスするだけで確認ができます。
URLを叩いでブラウザで確認、又はRESTAPIで実行(非推奨)
直接、以下リンクをクリックしても動作確認はできるはずです。
これは以下でご紹介しているものからリンクを生成しています。
(注意)
一般的には「発行されたAPIキー」は公開するべきものではありません。
APIキーが知られると言う事は、誰でもこのAPIを実行できることになります。
上記のAPIキーではHTTPリファラによる制限をかけています。
しかしリファラ偽装は容易にできます。
カスタム検索エンジンAPIでは1日100回の検索実行によって無料検索枠を超過します。
課金を有効にしていない場合、検索が利用できなくなるというだけではありますが、
課金が有効であった場合、他人の検索によって膨大な請求が発生する恐れもあります。
ただ今回は動作の確認という意味で、公開しています。
数回程度、テストでこのAPIキーを利用する事は許容範囲ではありますが、
無料で誰でも取得可能なAPIキーを取得しないで他人のAPIキーを使うのは、
決してお勧めできることでもありません。
おかしな挙動、極端なアクセス増が見られる場合には、
いつでもこのAPIキーを削除して停止致します。
ただ、そもそもAPIキーをPHPなどサーバーサイトに移して秘匿として、
はたしてbotやクローラなど、非ユーザーによるアクセスが制限できるか?
と言えば、非常に難しい課題になりますので、
APIキーを公開しない事は大前提ですが、それだから安全とも言えない現状でもあります。
課金を有効にして、不正利用なく安全にこうしたAPIを利用するには、
もう少し調査、検討が必要だなと感じている次第です。
API無料枠と課金については、以下に明記されています。
Pricing
JSON Custom Search API provides 100 search queries per day for free. If you need more, you may sign up for billing in the API Console. Additional requests cost $5 per 1000 queries, up to 10k queries per day.
If you need more than 10k queries per day and your Custom Search Engine searches 10 sites or fewer, you may be interested in the Custom Search Site Restricted JSON API, which does not have a daily query limit.
(Google翻訳)
価格設定
JSONカスタム検索APIは、無料で1日あたり100件の検索クエリを提供します。 さらに必要な場合は、APIコンソールで請求することができます。 追加のリクエストは1000クエリあたり5ドル、1日あたり最大10kクエリです。1日あたり10,000件以上のクエリが必要で、カスタム検索エンジンが10個以下のサイトを検索する場合は、毎日のクエリ制限がないカスタム検索サイト限定JSON APIに興味があるかもしれません。
(抜粋引用)Custom Search JSON API | Custom Search | Google Developers
なおAPIダッシュボードで確認できる表示として、以下のようにも書かれています。
日本の場合、午前0時にリセットされるとされています。
「毎日の割り当ては、太平洋時間(PT)の午前 0 時にリセットされます。」
※太平洋時間(PT):協定世界時(UTC)を8時間遅らせた、主にアメリカ西海岸の地域の標準時。UTC-8。
REST APIからの実行例は、以下サイトで紹介されています。
Using REST to Invoke the API | Custom Search | Google Developers
以下の様なサンプルプログラムが紹介されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<html> <head> <title>JSON Custom Search API Example</title> </head> <body> <div id="content"></div> <script> function hndlr(response) { for (var i = 0; i < response.items.length; i++) { var item = response.items[i]; // in production code, item.htmlTitle should have the HTML entities escaped. document.getElementById("content").innerHTML += "<br>" + item.htmlTitle; } } </script> <script src="https://www.googleapis.com/customsearch/v1?key=YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=cars&callback=hndlr"> </script> </body> </html> |
がっつり、APIキーをここに指定しろと16行目に書かれています。
※「key=YOUR-KEY」部分。
「APIキーを公開しろと?」という感じです。
尚、この場合、無料枠はありませんが、上限もありません。
Pricing
Custom Search Site Restricted JSON API requests cost $5 per 1000 queries and there is no daily query limit. You may sign up for billing in the API Console.
(Google訳)
価格設定カスタム検索サイト制限されたJSON APIリクエストには1000クエリあたり5ドルの費用がかかり、毎日のクエリ制限はありません。 APIコンソールで請求にサインアップすることができます。
(引用)Custom Search Site Restricted JSON API | Custom Search | Google Developers
ダッシュボードにも以下のように明示されています。
Custom Search JSON API 1 日あたり 10,000 クエリを上限とします。(100クエリ/dayまで無料)
Custom Search Site Restricted JSON API 1 日あたりのクエリの上限はありません。(無料枠なし)
但し、以下条件を満たす場合は、無料となる模様
About the Custom Search Site Restricted JSON API
If your Custom Search Engine is restricted to only searching specific sites (10 or fewer), you can use the Custom Search Site Restricted JSON API. This API is similar to the JSON Custom Search API except this version has no daily query limit. To use this version, confirm that you see 10 or fewer sites to search in the “Sites to Search” section of your Custom Search Engine control panel, the are no global top level domain patterns, and that “Search the entire web” is set to OFF.
When using the Custom Search Site Restricted JSON API endpoint, be mindful that if your Custom Search Engine configuration is changed so that it does not conform with the site restriction rules above, the Custom Search Site Restricted JSON API may not return the expected results.
(Google訳)
JSON APIのカスタム検索サイトについてカスタム検索エンジンが特定のサイト(10個以下)の検索に限定されている場合は、カスタム検索サイトのJSON APIを使用できます。 このAPIはJSONカスタム検索APIと似ていますが、このバージョンには日次クエリ制限がありません。このバージョンを使用するには、カスタム検索エンジンのコントロールパネルの[検索するサイト]セクションで検索するサイトが10個以下で、グローバルトップレベルのドメインパターンがなく、[ウェブ全体を検索]が設定されていることを確認してくださいオフにします。
カスタム検索サイトの制限付きJSON APIエンドポイントを使用する場合、カスタム検索エンジンの設定が上記のサイト制限ルールに準拠しないように変更された場合、カスタム検索サイトの制限付きJSON APIは予期した結果を返さない可能性があります。
(引用)Custom Search Site Restricted JSON API | Custom Search | Google Developers
検索するサイトの指定が10以下で、Web全体の検索はOFF。
かつ、検索するサイトにグローバルトップレベルドメインを含まないことが条件。とされています。
グローバルトップレベルドメインですので「*.com」や「*.jp」「*.info」といった
広範囲のサイト指定は認めないという意味と読み取れます。
「ipvx.info/*」などであればトップレベルのドメイン指定という訳ではないので、
大丈夫であると考えられます。
要はこういうこと。
APIキーを隠蔽し、PHP側で悪意あるプログラムから、
不正にAPIを呼び出されて課金に怯えることはなく、
適切に設定した「Custom Search Site Restricted JSON API」からの検索なら、
上限設定もないから安心して利用していいよ。
ただ、以下のように呼び出せよと。
https://www.googleapis.com/customsearch/v1/siterestrict?[parameters]
かと。(たぶん?)
実際、考えてみれば、不正なアクセスからAPIを守る事は決して容易ではなく、
APIキーが知られたから不正な実行を受けるわけではなく、
PHPプログラムにAPIキーを秘匿に埋め込み、実行したところで、
PHPプログラム自体が、不正な実行であることが判断できなければ、何も守れません。
そういう意味では、APIキーを秘匿とすれば不正なAPI実行を回避できるわけではないので、
こういう公開してしまうアプローチもアリなのかなと思う次第です。
実際、このサンプルプログラムを設置すると以下のようになります。
カスタム検索エンジンID(cx=….)はサンプルのまま利用させて頂いています。
http://ipvx.info/dev/cse_sample.html
どうしてもCSEで結果が得られない場合
私も当初はずっとレスポンスが0件表示で正しく取得できず、悩みました。
大半は「cxキーって何ぞや?」という部分が分かっていなかっただけでした。
また、cvキーを指定するに当たっては、
そのcxキーをもつカスタム検索エンジンの動作が正しい必要があります。
条件の切り分けにも、カスタム検索エンジン側のデモ実行で、
目的の検索結果が得られるかを、確認したうえでcxキーを指定すると、より確実です。
APIで取得している検索結果は、
上のように「カスタム検索エンジン」側で表示の確認ができる検索結果を、
APIから取得しているにすぎません。
まず第一段階として「カスタム検索エンジン」でデモ検索してご確認をされるとスムーズです。
(参考)Custom Search JSON API | Custom Search | Google Developers
本サイトで公開しているツールについては、
十分にテストは行っておりますが個人で作成している為、
潜在的なバグがないとは言い切れません。
その為、ツールを用いた結果については十分検証の上ご利用ください。
当サイトおよび、管理人は如何なる損害もその責を負いません。
当サイト内のコンテンツおよび画像において、
出典・引用の外部著作権者の明記がないものは、
すべて管理人による著作物です。
当サイトでご紹介しておりますコンテンツの著作権の放棄は致しません。
サイト内コンテンツを引用される際にはご連絡は不要です。
ただし、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
公開日:
最終更新日:2019/06/20