iPhoneでは、Twitterタイムラインやメールに含まれるURLを表示する際、ブラウザを自由に変更することができません(Androidなら造作もないことですが)。そんなわけで目的に合わせてブラウザを選択できるMyScriptsスクリプトを作りました。
MyScripts 2.5
仕事効率化, ユーティリティ
App Storeで詳細を見る
もともと「iPhoneでURLをコピーするだけで安全かどうかをスキャンして結果を表示するスクリプト 」で構想はあったのですが、息切れして途中で止まったままになっていました。
Browser Selectorとは
たとえば、Tweetlogixタイムラインで表示したいURLを長押しします。メニューが出現しますのでCopy Linkを選択します。
通知センターを呼び出します。Iconizerで仕込んだMyScriptsスクリプトのBrowser Selectorを選択します。
外部Web APIを使ってURLが安全かどうかをスキャンして結果を表示します(ux.nu – 短縮URLサービス)。コピーしたURLが短縮サービスを使用している場合は、多段階短縮していても展開された最終的なURLをExpanded URLに表示します。下図は安全なURLの例です。
ここから目的に合わせてブラウザを選択します。プルダウンのメニューリストになっており、ブラウザを選択後にOPENボタンで開くことが出来ます。
ブラウザの選択はURLスキームが使えるアプリであれば開くことが可能です。わたしは以下の目的に合わせて開いています。
Sylfeed – 外部サービスとの連携には最強。選択範囲のEvernoteクリッピングも可能。
リーダー機能だけじゃない! Sylfeedの意外な使い方 あらゆるサイトでEvernoteの範囲選択クリップや投稿機能を使い倒す
Sylfeed 2.3.4
ニュース, ソーシャルネットワーキング
App Storeで詳細を見る
iCab Mobile – 追尾型広告をブロックしたい時に使います。iPhoneの狭い画面は有効に使いたいものです。
iCab Mobile (Web Browser) 6.8.2
ユーティリティ, 仕事効率化
App Storeで詳細を見る
Puffin – あまり頻度は高くありませんが、Flashコンテンツを見たい時に使用します。
Puffin Web Browser 2.3.8
ユーティリティ, 仕事効率化
App Storeで詳細を見る
Sleipnir – ジェスチャーやタブが快適に使えるブラウザアプリです。
Sleipnir Mobile – Web ブラウザ 2.2
ユーティリティ, 仕事効率化
App Storeで詳細を見る
疑わしいURLの場合
危険なサイトと検知されると以下のようになります。
GoogleのセーフブラウジングAPIを使用していますので、疑わしいサイトであると検知された場合はURL展開を表示せずにGoogleページへ誘導します。
MyScriptsスクリプト《Browser Selector》
スクリプトの内容は以下のとおりです。サイズが大きいのでリンク方式ではなくコードです。ご利用になられたい方はMyScriptsへ直接コピペして、アクションをビックリマークにしてから保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#LIB IS_HTML=true; var rgex = /^http/; var expsec = 0; var shtsec = 0; var mes; var orgurl = TEXT; var expurl; var openurl; if (TEXT.match(rgex)){ var url = "https://secure.ux.nu/hugeurl?url=" + orgurl +"&format=json"; var xhr = new XMLHttpRequest(); xhr.open("GET",url, false); xhr.send(null); var res = xhr.responseText; var jdata = eval("("+res+")"); var bklist = jdata.data.blacklist; var mal = jdata.data.malware; var safe = jdata.data.safe; if(( bklist == "true") || ( mal =="true") ||( safe == "false")) expsec = 1; expurl = jdata.exp; var end = expurl.length; var openurl = expurl.substring(4,end); if(jdata.exp==""){ var urlb = "https://secure.ux.nu/api/short?url=" + orgurl; var xhrb = new XMLHttpRequest(); xhrb.open("GET",urlb, false); xhrb.send(null); var resb = xhrb.responseText; var jdatab = eval("("+resb+")"); bklist = jdatab.data.blacklist; mal = jdatab.data.malware; safe = jdatab.data.safe; if((bklist == "true") || ( mal =="true") ||( safe == "false")) shtsec = 1; expurl = ""; var end = orgurl.length; var openurl = orgurl.substring(4,end);}if(expsec+shtsec ==0){ mes = "<div class=\"safe\">This URL may be safe</div>"; htmlview(orgurl, bklist, mal, safe, expurl, mes, openurl); } else { mes = "<div class=\"unsafe\">This URL may /NOT/ be safe</div>"; htmlview(orgurl, bklist, mal, safe, expurl, mes,expurl.substring(4,expurl.length)); } } else { "INFO: Your copy doesn't begin with http(s)"; } function htmlview(stra, strb, strc, strd, stre, strf, strg){ var html ="<!DOCTYPE html> \n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> \n<title>Shorten URL Checker</title> \n<link rel=\"stylesheet\" href=\"./jqm/jquery.mobile.css\" />\n<script src=\"./jquery.js\"></script>\n<script src=\"./jqm/jquery.mobile.js\"></script>\n<script type=\"text/javascript\">\n<!--\n function selectbrowser() {\n browser = selectmenu1.value;\n urlscheme = browser + \"" + strg + "\";\n window.location = urlscheme;\n }\n // -->\n</script>\n<style type=\"text/css\">\n.safe{\n font-weight:bold;\n color:#008000;\n text-align:center;\n}\n.unsafe{\n font-weight:bold;\n color:#ff0000;\n text-align:center; \n}\n.disc{\n text-align:right;\n font-style:italic;\n}\n</style>\n</head>\n<body>\n<div data-role=\"page\">\n<div data-role=\"header\">\n<h1>URL Checker</h1>\n</div><!-- /header -->\n<div data-role=\"content\">\n<div data-role=\"fieldcontain\">\n<label for=\"textinput2\">Original URL:</label>\n<input id=\"textinput2\" placeholder=\"\" value=\"" + stra + "\" type=\"text\" />\n<p>\n<dd>Blacklist: " + strb + "</dd>\n<dd>Malware: " + strc + "</dd>\n<dd>Safe: " + strd + "</dd>\n<p>\n<label for=\"textinput1\">Expanded URL (Optional):</label>\n<input id=\"textinput1\" placeholder=\"\" value=\"" + stre + "\" type=\"text\" />\n" + strf + "\n<p><select name=\"selectmenu1\" id=\"selectmenu1\" data-theme=\"c\">\n <option value=\"sylfeed\">\n Sylfeed\n </option>\n <option value=\"puffin\">\n Puffin\n </option>\n <option value=\"web\">\n iCab Mobile\n </option>\n <option value=\"sleipnir\">\n Sleipnir\n </option>\n </select>\n \n<center><a data-role=\"button\" data-inline=\"true\" data-transition=\"fade\" data-theme=\"b\" href=\"javascript:selectbrowser()\">\n Button\n </a></center>\n </div>\n<p class=\"disc\">Powered by <a href=\"http://ux.nu/developer.html\">ux.nu</a></p>\n</div><!-- /content --> \n<div data-role=\"footer\">\n<h4>BLOG of Daisuke</h4>\n</div><!-- /footer --> \n</div><!-- /page -->\n</body>\n</html>"; return html; } |
素人のコーディングです。お気づきになった点は遠慮なく助言いただけると助かります。
通知センターへの登録
先日、エントリにまとめた「Iconizer + MyScripts = SylfeedWebでらくらく外部連携 」の方法と同様です。Iconizerを使うことで、MyScriptsをバックグラウンド常駐(10分間のみ)で固定化せずともカンタンにアクセス出来るようになります。
アイコンdeダイヤル – Iconizer 2.3.1
ライフスタイル,ユーティリティ
App Storeで詳細を見る
MyScriptsがバージョンアップしてから、jQueryMobileを使って初めて全画面表示させてみました。コントロール・メニューバーがなくなるとスッキリします。
iPhoneでもフィッシング等の悪質なサイトが増えていると聞きますし、ブラウザで開く前にURLをスキャンして、目的に合わせてブラウザを選んでみてはいかがでしょう。