1. Qiita
  2. 投稿
  3. Selenium
  • 11
    いいね
  • 0
    コメント

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

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

実は、W3Cが策定中のWebDriver規格では、WebDriverによる自動アクセスであることを判別できるAPIが定義されています。
https://w3c.github.io/webdriver/webdriver-spec.html#interface

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

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

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

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

なんでこんなAPI作るの?

上記のW3C文書には「DOS攻撃の軽減に使える」と書いてあります。

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

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

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

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

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