🐡

Web Risk APIを使ったフィッシングサイト対策

2023/02/17に公開

はじめに

みなさんはGoogleが提供する「Web Risk API」についてご存知でしょうか?
Web Risk APIはフィッシングサイトを判定したり提出ができるAPIで「Google Safe Browsing」という名前のサービスでよく知られています。
かつてはベータ版として一部のユーザに公開されていたのですが、現在では誰でも無料で簡単に使えるようになっています。
本記事では、Web Risk APIの利用手順を解説していきます。

GCPプロジェクトの準備

はじめにgcloudコマンドのインストールを行います。
https://cloud.google.com/sdk/docs/install?hl=ja

Macの場合は以下のようにインストールすることができます。

brew install google-cloud-sdk

インストールが完了したらコマンドラインからコンソールへログインします。

gcloud auth login

以下のようなログイン画面が表示されるのでGoogleアカウントでログインしましょう

続いてブラウザからGCPのコンソールへログインしてプロジェクトの作成を行います。
https://console.cloud.google.com/welcome?organizationId=0

画面左上のプロジェクトの選択をクリックして、「新しいプロジェクト」ボタンをクリックします。

新しいプロジェクトダイアログが表示されたら適当なプロジェクト名を入力して作成ボタンを押してください。
今回は「phishing-hunter」という名前のプロジェクトを作成しました。

プロジェクト作成後にプロジェクトIDを確認しておきましょう。
以下の例ではプロジェクトIDが「phishing-hunter-377609」となっています。

サービスアカウントの作成

プログラムにGCPアクセス権を付与するためにサービスアカウントを作成します。
はじめに以下の環境変数を設定しておいてください。
PROJECT_IDはプロジェクト作成時に確認したプロジェクトIDが入ります。

export PROJECT_ID=phishing-hunter-377609
export SA_NAME=webrisk-api

プロジェクトIDを固定します。

gcloud config set project $PROJECT_ID

サービスアカウントを作成します

gcloud iam service-accounts create ${SA_NAME} --display-name "webrisk api service account"

サービスアカウントに接続するための鍵を生成します。
以下を実行するとsa.jsonという名前の鍵ファイルが生成されます。

gcloud iam service-accounts keys create sa.json --iam-account ${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Submission API

サービスアカウントが準備できたら、webrisk apiをPythonから利用するために必要なライブラリをインストールします。

pip install google-cloud-webrisk

次のようなコードを記述します。

  • submit.py
from google.cloud import webrisk_v1
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './sa.json'
project_id = os.environ["PROJECT_ID"]

webrisk_client = webrisk_v1.WebRiskServiceClient()

submission = webrisk_v1.Submission()
submission.uri = "https://restriction-netflix-support.com"

request = webrisk_v1.CreateSubmissionRequest()
request.parent = f"projects/{project_id}"
request.submission = submission

response = webrisk_client.create_submission(request)
print(f"Submission response: {response}")

上記のコードを実行してみましよう。
以下のように表示されたらWebrisk API経由でフィッシングサイトの提出が完了します。

$ python submit.py
Submission response: uri: "https://restriction-netflix-support.com"

Submission APIの料金

Submission APIは2023年2月時点で月に 1 ~ 100 回まで無料で実行できるそうです。
それ以上のAPI呼び出しが発生する場合にはCloud セールスチームに問い合わせが必要です。
https://cloud.google.com/web-risk/pricing?hl=ja

まとめ

今回はフィッシング詐欺対策やテイクダウンを目的としたGoogle Web Risk APIの使い方について解説しました。
通常は以下のフォームから手動でフィッシングサイトを報告することができますが、クローラー等でフィッシングサイトの収集を自動化している場合はWeb Risk APIを使って自動的に報告することができるようになりました。
https://safebrowsing.google.com/safebrowsing/report_phish/?hl=ja
この記事を読んで、少しでもお役に立てたなら幸いです。何か質問やご意見がありましたら、お気軽にご連絡ください。

参考

https://cloud.google.com/web-risk/docs/submission-api?hl=ja

GitHubで編集を提案

Discussion