CSEのAPI実行編 (CSE/Googleカスタム検索エンジンAPI)
Googleカスタム検索エンジンAPIはプログラムから呼び出す前にWebでテストできます。
実際に独自のプログラムから呼び出しがうまくいかない場合の、
エラー原因の切り分けに有効です。
ここではAPI実行のテスト実行による確認手順をご紹介します。
本投稿は以下コンテンツの1記事になります。一連の流れは以下からご確認下さい。
私(本検証)は既にGoogleアカウントの取得と、
GoogleAPIコンソールへのアクセスの設定は済んでいますので、
途中、ログイン・登録等を促す画面が表示された場合は画面の指示に従ってください。
Googleカスタム検索エンジン(CSE)のAPI実行
これまでCSEの作成、CSEデモ実行、API呼び出しデモ実行と行ってきました。
これで実際にAPIからCSEを利用することができることが確認できました。
では、実際に呼び出しを行います。
一般的にはJavaScriptを利用されることが多いかもしれませんが、
JavaScriptの利用例は以下が参考になるかもしれません。
Using REST to Invoke the API | Custom Search | Google Developers
基本的にはURLでコンテンツを要求すれば、JSONデータを返してくれますので、
PHPからでも特に特別なことはする必要もなく、cURLでデータを取得できます。
※APIキー、CXキー部分は、各自取得し設定下さい。
※実際には検索キーは別途ユーザー入力など用途に応じて設計ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $keystr = "株式会社ケイ・オプティコム"; $cx = "{検索エンジンID}"; $key = "{APIキー}"; $url = "https://www.googleapis.com/customsearch/v1?key={$key}&cx={$cx}&q={$keystr}"; $ref = 'http://ipvx.info/provider-ip-zone-search/cse/api_call/'; $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 = json_decode($json); echo '<pre>'. print_r($search_result, true) . '<pre>'; |
実際の動作確認は以下で確認ができます。
http://ipvx.info/dev/cse_demo.php
APIの実行の検索キー固定ならいいが、パラメータを受け取って結果返す場合、APIキーをどう守る?
正直なところ、答えが見つかっていません。
カスタム検索エンジンAPIを利用して、ユーザーから検索キーワードを受け取り、
検索結果を表示するようなサービスは、そもそもGoogle検索と同じなので、
存在する意味はほぼないと思います。
どうしてもサイトで利用する場合には、
単純にカスタム検索エンジンの埋め込みを利用すれば済みます。
ただ、何らかの事情があってURLクエリパラメータに連動させて、
PHPプログラムに検索キーをPOST、GETして結果を受け取り(AJAXでも同じ)、
画面に何らかの表示をしたい場合、どう実装すれば安全になるでしょうか。
JavaScriptではないのでAPIキー自体は秘匿とすることができます。
しかしJavaScript(AJAX)からPOST,GET先のプログラムのURLは分かるわけです。
送りたい変数も分かってしまいます。
となると、PHP側で自サイトからの要求であるか、
BOTやクローラによる不正使用か?を判断する必要があります。
APIキーを秘匿としても、プログラムが外部から利用できては意味がありません。
この辺りの制限を考えていると、
現実的に一般の閲覧ユーザーによる通常利用と、
何らかの外部プログラムからのアクセスかは判断が難しく、
完全にAPIの不正利用を排除するのは困難だと感じます。
この件については以下で少し考えてみています。
(参考)Custom Search JSON API | Custom Search | Google Developers
本サイトで公開しているツールについては、
十分にテストは行っておりますが個人で作成している為、
潜在的なバグがないとは言い切れません。
その為、ツールを用いた結果については十分検証の上ご利用ください。
当サイトおよび、管理人は如何なる損害もその責を負いません。
当サイト内のコンテンツおよび画像において、
出典・引用の外部著作権者の明記がないものは、
すべて管理人による著作物です。
当サイトでご紹介しておりますコンテンツの著作権の放棄は致しません。
サイト内コンテンツを引用される際にはご連絡は不要です。
ただし、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
公開日:
最終更新日:2019/06/20