【制限・課金もなし!?】Custom Search Site Restricted JSON API なら・Googleカスタム検索エンジン
「Custom Search Site Restricted JSON API」のページに、
魅力的な記述がされてAPIの紹介がされています。
カスタム検索エンジンのサイト内検索利用の上限がない利用方法が認められています。
これまで100クエリ/1dayで制限されていたカスタム検索エンジンAPI利用が上限撤廃で利用できます(条件あり)
記事の更新日も「最終更新日: 7月 12, 2018」となっている為、まだ新しい印象です。
そして、課金に必要なAPIキーの設定もないという事から、
条件によっても課金もないかもしれないです。(人柱中・バグかもしれない)
目次
Custom Search Site Restricted JSON API なら課金制限なしか!?
本当にそうなのか?と言う点は以下を読めば分かります。
Custom Search Site Restricted JSON API
This document describes how to use the Custom Search Site Restricted JSON API.
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.
Making a request
Making a request to Custom Search Site Restricted JSON API is similar to making a request to JSON Custom Search API; however, the URI is different. The format for the Custom Search Site Restricted JSON API is
https://www.googleapis.com/customsearch/v1/siterestrict?[parameters]
The [parameters] are the same as the JSON Custom Search API parameters
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のカスタム検索サイトについて
カスタム検索エンジンが特定のサイト(10個以下)の検索に限定されている場合は、カスタム検索サイトのJSON APIを使用できます。 このAPIはJSONカスタム検索APIと似ていますが、このバージョンには日次クエリ制限がありません。 このバージョンを使用するには、カスタム検索エンジンのコントロールパネルの[検索するサイト]セクションで検索するサイトが10個以下で、グローバルトップレベルのドメインパターンがなく、[ウェブ全体を検索]が設定されていることを確認してくださいオフにします。
カスタム検索サイトの制限付きJSON APIエンドポイントを使用する場合、カスタム検索エンジンの設定が上記のサイト制限ルールに準拠しないように変更された場合、カスタム検索サイトの制限付きJSON APIは予期した結果を返さない可能性があります。
要求をする
カスタム検索サイトへのリクエストの制限JSON APIの制限は、JSONカスタム検索APIへのリクエストの作成と似ています。 ただし、URIは異なります。 カスタム検索サイトの制限付きJSON APIの形式は次のとおりです。
https://www.googleapis.com/customsearch/v1/siterestrict?[parameters]
[parameters]はJSON Custom Search API のパラメータと同じです
価格設定
カスタム検索サイト制限されたJSON APIリクエストには1000クエリあたり5ドルの費用がかかり、毎日のクエリ制限はありません。APIコンソールで請求にサインアップすることができます。
(抜粋引用)Custom Search Site Restricted JSON API | Custom Search | Google Developers
いやいや、最後に一応、有料って書かれているのですが・・・後述の通り、
これまで必要だったAPIキーが不要なURLで呼び出しが可能なのです。
おそらく条件に合致していれば、非課金と思われます。(人柱中)
APIキーを設定していなくて、どうやって請求するの?と言う訳です。(バグじゃなければね)
書かれている通り、実際に設定を行います。
といっても、自サイトや特定のサイトを対象に検索利用している場合は、
おそらくこれまでの設定と変わらない事でしょう。
カスタム検索エンジンの新規作成と設定
では条件を満たすカスタム検索エンジンを新たに作成します。
以下にアクセスして新規に作成します。
https://cse.google.com/cse/create/new
検索するサイト、言語、検索エンジンの名前を入力し「作成」をクリックします。
作成が完了したら、次に行う作業の選択肢が表示されます。
ここでは作成状態の確認の為、コントロールパネルを選択します。
コントロールパネルで先ほど入力した「検索するサイト」が、
正しく設定されている事を確認し、
また追加して検索したいサイトがあるようなら追加します。(10以下)
またトップレベルドメインパターン(おそらくは、*.jpや*.com、*.netのような広範囲指定と思われます)が、
含まれていない事も併せて確認します。
次にスクロールして下部の「ウェブ全体を検索」がオフ表示になっていることを確認します。
ちなみに今利用しようとしている
「Custom Search Site Restricted JSON API」に関しての情報へのリンクが矢印で示した部分です。
設定に問題がなければ右側の検索窓にキーワードを入力して、
実際にテスト検索を行って、意図する結果が得られているか確認します。
問題なければAPIに指定する「cxキー」こと「検索エンジンID」をボタンを押して確認します。
以上で設定は終了です。
ちなみに「Custom Search Site Restricted JSON API」で利用する際に、
APIキー(認証情報)をパラメータに利用すると思っていた為、
念のため、使用する予定のAPIキーの課金状態も確認しました。
ですが、後述の通りAPIキーはパラメータに含まなくても結果を得ることができます。
その為、課金状態は特に意識する必要はなさそうです。
ただ、カスタム検索エンジンAPIのトラフィックには、
「search.cse.siterestict.list」というメソッドが表示されトラフィックが検出されていました。
あれこれ試した際に記録されたか(APIキー指定で呼び出した際?)
以下のAPI呼び出しを試した時に記録されたのかは定かではありません。
Using REST to Invoke the API | Custom Search | Google Developers
カスタム検索エンジンの作成が完了しましたので、
取得したcxキーでAPIの呼び出しを行います。
Custom Search Site Restricted JSON API 実際の呼び出し例
これ。
単なるURLによるアクセスで、
結果がJSONで戻ると言う事で特に何かをする必要もありません。
検索エンジンIDを取得してURLに指定します。
[parameters]部分はこれまで通りですとのことです。
URLから直接実行し要求する例(非推奨)
https://www.googleapis.com/customsearch/v1/siterestrict?[parameters]
実際には以下のようになりますが、
条件に合致している分には、APIキーがなくてもいいようなのです。
必要なのは「?q=…&cx=…」と2パラメータで動作しています。※2018/07/21現在。
APIキーがないなら、課金も発生しないものと思われます。
本当なんだろうか??バグ?
APIらしくプログラムからの利用例
このURLを利用して、PHPなどからプログラム実行すれば、
目的のサイト内検索は制限なく利用ができることになります。
やる事はURLを変えるだけ。
サンプルソースは以下の様なものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $keystr = "株式会社ケイ・オプティコム"; $cx = "014810786654675656813:cvpsguito70"; $url = "https://www.googleapis.com/customsearch/v1/siterestrict?q={$keystr}&cx={$cx}"; $ref = 'http://ipvx.info/'; $ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"; //JSONを要求する $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_URL, $url ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //for SSL curl_setopt($ch, CURLOPT_REFERER, $ref); //REFERER curl_setopt($ch, CURLOPT_USERAGENT, $ua); //USERAGENT $json = curl_exec ( $ch ); //$search_result = file_get_contents($url, true); $search_result = json_decode($json); echo "<!DOCTYPE html><html lang='ja'><head><meta charset='utf-8'/></head><body>"; echo "HTTP_REFERER-> ". $_SERVER['HTTP_REFERER'] ."<br/>"; echo "このPHPはcURLでREFERERを「http://ipvx.info/」として実行しています。(正規)"; echo '<pre>'. print_r($search_result, true) . '<pre>'; echo "</body></html>"; |
実際に上記を当サイトから実行すると以下のように確認ができます。
http://ipvx.info/dev/cse_demo_css_rest.php ←このサイトのドメイン
自分のAPIキーかつ、制限なしなので、
偽装する必要も、偽装される必要もないのですが、別ドメインからリファラ偽装で実行してみます。
※問題ありませんが、この場合制限が本当にないなら、偽装する必要もないでしょうね。
http://rensrv.com/dev/cse_demo_css_rest.php ←別サイトのドメイン
いかがでしょうか。
これまでのAPIと変わらずJSONで結果が得られます。
URLを変更して「Custom Search Site Restricted JSON API」の
規定通りに要求すれば制限なく実行可能(と言う事のようです)
それでもkeyの有無関わらず、検索結果取得上限100件は変わらない
クエリの発行上限は撤廃されているのですが、
1クエリで得られる検索結果は10件です。
次の10件、次の10件と「$queries[“nextPage”][0][“startIndex”]」を頼りに、
次々にページ遷移をしてデータの取得ができます。
しかし、10ページ目が結果を得られる上限になっていて、
10(件) x 10(ページ) = 100(件) がカスタム検索エンジン(API問わず)で得られる
検索結果の上限になっています。
これはカスタム検索エンジンを利用する上の制限です。
回避する方法は今のところなさそうです。
このまま利用して、様子を継続して見ていきます。
何かありましたら追ってご紹介いたします。
日進月歩、色々なサービスが出てきて、勉強を止める時が一生来ませんね。
死ぬまでプログラム書いているんだろうか。
本サイトで公開しているツールについては、
十分にテストは行っておりますが個人で作成している為、
潜在的なバグがないとは言い切れません。
その為、ツールを用いた結果については十分検証の上ご利用ください。
当サイトおよび、管理人は如何なる損害もその責を負いません。
当サイト内のコンテンツおよび画像において、
出典・引用の外部著作権者の明記がないものは、
すべて管理人による著作物です。
当サイトでご紹介しておりますコンテンツの著作権の放棄は致しません。
サイト内コンテンツを引用される際にはご連絡は不要です。
ただし、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
公開日:
最終更新日:2019/06/20