Android端末上のSSH+Polipo+Twitter公式クライアントで、Twitter接続不可の環境でもTwitterを

# はじめに
え?SSH+Firefoxでも出来るだろって? 
**重いんだよ！！！火狐ガァ！**  
  
なのでアプリ数は多くても比較的軽いSSH+Polipo+公式クライアントで規制に抵抗しましょう。    
内容は少し初心者向けです。

## 今回使うアプリ
- [ConnectBot](https://play.google.com/store/apps/details?id=org.connectbot) (SSH経由のSocks5サーバーに使います)
- [Termux](https://play.google.com/store/apps/details?id=com.termux) (Polipoをこの中で動かします)
- [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android) (Polipoを抜き取るための部品取りにだけ使います)
- [ESファイルエクスプローラー](https://play.google.com/store/apps/details?id=com.estrongs.android.pop) (今回大活躍しますが、一応脇役です)[^1]
- [Twitter公式クライアント](https://play.google.com/store/apps/details?id=com.twitter.android) (今回のメイン)

# 初回

## Polipo
この記事では、Socks5プロキシをHTTPプロキシに変換するために使います。     

### Androidで動くPolipoをダウンロードする
とは言っても検索してDLする訳にも行かないのでOrbotから取り出します。

1. Google Playから`Orbot`をダウンロード (上記リンクより)
2. ESファイルエクスプローラーを起動    
   1. `ドロワー`→`ライブラリ`→`アプリ`でアプリ一覧を表示
   2. ユーザーアプリから`Orbot`を探し、アイコンを長押しする
3. OrbotのAPKを解凍
   1. 下の`バックアップ`を選択
   2. 上部の`ユーザーアプリ`→`バックアップアプリ`の順でタップ
   3. `Orbot_....apk`を長押し (`...`はバージョン)
   4. `他`→`解凍`→`OK`の順でタップ
4. OrbotのAPKを解凍したディレクトリからPolipoを探す
   1. `ドロワー`→`ローカル`→**下の**`ホーム`でSDカード/内部ストレージのファイル一覧を表示
   2. `backups`→`apps`→`Orbot_...`→`assets`→`armeabi`[^2]→`polipo`の順でタップ
5. Polipoを入手
   1. `polipo.mp3`を`polipo.zip`に名前変更
      - 実体はZIPファイルなので問題ありません。
   2. 前項の`polipo.zip`を解凍
      1. `polipo.zip`を長押し
      2. `他`→`解凍`→`OK`の順でタップ
   3. バイナリのフルパスを確認する
      1. `polipo`→`bin`の順でタップ
      2. `polipo`を長押し
      3. `他`→`プロパティ`→`完全なパスをコピー`の順でタップ
6. OrbotをGoogle Playからアンインストールする    
   完全に任意なので、Torを使いたければアンインストールしなくても良いです。

## ConnectBot
### Socks5のポートフォワーディングの設定をする
sshdの設定は書きませんので、それぞれ調べて下さい。

1. ConnectBotを起動
2. ポートフォワーディングを設定するSSHサーバーを長押し
3. `ポート転送の編集`を選択
4. 右下の水色の`+`をタップ
5. 以下の通りフィールドを設定する
   - *鍵の名前*: なんでもご自由に
   - *タイプ*: `動的 (SOCKS)`
   - *ソースポート*: 任意のポート。他のアプリと被らないようにすること。この値を後ほど使うので覚えておいて下さい。ここで書く手順では後で困るので、コピーはしないで下さい。
   - *転送先*: ここまで来たら入力できないはずなのでスキップ
6. `ポート転送の作成`をタップ
7. `←`をタップして戻る
8. ポートフォワーディングを設定したSSHサーバーに接続[^3]

## Termux
### TermuxでPolipoを設定
1. 好みのエディタをインストール(宗教戦争が勃発しかねないのであえて例示はしません)
2. 以下のように操作
   1. `cp `(小文字でCP[スペース])と入力
   2. IMEと通知以外の場所で長押しし、`PASTE`をタップ
   3. 続けて、` ~`(スペースとチルダ)を入力し、IMEのエンターを入力
3. `chmod +x polipo`と入力し、IMEのエンターを入力

### TermuxでPolipoを起動
1. 好みのエディタで`~/.poliporc`を開き、後述の内容にする[^4]
2. `./polipo`と入力し、IMEのエンターを入力
3. `Established listening socket on port 8123.`という行が表示されれば完了です。    
   この上に多少エラーが出ますが、上述の行が出ていれば問題ありません。

### `.poliporc`の内容
以下のテキストの内、3行目の`PORT`はConnectBotで設定した*ソースポート*に置き換えて下さい。

```
proxyAddress = "0.0.0.0"
cacheIsShared = false
socksParentProxy = "localhost:PORT"
socksProxyType = socks5
dnsNameServer = "8.8.8.8"
censoredHeaders = from, accept-language
censorReferer = maybe
``` 

## Twitter公式クライアント
1. ドロワーを開き、`設定とプライバシー`を選択
2. `位置情報とプロキシ`→`プロキシ`の順で選択
3. `HTTPプロキシを有効化`のチェックを入れる
4. `プロキシサーバ`を選択し、`localhost`と入力して`OK`を選択
5. `プロキシのポート番号`を選択し、`8123`と入力して`OK`を選択
6. `←`を3回タップしてTLに戻る
7. TLを更新したりモーメントを開いたりして、接続が出来ているか確認する
8. お疲れ様でした。制限脱出後はこの後の後始末も忘れずに。

# 次回以降
1. ConnectBotを起動し、ポートフォワーディングを設定したSSHサーバーに接続    
   ただし、すでに接続していた場合は再接続する必要はありません。
2. Termuxを起動し、`./polipo`と入力し、IMEのエンターを入力
3. Twitter公式クライアントを起動
4. ドロワーを開き、`設定とプライバシー`を選択
5. `位置情報とプロキシ`→`プロキシ`の順で選択
6. `HTTPプロキシを有効化`のチェックを入れる
7. `←`を3回タップしてTLに戻る
8. TLを更新したりモーメントを開いたりして、接続が出来ているか確認する(任意)

# 後始末
1. ConnectBotを起動し、ポートフォワーディングを設定したSSHサーバーから切断    
   ただし、そのSSHサーバーに他に用事があるなら無理して切断しなくても構いません。
   1. ConnectBotのサーバー一覧を表示
   2. ポートフォワーディングを設定したSSHサーバーを長押し
   3. `切断`を選択
2. Termuxを起動し、音量下ボタンを押しながらIMEの`C`をタップする。[^5]
3. Twitter公式クライアントを起動
4. ドロワーを開き、`設定とプライバシー`を選択
5. `位置情報とプロキシ`→`プロキシ`の順で選択
6. `HTTPプロキシを有効化`のチェックを**外す**
7. `←`を3回タップしてTLに戻る

お疲れ様でした。健闘を祈ります(?)。

# 最後に
実はこの方法を編み出すのに30分掛からなかったぐらい簡単です。
あと画像が出ません。    
<font color=white>やーい馬鹿共冷えてるか〜〜〜〜〜〜？？？？？</font>

-----
[^1]: 無料版でも問題ないと思いますが、筆者は有料版([PRO](https://play.google.com/store/apps/details?id=com.estrongs.android.pop.pro))を使用しました。
[^2]: ARM端末ではない場合は、`x86`にして下さい。
[^3]: ここでしない場合は、Polipo起動直前で行って下さい。
[^4]: 内容が同じにさえなれば、`echo`とリダイレクトの組み合わせでも全く問題ありません。
[^5]: Google日本語入力など一部のIMEではエンターの入力が必要です。
[^6]: Polipoを起動していないウィンドウで作業していた場合は、この操作の前にPolipoを起動していたウィンドウに切り替えてください。