ハマログ

株式会社イーツー・インフォの社員ブログ

「レビュー工場」のようなものの作り方

レビュー工場とは

少し前の記事ですが、NHKで取り上げていて目に止まった記事。
https://www3.nhk.or.jp/news/html/20191002/k10012108791000.html

要点をまとめると、
・Amazonで不正にレビューをつけて自社商品の評価をあげたり、
 競合商品の評価を下げたりという印象操作をしている奴らがいる。
・その実態は、大量のスマートフォンを自動操作して
 不正レビューを大量生産する「レビュー工場」だったのだ!
というお話。

この記事で扱うこと

この自動操作ってどうやってやるの?
がこの記事のテーマです。

※この記事では、「やらせレビュー」の是非については扱いません。あくまで技術的な話です。
※ライブラリの使い方などはあまり詳しく書きません。
 世の中に詳しい記事がたくさんあるのでそっちをみてください。
 こういったものを実現するにはこういう方法があるよって紹介です。

どうやって作るのか

結論から言うと、
Seleniumで実現可能です。
(スマホ上で動かすにはまたちょっと工夫が必要ですが・・・)

Seleniumとは?

・もともとはテスト自動化の為のツール。
・JavaやRubyやPythonでプログラミングして動的に動かすことが可能。
・あらかじめプログラミングした内容に沿って、自動でブラウザを動かす。

どんな感じでプログラムを書くのか?

Ruby + Watir(SeleniumをRubyから使えるようにしたバインディング)
で書いた例を載せます。
あくまで、こんな感じで簡単に書けるよーってだけなので詳しい使い方などは別のサイトで調べてみてください。
公式ドキュメント:http://watir.com/

■できる動作の例
・ブラウザを立ち上げる

browser = Watir::Browser.new :chrome

これだけです。これでchromeが立ち上がります。
ここで立ち上がらなければ、以下を確認してください。
・chromedriverが存在しているか
・chromedriverにpathが通っているか
※なければここから https://chromedriver.chromium.org/downloads
※rubyのbinがあるフォルダにchromedriverのバイナリを置いちゃうのが楽。

Watir::Browserのインスタンスがブラウザの1タブに紐づきます。
複数インスタンス作れば複数画面同時実行が可能。

・URL指定で飛ぶ

browser.goto(“https://www.e2info.co.jp/“)

・クリック

browser.div(id: ‘contents’).click

id指定、Class指定、任意の属性指定などが可能。
jQueryのセレクタに近い感覚。

・フォーム入力

browser.text_field(name: ‘Email’).value = “test@example.com”

・フラッシュ
通常のブラウザ操作では行わない動作。
指定した箇所の背景色を変えて目立たせる。
テストケースの実行時などに「今どこを動かしているのか?」が見えるようにするための機能

browser.div(id: ‘contents’).flash

・書いてある内容の取得

<span id=”alert”>こんにちは!</span>

こんなDOMがあったら、これで

str = browser.span(id:’alert’).text
p str

“こんにちは!”と出力される。

実際の使い勝手はどうなのか

かなりいろいろな動作ができて、便利です。
UA変えたり、ChromeのDeveloperToolにあるスマホシミュ立ち上げるとかも普通にできます。

ちなみに、実際にSelenium + Watir使って
自動巡回システム組んでみた事があります。
(レビュー工場ではない)

主に以下の理由から、長時間安定して自動稼働させ続けるのは難しかったです。

・イレギュラーケースが結構ある。(サイトのDOM構造変わってるとか)
・キャッシュ、プロファイルなどのゴミが残る。
・ブラウザ接続プロセスを定期的に再起動しないと不安定になる。
など。

きっとレビュー工場作った人も苦労したはずで、そこには独自ノウハウがあるのでしょう。

悪用厳禁!

触れないと書きましたが、一応念押し。

最初に説明した通り、Seleniumはあくまでテスト自動化のためのツールです。
しかし、どんな道具も使い方次第で悪の兵器になり得ます。

悪い使い方の例

レビュー工場

Seleniumでレビュー工場が作れると思います。
しかし、私はこれを推奨しません。
正直、やらせレビューは迷惑です。

・ブラウザゲームのBOT

作れるでしょうね。
ブラウザ上で動くものなら工夫次第でなんでも触れますから。
しかし、最近はロボット検知技術も各社頑張っているので、
中途半端な実装ではすぐ見抜かれるでしょうね。

・シングルページアプリケーションなど、JavaScriptの動作を必要とするWebサイトのスクレイピング

これも可能です。
正直、悪用ってほどではないのですが、
個人的にスクレイピング行為があまり好きではないので、推奨しません。

嫌いな会社のリスティング広告をクリックしまくって広告費使い潰してやる!

まさに極悪非道の発想。
普通に訴えられます。最悪刑事事件になります。

さいごに

正直、知ってる人にとっては「なんで今更Selenium?」ってくらい、
Selenium自体は古くから存在する物です。

しかし、最近の機械学習とかと組み合わせて使ったら
まさに悪の兵器がお手軽に作れてしまう気がして、怖いのです。
(問題はお手軽にってところ)
世の中にはこんな危うい道具があるんだよってことを、
知らない人向けに伝える意味も込めて書きました。

次回は、「やらせレビューの見抜き方」とか書きたいなって思います。
ではまた!

  ドビー   2019年12月23日


関連記事

新しくなったGoogleサイト

Googleサイトが新しくなりました。 従来のGoogleサイト。古いかんじです…

ガリガリ君神経衰弱つくりなおしました!

以前から公開していた、ガリガリ君公式アプリ「ガリガリ君 神経衰弱」をSwift2…

StreetView Image APIで、画像がないときに代替画像を表示する方法

Street View Image APIを利用すると、JavaScriptのコ…


← 前の投稿

次の投稿 →