LoginSignup
118
73

More than 5 years have passed since last update.

Selenium禁止

Last updated at Posted at 2017-01-22

こんにちは!
今日もAPIがアレなWebサービスをアレしてますか!

W3C WebDriverでは、WebDriverによるアクセスを禁止できる

実は、W3Cが規定するWebDriver規格では、WebDriverによる自動アクセスであることを判別できるAPIが定義されています。
https://www.w3.org/TR/webdriver/#interface

具体的には、Webブラウザー上のJavaScriptですと navigator.webdriver の値で判別できます。この値は、現在の実装状況を見る限りでは、次のように動作することがデファクトになっているようです。

  • WebDriverによる自動アクセスの場合は true
  • 自動アクセスでない、ユーザー操作の場合は undefined

この値を応用すれば、WebDriverによるアクセスを禁止できるということになります。
例えば次のようなJavaScriptを、ページアクセス時 最初に実行させれば、WebDriverによるアクセスだけをアレなことにできるでしょう。

if (navigator.webdriver === true) {
   location.href = 'http://www.xvideos.com/';
}

なんでこんなAPI作るの?

上記のW3C文書が草稿であった一時期には「DOS攻撃の軽減に使える」と書かれていた時期がありました。
現在の版ではそこまで踏み込まず「WebDriverによって制御されていることをWebサイトに通知する」という表現にとどまっていますが、広い範囲でのセキュリティが念頭に置かれたAPIであることには変わりは無いだろうと思われます。

2016年には実際に、Microsoft Azure上でWebDriverを利用して、Amazonで不正な電子書籍を販売していた事件が発覚しています。規格化するうえで、セキュリティ上の理由から第三者による自動アクセスを制限したい、というサービス提供者が現れることを見越してその手段を用意することは当然の取り組みなのかもしれませんね。

アマゾンの電子書籍で不正に利益--「キャットフィッシング」詐欺の実態(CNET Japan)
http://japan.cnet.com/news/commentary/35089790/

対応状況を実際に調べてみた

navigator.webdriver は新しいAPIで、まだまだすべてのブラウザーに関して実装されているわけではありません。
実際に navigator.webdriver の値を確認したところ、2019年2月10日現在では次の通りです。

ブラウザー navigator.webdriver
Firefox via GeckoDriver 対応
Google Chrome/Chromium 対応
Internet Explorer 未対応
jBrowserDriver 未対応
Microsoft Edge 対応
Safari 対応
118
73
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
118
73