フィルタリング機能付き検索サイト

情報技術科 No.40 村松奏耶


①研究の背景

 近年、インターネットを利用が増えている中で、詐欺サイトやフィッシングサイトなどの悪質なサイトや子供に悪影響を与えるサイトの増加が問題になっている。

インターネット犯罪の検挙数

 また、自分好みに機能をカスタマイズできるようにすることで、より快適に使うことができるようになるのではないか?


②仮説とねらい

・フィルタリング機能をつけることでスマートフォンやパソコン等を使うのに慣れていない人達が、悪質サイト等に騙される可能性が減り被害を減らすことができるのではないか。

・検索履歴などをもとに自分好みの検索結果を上位に表示することで使いやすくできないか。


③研究内容

実装の流れ

 1. Yahooから検索結果を取得する
 2. ログイン機能関係の実装
 3. 1で取得したURLをフィルタリング機能
 4. よく使うサイトを上位に表示する機能の実装


④技術的知識

使用言語 : Python3.9

 Flask → pythonのWebフレームワーク
 Request →URL先の内容を取得
 BeautifulSoup → htmlのタグの処理に利用
 Sqlalchemy → データベースへのアクセスに利用

ウェブサーバ : Apache2.4.25

使用機器 : RaspberryPi3 model B+


⑤取り組んだ内容

1.yahooから検索結果を取得しhtmlに表示する

  下記の図のような流れでURLを取得するようにした。

URL取得の流れ

データベース上に格納しておくことで次回同じ言葉を検索したときにもう一度Yahoo取得するのではなく、データベースから取り出すことで処理を高速化することができる。またYahooのサーバーの負担を減らすこともできる。

実際の表示結果

2. ログイン機能関係の実装

・ ユーザーのログイン・新規登録機能の実装
・ ユーザーの検索履歴を保存
・ログイン状態はcookieに保存する

検索履歴はデータベースに以下の形式で保存している

3. 1で取得したURLをフィルタリングする機能の追加

 今回はブラック/ホワイトリスト方式とカテゴリフィルタリング方式の二種類を用いてフィルタリングをする

  • ブラック/ホワイトリスト方式

➣悪質サイトが掲載されているwebサイトのURLなどを元にブラックリストを作成する。
➣ホワイトリストは使用者が設定をする。また、複数回アクセスしたことがあるサイトも自動的に登録されるようにする

  • カテゴリフィルタリング方式

NGワードをいくつかのカテゴリごとに分けてデータベースにまとめ、カテゴリごとにフィルタリング機能のオン/オフをできるようにして、使用者に合わせられるようにする

ブラックリストは下記の方式でデータベースに保存している

ブラック/ホワイトリストの保存形式

カテゴリーのオン/オフとホワイトリストの追加は以下のページから設定できるようにしました

設定ページ

4. 検索履歴をもとに使用者に合った上位に表示するようにする

よく使うサイトを登録できるようにして、そのサイトを優先的に表示するようにする。
また、使用者の検索結果から使用頻度の高いサイトのURLも優先的に表示するようにする。

例) Wikipediaをよく見る人だったらWikipediaを最上位に表示する

  • アクセス履歴をデータベースに保存する

ユーザーがどのサイトにアクセスしたかを確認するためにジャンプページを作成した。
下記のurlを経由することでデータベースへの書き込みが行われる

https://rigru88.orz.hm/jump?url=https://ja.wikipedia.org/

アクセス履歴のデータベース

また、実際の動作は以下のようになる

アクセス履歴がない場合
アクセス履歴がある場合

⑥結果

・最初に予定していた機能は実装できた
・ブラック/ホワイトリストを用いて検索結果を弾くことはできるようにはなったが、NGワードはタイトルでのみ判定しているため精度が悪くなってしまった
・アクセス履歴からウェブサイトの表示順を変える機能は上手くできた

⑦感想

この課題研究を通して、サーバの構築からPythonを用いたウェブサイトの作成まで学んで、自分で一からものを作っていくことの大変さを改めて知ることができました。3年間学んだことを全部活かすことはできなかったが、ある程度は完成させることができた良かった。

コメントを残す

メールアドレスが公開されることはありません。