iOS版Safariをパワーアップ

iOSの標準ブラウザのSafariをパワーアップしたメモ。

# もくじ
- [**牢破り**](#牢破り)
    - [hostsファイル](#hosts%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)
    - [Safari Plus](#safari-plus)
    - [FullSafari](#fullsafari)
- [**ADブロック系アプリ**](#ad%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E7%B3%BB%E3%82%A2%E3%83%97%E3%83%AA)
    - [AdFilter](#adfilter)
    - [アド消しくん](#アド消しくん)
- [**ブックマークレット**](#ブックマークレット)
    - [ページを翻訳](#ページを翻訳)
    - [［タイトル］（URL）](#%E3%82%BF%E3%82%A4%E3%83%88%E3%83%ABurl)
    - [HTMLを表示](#html%E3%82%92%E8%A1%A8%E7%A4%BA)
    - [ソースを表示](#ソースを表示)
    - [Amazonで検索](#amazon%E3%81%A7%E6%A4%9C%E7%B4%A2)



# 牢破り
iOSデバイスの機能制限を解除する事を**牢破り**と言うそうですが、通常だと編集する事のできないファイルを編集したり、AppStoreでは手に入らないアプリをインストールする事も出来ます。

[牢破り12](https://qiita.com/maboy/items/0c1855691bbfc9d3a85b)

## hostsファイル
[**hosts**](https://ja.m.wikipedia.org/wiki/Hosts)ファイルは[DNS](https://ja.m.wikipedia.org/wiki/Domain_Name_System)より優先されるので代替サーバーのアドレスを記載したりしますが、目的のサーバーをデバイス自身にする事で、ネット上にサーバーが見つからないようにできます。

<details><summary> 例 </summary>
例えば[**Qiita**](https://qiita.com/)のアドレスを次のようにhostsに書き加えると、Qiitaにアクセスできなくなります。
`
127.0.0.1 localhost
::1 localhost
127.0.0.1 qiita.com
::1 qiita.com`  
<details><summary> 解説 </summary>
- IPv4のアドレス`127.0.0.1`とIPv6のアドレス`::1`を`localhost`として宣言してるので、`qiita.com`へ接続する際に`localhost`を探すことになりますが、デバイス自身である`localhost`には`qiita.com`の情報がないので、Safariで[**Qiita**](https://qiita.com/)にアクセスすると、
**「ページを開けません。Safariはサーバに接続できませんでした。」**
と表示されQiitaにアクセスできなくなります。
</details></details>

このしくみを応用して、**埋め込まれた広告**のアドレスを`localhost`に書き換えるように記述すると、WEBページは閲覧できてるのに**埋め込まれた広告**は表示されなくなります。

##### hostsの場所
iOSの場合`/etc/hosts`にあります。

##### 広告リスト
広告のドメインをまとめたファイルを配布してるサイトがたくさんあります。

- [hosts_iphone](https://github.com/iVmj2ef/hosts_iphone/)
- [日本環境向け 広告除去用hosts - ログろいど](http://logroid.blogspot.com/2012/06/adaway-hosts-for-japan.html?m=1)
- [悪いインターネット | 広告ホスト](https://warui.intaa.net/adhosts/)

[もくじへ](#もくじ)
## Safari Plus
Safariは優れたモバイルブラウザですが、いくつかの機能がありません。 そこで、Safari Plusが登場します。…
[<img width="72" alt="image.jpeg" src="https://cydia.saurik.com/icon@2x/com.opa334.safariplus.png"> repoへ](https://cydia.saurik.com/package/com.opa334.safariplus/)

- アップロードを可能にする
- ダウンロードマネージャー
- フルスクリーンスクロール
- ブラウザデータの自動消去
- 他にもたくさん

[もくじへ](#もくじ)

## FullSafari
iPhone版SafariでもiPad版のようにタプを使えるようにする。
[<img width="72" alt="image.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280129/71cf0921-2fa4-7d93-d004-9461d8161f49.png"> repoへ](https://repo.lonestarx.net/)

[もくじへ](#もくじ)
***
# ADブロック系アプリ
「設定」>「Safari」>「コンテンツブロッカー」からオンオフするだけで、Safariの広告をブロックすることができる。

## AdFilter
Safariを快適にする広告ブロックアプリ
- Shinichiro Yamazaki
[<img width="72" alt="image.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280129/b3a5ed48-5373-2f4e-52ef-8799ce2f6919.jpeg"> AppStoreへ](https://apps.apple.com/jp/app/adfilter-safari%E3%82%92%E5%BF%AB%E9%81%A9%E3%81%AB%E3%81%99%E3%82%8B%E5%BA%83%E5%91%8A%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%82%A2%E3%83%97%E3%83%AA/id1042682195?mt=8)
[もくじへ](#もくじ)

## アド消しくん
完全無料の広告ブロックアプリ
- Decoo, Inc.
[<img width="72" alt="image.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280129/f7128409-6245-b6f4-c1ba-b19376d50d8b.jpeg"> AppStoreへ](https://apps.apple.com/jp/app/%E3%82%A2%E3%83%89%E6%B6%88%E3%81%97%E3%81%8F%E3%82%93-%E5%AE%8C%E5%85%A8%E7%84%A1%E6%96%99%E3%81%AE%E5%BA%83%E5%91%8A%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%82%A2%E3%83%97%E3%83%AA/id1043495683)
[もくじへ](#もくじ)
***
# ブックマークレット
通常、ブックマークにはURLを登録しますが、「javascript」で記述した1ラインのプログラムを登録したものを「ブックマークレット」と言い、色々なことができるのですが、ブラウザやプラットホームによっては動作しないの場合があります。

## ページを翻訳
GoogleChromeではお馴染みのページを翻訳する機能をiOS版Safariで実現できます。

```javascript
javascript:void(0);void(0);void(0);void(0);void(%27Add%20this%20text%20into%20the%20code%20to%20suppress%20the%20tooltip%20with%20long%20script%27);void(0);void(0);void(0);void(0);void(0);void(0);void(0);q=location.href;void(location.href=%27http://translate.google.com/translate?hl=ja&sl=en&u=%27+q);
```
[もくじへ](#もくじ)

## ［タイトル］（URL）
ページのタイトルとURLをマークダウンのリンクの記述方法`[タイトル](URL)`でクリップボードにコピーします。

```javascript
javascript:(function()%7Bvar%20copy=function(copyText,successCB)%7Bif(!successCB)%7BsuccessCB=function(text)%7B%7D;%7Dif(window.clipboardData)%7Bwindow.clipboardData.setData(%22Text%22,copyText);return;%7Dvar%20tmpElem=document.createElement('div');tmpElem.style.position='absolute';tmpElem.style.left='-1000px';tmpElem.style.top='-1000px';tmpElem.innerText=copyText;document.body.appendChild(tmpElem);var%20range=document.createRange();range.selectNodeContents(tmpElem);var%20selection;selection=window.getSelection();selection.removeAllRanges();selection.addRange(range);var%20success=true;try%7Bsuccess=document.execCommand(%22copy%22,false,null);%7Dcatch(e)%7BcopyToClipboardFF(copyText);%7Dif(success)%7BsuccessCB(copyText);tmpElem.remove();%7D%7D;copy('%5B'+document.title+'%5D('+location.href+')');%7D)()
```
[もくじへ](#もくじ)

## HTMLを表示
現在のページのHTMLを表示する。

```javascript
javascript:d=document;c=d.charset||0;i=0;o=d.documentElement;d.write%28%22%3Cpre%3E%22+%28o.outerHTML||o.innerHTML%29.replace%28/&/g,%22&amp;%22%29.replace%28/%3C/g,%22&lt;%22%29.replace%28/%3E/g,%22&gt;%22%29+%22%3C/pre%3E%22%29;c?d.charset=c:0;void%28document.close%28%29%29;
```
<details><summary> 別バージョン </summary>
<div>
```javascript
javascript:var%20d=document;var%20c=d.charset%7C%7C0;var%20i=0;var%20o=d.documentElement;d.write(%22%3Cpre%20class=%5C%22prettyprint%5C%22%3E%22+(o.outerHTML%7C%7Co.innerHTML).replace(/&/g,%22&amp;%22).replace(/%3C/g,%22&lt;%22).replace(/%3E/g,%22&gt;%22)+%22%3C/pre%3E%22);var%20style%20=%20d.createElement(%22style%22);style.type%20=%20%22text/css%22;var%20head%20=%20d.head;head.appendChild(style);style.sheet.insertRule(%22*%20%7B%20font-family:'Menlo',monospace;font-size:7px%7D%22)
```
</div>
</details>

[もくじへ](#もくじ)

## ソースを表示
上の**HTMLを表示**と似たようなものですが、別ウインドウでハイライト表示してくれます。
でも、あまり使えるページがないかも？
[**Snoopy**](http://snoopy.allmarkedup.com/)

```javascript
javascript:(function()%7Bvar%20d%3Ddocument%2Cs%2Ce%3Bvar%20el%3Dd.getElementById('snpy')%3Bif(typeof%20Snoopy!%3D'undefined')%7BSnoopy.toggle()%3Breturn%7Delse%20if(el)%7Bel.className%3D%2Fclosed%2F.test(el.className)%3Fel.className.replace('closed'%2C'')%3Ael.className%2B'%20closed'%3Breturn%7Ds%3Dd.createElement('link')%3Bs.setAttribute('href'%2C'http%3A%2F%2Fsnoopy-assets.allmarkedup.com%2Fsnoopy-min.css')%3Bs.setAttribute('rel'%2C'stylesheet')%3Bs.setAttribute('type'%2C'text%2Fcss')%3Bd.getElementsByTagName('head')%5B0%5D.appendChild(s)%3Be%3Dd.createElement('script')%3Be.setAttribute('src'%2C'http%3A%2F%2Fsnoopy-assets.allmarkedup.com%2Fsnoopy-min.js')%3Bd.getElementsByTagName('body')%5B0%5D.appendChild(e)%7D)()%3B
```
[もくじへ](#もくじ)

## Amazonで検索
選択したテキストを[**Amazon**](https://www.amazon.co.jp)で検索します。

```javascript
javascript:(function()%7Bvar%20t=''+(window.getSelection%20?%20window.getSelection():%20document.getSelection%20?%20document.getSelection():%20document.selection.createRange().text);if(!t)%7BL=document.location.href;if(L.match(/(yahoo%5C.).+?.*p=(%5B%5E&%5D+)/)%7C%7CL.match(/(amazon%5C.).+?.*field-keywords=(%5B%5E&%5D+)/)%7C%7CL.match(/(%5C.wikipedia%5C.).+%5C/wiki%5C/(%5B%5E%5C/%5D+)/)%7C%7CL.match(/(youtube%5C.).+search_query=(%5B%5E&%5D+)/)%7C%7CL.match(/(%5C?.*%5Cb)q=(%5B%5E&%5D+)/)%7C%7CL.match(/(%5C%23search%5C/)(%5B%5E%5C/%5D+)/))t=decodeURIComponent(RegExp.$2);%7Dif(!t)t=prompt('amazon検索','');if(t)open('http://www.amazon.co.jp/exec/obidos/external-search/?keyword='+encodeURIComponent(t),'_blank');%7D)()
```
[もくじへ](#もくじ)


***