こんにちは!
今日も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 | 対応 |