狠狠撸

狠狠撸Share a Scribd company logo
はじめての鲍蝉别谤-础驳别苍迟文字列
うさみけんた@ぞ
2015年5月21日 pixiv Inc.
お前誰よ
? うさみけんた/tadsan/ぞ
? 通りすがりのPHPer
? さいきんあまりRuby書いてない
? すきなHTTPヘッダはAccept-Language
pixiv.net
touch.pixiv.net www.pixiv.net
どうやって見分けるの?
HTTP User-Agent Header
Hi, I’m
Mozilla/5.0 (iPhone; CPU iPhone OS 8_0
like Mac OS X) AppleWebKit/600.1.3
(KHTML, like Gecko) Version/8.0 Mobile/
12A4345d Safari/600.1.4
iPhone 6 Plus
Hi, I’m
Mozilla/5.0 (Linux; Android 4.4.2; GT-
I9505 Build/JDQ39) AppleWebKit/537.36
(KHTML, like Gecko) Version/1.5 Chrome/
28.0.1500.94 Mobile Safari/537.36
Android Browser
Hi, I’m
Mozilla/5.0 (Macintosh; Intel Mac OS X
10_10_3) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/43.0.2357.65 Safari/537.36
OS X Chrome 43
Hi, I’m
Mozilla/5.0 (Windows NT 10.0)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/39.0.2171.71 Safari/537.36 Edge/
12.0
Windows 10 Edge
超ざっくり用語集
HTTP… Webでデータをやりとりするルールのこと
    ブラウザとサーバーがやりとりする
Chrome… グーグル社が開発したブラウザ
Firefox… モジラ財団が開発したブラウザ
Opera… オペラ社が開発したブラウザ
Safari… アップル社が開発したブラウザ
超ざっくり用語集
NCSA Mosaic… 最初期のすごいブラウザ
NetScape… むかし人気だったブラウザ
エンジン… ブラウザのコアのことだよ
Mozilla… NetScapeのことだよ
Internet Explorer… MS社が作ったブラウザ
KHTML… KDEプロジェクトが作ったエンジン
Gecko… モジラ財団が作ったエンジン
WebKit… Apple社がKHTMLから派生したエンジン
Blink… Google社がWebkitから派生したエンジン
EdgeHTML… MS社の最新エンジン
Hi, I’m
Mozilla/5.0 (Windows NT 10.0)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/39.0.2171.71 Safari/537.36 Edge/
12.0
Windows 10 Edge
モジラだよ
WKだよ
KHTMLだよ
Geckoぽいよ
Chrome39だよ Webkit537ベースだよ
Hi, I’m
Mozilla/5.0 (Windows NT 10.0)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/39.0.2171.71 Safari/537.36 Edge/
12.0
Windows 10 Edge
モジラだよ
WKだよ
KHTMLだよ
Geckoぽいよ
Chrome39だよ Webkit537ベースだよ
結局おめーは誰なんだよ
_人人人人人人人_
> 歴史的経緯 <
 ̄Y^Y^Y^Y^Y^Y ̄
地層のように積み重なった
呪詛のような歴史的経緯の山
みんなブラウザ判定が好き
? ProxyとかJavaScriptとかWebサーバーとか
? 新参者のブラウザは互換性のためと称して、?
自分の特徴は入れつつ誤認されたがる
? 機能の互換性が十分ならばWin-Win(?)
? その結果、最新ブラウザが赤の他人を?
詐称し続ける悪循環…
? 微妙な非互換でライブラリ作者が泣きを…
Real World User-Agent
よく来るBotと仲良しになる
? Googlebot?
https://support.google.com/webmasters/answer/
182072?hl=ja
? Twitterbot?
https://dev.twitter.com/cards/getting-started
? bingbot?
http://www.bing.com/webmaster/help/which-
crawlers-does-bing-use-8c184ec0
PC版とスマートフォン版
? スマートフォンだったら、touch.pixiv.netに、
それ以外だったらwww.pixiv.netに飛ばせばえ
えやん?
? 「スマートフォンだったら」は容易ではない
? WindowsCE? BlackBerry? FirefoxOS?
? Android/Windowsタブレットはどうするの?
? ゲーム機は?
状況を整理しよう
? Android, iOSならtouch版に移動させる
? Mobileが含まれるか判定すると良いが、?
古いAndroid端末には含まれにあので別途判定
? タブレット端末やゲーム機ではどちらを利用す
るか好みが分かれるので、強制転送はかけない
? 前回UserAgentの判定を調整したときには、?
PC版とtouch版のどちらが好きな方からも?
意見を頂戴した
いろんなユーザーエージェント
? Apache-HttpClient (いっぱい来る)
? JavaのHTTPライブラリだよ
? PCサイトビューアー
? フィーチャーフォンのブラウザだよ
? テキストブラウザ
? テキスト端末でWebを閲覧できるブラウザ
PHP
<?php
function isMobile($UA) {
return (stripos($UA, 'mobile') !== false
stripos($UA, 'android') !== false);
}
var_dump(isMobile($_SERVER['HTTP_USER_AGENT']));
PHP
<?php
function isTouchDevice($UA) {
return (stripos($UA, 'nintendo') !== false || // 3DS, Wii
stripos($UA, 'touch') !== false || // Win tablet
stripos($UA, 'brew') !== false || // PCサイトビューアー
stripos($UA, 'playstation') !== false // PSP, PSX
);
}
var_dump(isTouchDevice($_SERVER['HTTP_USER_AGENT']));

More Related Content

はじめての鲍蝉别谤-础驳别苍迟文字列