navigator.userAgent偽装準備
無料動画 GyaO!をLinuxでも利用したい.
GyaO!「使い方ガイド」をご利用いただくには、以下の環境が必要です。
Yahoo! JAPAN ヘルプセンター
Chromium on Lubuntu 13.10では,OSが不明とされ,利用できない.世に出ているUserAgent詐称コードはHTTPヘッダ情報をのみ書き換える.GyaO!はjavascriptのnavigator.userAgentを参照するため,効果が無い.
Firefoxでは別途UAを詐称した上でUser-Agent JS Fixer :: Add-ons for Firefoxを適用することでクリアできるようだ.
OperaはSilverlightをインストールした上でuserscriptを導入し,打開していたようだ.kyu3 - OperaでGyao!を見られるようにするUser JSを追加.今では標準で回避策が用意されているようだ.GyaOを観たい - Opera Wiki.(Windowsの話じゃん)
Chromiumでの視聴を諦め,「Firefox+UA詐称+User-Agent JS Fixer」が正解な気がしてきた.
bootstrap.js
- バージョン番号:1.3
- 作者:BlinD-HuNTeR
- 更新日:July 2, 2013
const Ci = Components.interfaces; var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService); function onDocumentCreated(aSubject, aTopic, aData) { aSubject = aSubject.defaultView; if (aSubject) var aChannel = aSubject.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShell).currentDocumentChannel; if (aChannel instanceof Ci.nsIHttpChannel) { var navigator = aSubject.navigator; try { var userAgent = aChannel.getRequestHeader("User-Agent"); } catch (e) {} if (navigator.userAgent != userAgent) Object.defineProperty(XPCNativeWrapper.unwrap(navigator), "userAgent", {value : userAgent, enumerable : true}); } } function startup(data, aReason) { observerService.addObserver(onDocumentCreated, "document-element-inserted", false); } function shutdown(data, aReason) { observerService.removeObserver(onDocumentCreated, "document-element-inserted"); } function install(data, aReason) {} function uninstall(data, aReason) {}User-Agent JS Fixer :: Add-ons for Firefox
86250.user.js
- バージョン番号:0.3
- 作者:sweetmagic
- 更新日:Oct 4, 2010
- 86250.user.js
// ==UserScript== // @name OperaFix GyaoYahooDouga // @version 0.3 // @description Version 0.3 (OperaFixギャオヤフー) // @namespace OperaFix GyaoYahoo (cc) http://creativecommons.org/licenses/by-nc/2.1/jp/deed.ja // @author Kurojitosan (SpecialThanks hogehoge) // @include http://player.gyao.yahoo.co.jp/* // @include http://gyao.yahoo.co.jp/* // @include http://*.yahoo.co.jp/* // @exclude http://acid3.acidtests.org/* // ==/UserScript== if(0<=navigator.userAgent.indexOf('Opera')){ if(location.hostname=='gyao.yahoo.co.jp') { window.opera.defineMagicFunction('isCommonEnvCheck',function(){return(true);}); window.opera.defineMagicFunction('isNormalPlayerCheck',function(){return(true);}); } }Source for "OperaFix GyaoYahooDouga" - Userscripts.org
env-min.js
http://i.yimg.jp/images/help/env/1.2.1/env-min.jsをOnline JavaScript beautifierで整形した.
// env-min.js 1.2.1 /* Copyright (c) 2011, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html */ if (typeof YAHOO == "undefined" || !YAHOO) { var YAHOO = {} } YAHOO.namespace = function () { var b = arguments, g = null, e, c, f; for (e = 0; e < b.length; e = e + 1) { f = b[e].split("."); g = YAHOO; for (c = (f[0] == "YAHOO") ? 1 : 0; c < f.length; c = c + 1) { g[f[c]] = g[f[c]] || {}; g = g[f[c]] } } return g }; YAHOO.namespace("JP.lib.env"); YAHOO.JP.lib.env = window.YAHOO.JP.lib.env = { os: { name: decodeURI("%E4%B8%8D%E6%98%8E"), code: "na" }, browser: { name: decodeURI("%E4%B8%8D%E6%98%8E"), version: 0, code: "na" }, flash: { isInstall: false, version: 0 }, wmp: { isInstall: false, version: 0 }, activex: { enable: false } }; (function () { var ENV = YAHOO.JP.lib.env; var xLBua = navigator.userAgent; var xLBdcap = document.all; var xLBlcap = document.layers; var xLBgcap = document.getElementById; var xLBopr = window.opera; if (!xLBdcap && xLBgcap && !xLBopr) { if (xLBua.indexOf("Netscape6") !== -1 || xLBua.indexOf("Netscape/7") !== -1) { ENV.browser.name = "Netscape Navigator"; xLBtmp = xLBua.split("/"); xLBtmpc = xLBtmp[3].split(" "); ENV.browser.version = parseFloat(xLBtmpc[0]); ENV.browser.code = "ns6" } else { if (xLBua.indexOf("Chrome/") !== -1) { ENV.browser.name = "Google Chrome"; ENV.browser.code = "chrome"; ENV.browser.version = parseFloat(xLBua.split("Chrome/")[1].split(" ")[0]) } else { if (xLBua.indexOf("KHTML") !== -1) { ENV.browser.name = "Safari"; ENV.browser.code = "safari"; xLBtmp = xLBua.split("/"); xLBtmpc = xLBtmp[2].split(" "); ENV.browser.version = parseFloat(xLBtmpc[0]); if (ENV.browser.version >= 525) { xLBtmp = xLBua.split("Version/")[1].split(" ")[0]; ENV.browser.version = xLBtmp.split(".")[0] + "." + xLBtmp.split(".")[1] } else { if (ENV.browser.version >= 520) { ENV.browser.version = "3.0" } else { if (ENV.browser.version >= 412) { ENV.browser.version = "2.0" } else { if (ENV.browser.version >= 312) { ENV.browser.version = "1.3" } else { if (ENV.browser.version >= 125) { ENV.browser.version = "1.2" } else { if (ENV.browser.version >= 100) { ENV.browser.version = "1.1" } else { if (ENV.browser.version >= 85) { ENV.browser.version = "1.0" } else { ENV.browser.version = "" } } } } } } } } else { if (xLBua.indexOf("Firefox") !== -1) { ENV.browser.name = "Firefox"; ENV.browser.code = "mozilla"; xLBtmp = xLBua.split("Firefox/"); xLBtmpc = xLBtmp[1].split(" "); ENV.browser.version = parseFloat(xLBtmpc[0]) } else { ENV.browser.name = decodeURI("%E3%81%9D%E3%81%AE%E4%BB%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6"); ENV.browser.code = "other"; ENV.browser.version = "" } } } } } if (xLBlcap) { ENV.browser.name = "Netscape Navigator"; xLBtmp = xLBua.split("/"); xLBtmpc = xLBtmp[1].split(" "); ENV.browser.version = parseFloat(xLBtmpc[0]); ENV.browser.code = "ns4" } if (xLBdcap && xLBgcap && !xLBopr) { ENV.browser.name = "Internet Explorer"; xLBtmp = xLBua.split("MSIE "); xLBtmpc = xLBtmp[1].split(";"); ENV.browser.version = parseFloat(xLBtmpc[0]); ENV.browser.code = "ie5" } if (xLBdcap && !xLBgcap) { ENV.browser.name = "Internet Explorer"; xLBtmp = xLBua.split("MSIE "); xLBtmpc = xLBtmp[1].split(";"); ENV.browser.version = parseFloat(xLBtmpc[0]); ENV.browser.code = "ie4" } if (xLBopr) { ENV.browser.name = "Opera"; ENV.browser.code = "opera"; ENV.browser.version = "" } if (xLBua.indexOf("Win") !== -1) { if (xLBua.indexOf("95") !== -1) { ENV.os.code = "win95"; ENV.os.name = "Windows 95" } if (xLBua.indexOf("98") !== -1) { ENV.os.code = "win98"; ENV.os.name = "Windows 98" } if (xLBua.indexOf("4.90") !== -1) { ENV.os.code = "win98"; ENV.os.name = "Windows ME" } if (xLBua.indexOf("NT 4.0") !== -1) { ENV.os.code = "winNT4"; ENV.os.name = "Windows NT 4.0" } if (xLBua.indexOf("NT 5.0") !== -1) { ENV.os.code = "winNT5"; ENV.os.name = "Windows 2000" } if (xLBua.indexOf("NT 5.1") !== -1) { ENV.os.code = "winNT5"; ENV.os.name = "Windows XP" } if (xLBua.indexOf("SV1") !== -1) { ENV.os.code = "winNT5s"; ENV.os.name = "Windows XP SP2, SP3" } if (xLBua.indexOf("IEMB3") !== -1) { ENV.os.code = "winNT5s"; ENV.os.name = "Windows XP SP2, SP3" } if (xLBua.indexOf("NT 5.1") !== -1 && xLBua.indexOf("MSIE 7") !== -1) { ENV.os.code = "winNT5s"; ENV.os.name = "Windows XP SP2, SP3" } if (xLBua.indexOf("NT 5.1") !== -1 && xLBua.indexOf("MSIE 8") !== -1) { ENV.os.code = "winNT5s"; ENV.os.name = "Windows XP SP2, SP3" } if (xLBua.indexOf("NT 5.2") !== -1) { ENV.os.code = "winNT5.2"; ENV.os.name = "Windows Server 2003, Windows XP x64 Edition" } if (xLBua.indexOf("NT 6.0") !== -1) { ENV.os.code = "winNT6"; ENV.os.name = "Windows Vista" } if (xLBua.indexOf("NT 6.0") !== -1 && (xLBua.indexOf("Win64") !== -1 || xLBua.indexOf("IA64") !== -1 || xLBua.indexOf("x64") !== -1)) { ENV.os.code = "winNT6"; ENV.os.name = "Windows Vista x64 Edition" } if (xLBua.indexOf("NT 6.1") !== -1) { ENV.os.code = "winNT6.1"; ENV.os.name = "Windows 7" } if (xLBua.indexOf("NT 6.2") !== -1) { ENV.os.code = "winNT6.2"; ENV.os.name = "Windows 8" } } if (xLBua.indexOf("Mac OS X") !== -1) { ENV.os.code = "mac"; ENV.os.name = "Mac OS X" } else { if (xLBua.indexOf("Mac") !== -1) { ENV.os.code = "mac"; ENV.os.name = "Mac OS" } } var wmplugin = (navigator.mimeTypes && navigator.mimeTypes["video/x-ms-asf"]) ? navigator.mimeTypes["video/x-ms-asf"].enabledPlugin : 0; var wmpObj7 = '<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="1" height="1" id="WMP7" viewastext></object> \n<script language="VBScript"> \non error resume next \nWMP7obj = (WMP7.URL = "") \n<\/script> \n'; var wmpObj6 = '<object classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" width="1" height="1" id="WMP6" viewastext></object> \n<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="1" height="1" id="WMP7" viewastext></object> \n<script language="VBScript"> \non error resume next \nWMP6obj = (WMP6.FileName = "") \nWMP7obj = (WMP7.URL = "") \n<\/script> \n'; if (wmplugin) { ENV.wmp.isInstall = true; ENV.wmp.version = -1 } else { if (ENV.browser.code.indexOf("ie") !== -1 && ENV.os.code.indexOf("win") !== -1) { if (ENV.os.name.indexOf("Windows Vista") !== -1) { document.write(wmpObj7) } else { document.write(wmpObj6) } try { if (WMP7obj) { ENV.activex.enable = true; ENV.wmp.isInstall = true; ENV.wmp.version = parseInt(WMP7.versionInfo, 10) } else { if (WMP6obj) { ENV.activex.enable = true; ENV.wmp.isInstall = true; ENV.wmp.version = 6 } } } catch (e) {} } } if (isNaN(ENV.wmp.version) || ENV.wmp.version === 0) { ENV.wmp.isInstall = false } var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0; var yimg = window.location.protocol === "http:" ? "http://i.yimg.jp" : "https://s.yimg.jp"; if (plugin) { ENV.flash.isInstall = true; var desc = plugin.description; ENV.flash.version = eval(desc.substring(desc.indexOf("Flash") + 6, desc.indexOf("Flash") + 9)) } else { if (ENV.browser.code.indexOf("ie") !== -1 && ENV.os.code.indexOf("win") !== -1) { if (!ENV.flash.isInstall) { document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="5" height="5" id="swf" name="swf" viewastext style="display:none;"><param name="movie" value="' + yimg + '/images/help/env/void.swf"></object>'); try { ENV.flash.version = Math.floor(window.swf.FlashVersion() / 65536) } catch (e) {} if (!isNaN(ENV.flash.version)) { ENV.flash.isInstall = true } } } } if (isNaN(ENV.flash.version) || ENV.flash.version === 0) { ENV.flash.isInstall = false } })();
wakuworks/userAgent.test
- 2011-08-23 23:39:15
- navigator.userAgent は JS で書き換えられる
try { if (!Object.prototype.__defineGetter__ && Object.defineProperty({}, "x", { get: function(){ return true } }).x ) { Object.defineProperty(Object.prototype, "__defineGetter__", { enumerable: false, configurable: true, value: function(name, func) { Object.defineProperty(this,name, { get: func, enumerable: true, configurable: true }); } }); Object.defineProperty(Object.prototype, "__defineSetter__", { enumerable: false, configurable: true, value: function(name, func) { Object.defineProperty(this,name, { set: func, enumerable: true, configurable: true }); } }); } } catch (defPropException) { /* Do nothing if an exception occurs */ } var __original = navigator; var navigator = {}; navigator.__proto__ = __original; navigator.__defineGetter__ ? navigator.__defineGetter__("userAgent", function () { return "foo"; }) : navigator.userAgent = "foo"; document.write("navigator.userAgent = " + navigator.userAgent);navigator.userAgent は当てにならないテスト - jsdo.it - Share JavaScript, HTML5 and CSS