Upgrade to Pro — share decks privately, control downloads, hide ads and more …

X(old Twitter)の軽量フロントエンドのNitterをゲストアカウントで利用

X(old Twitter)の軽量フロントエンドのNitterをゲストアカウントで利用

発表: 鹿児島Linux勉強会 2024.01(オンライン開催) https://kagolug.connpass.com/event/307746/
source: https://gitlab.com/matoken/kagolug-2024.01

Kenichiro MATOHARA

January 21, 2024
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. follow up kagolug-2023.09 の「 」で紹介した 2023-12- 20 のバージョン0.77.0(227)でサポートデバイスが大分増えた 現在利用している Mi

    Band 5 の後継はBand 7 Pro 以降OS が 変わってサポート外になっていたので買えるうちに買っておくかとか 迷っていたけど最新の Mi Band 8 もサポートされるようになった 安めのスマートウォッチをOSSでセキュア に使う(Gadgetbridge) Gadgetbridge 3
  2. https://codeberg.org/Freeyourgadget/Gadgetbridge/src/bra 77-0 0.77.0 * Initial support for Amazfit Balance *

    Initial support for Amazfit Active * Initial support for ColaCao 2021 * Initial support for ColaCao 2023 * Initial support for Femometer Vinca II * Initial support for Mijia LYWSD02MMC variant * Initial support for Sony Wena 3 * Experimental support for Divoom Pixoo * Experimental support for Sony WF-1000XM5 * Experimental support for Amazfit Active Edge * Experimental support for Mi Band 7 Pro (Xiaomi Smart Band 7 Pro) * Experimental support for Mi Band 8 4
  3. Nitter? X(old Twitter) のプライバシーとパフォーマンスに重点を置いた OSS(AGPL-3.0)な代替フロントエンド,Nim製 X(old Twitter) のURL をNitter と置き換えて使う

    ex) → JavaScriptが無くても動作,RSS 対応 ログインや投稿は不可 と便利だったのでセルフホストして利用していたがX(old Twitter) の変更で使い物にならなく…… あるはずの投稿が閲覧できなかったり,返信が見えないなど…… https://twitter.com/elonmusk https://nitter.net/elonmusk https://nitter.matoken.org/about http://nitter2l2szql27s7siskdgvtr4sgeq43x7jodtqmltxur3k 6
  4. Nitter.net とのバージョンの差異 あまり使えないけど一応最新に追従していた 最新にしても本家のNitter.net とバージョンが開いている? selfhost (master branch) 本家 52db03b

    → guest_accounts branch $ w3m -dump https://nitter.matoken.org/about | grep ^Version Version 2023.10.31-b62d73d $ w3m -dump https://nitter.net/about | grep ^Version Version 2024.01.12-52db03b 8
  5. guest_accounts branch ? 例 1. Given the recent changes in

    Twitter and its API access a new method for accessing Twitter anonymously was devised. This method involves using temporary guest accounts created when going through the onboarding process with the Android app. Guest Account Branch Deployment · zedeus/nitter Wiki 9
  6. Nimのbuild済バイナリを用意(Debian 11 以前) 1 Nim lang 公式の最新のbuild済バイナリを入手(x86_64/x86 のみ) 2 Nim

    展開 3 一時的にNimにPATHを通す $ wget -c https://nim-lang.org/download/nim-2.0.2-linux_x64.tar.xz \ https://nim-lang.org/download/nim-2.0.2-linux_x64.tar.xz.sha256 $ sha256sum -c ./nim-2.0.2-linux_x64.tar.xz.sha256 $ tar tvf ./nim-2.0.2-linux_x64.tar.xz $ tar xf ./nim-2.0.2-linux_x64.tar.xz $ export PATH=`pwd`/nim-2.0.2/bin:${PATH} 1 2 3 14
  7. Nitter build 1 nitter 入手 2 guest_accounts brachに 3 build

    4 設定ファイル $ git clone https://github.com/zedeus/nitter $ cd nitter $ git checkout guest_accounts $ nimble build -d:release $ nimble scss $ nimble md $ cp nitter.example.conf nitter.conf 1 2 3 4 15
  8. Guest Accounts 以下の を実行してguest account のJSON を入手, guest_accounts.jsonl というファイルにに保存 bash

    script #!/bin/bash guest_token=$(curl -s -XPOST https://api.twitter.com/1.1/guest/activate.json -H 'Authorization flow_token=$(curl -s -XPOST 'https://api.twitter.com/1.1/onboarding/task.json?flow_name=welcom -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k -H 'Content-Type: application/json' \ -H "User-Agent: TwitterAndroid/10.10.0" \ -H "X-Guest-Token: ${guest_token}" \ -d '{"flow_token":null,"input_flow_data":{"flow_context":{"start_location":{"location curl -s -XPOST 'https://api.twitter.com/1.1/onboarding/task.json' \ -H 'Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAFXzAwAAAAAAMHCxpeSDG1gLNLghVe8d74hl6k -H 'Content-Type: application/json' \ -H "User-Agent: TwitterAndroid/10.10.0" \ -H "X-Guest-Token: ${guest_token}" \ -d "{\"flow_token\":\"${flow_token}\",\"subtask_inputs\":[{\"open_link\":{\"link\":\ $ bash ./guest_accounts.bash | tee guest_accounts.jsonl {"oauth_token":"1719213587296620928-BsXY2RIJEw7fjxoNwbBemgjJhueK0m","oauth_token_secret":"N0WB 16
  9. Nitter 起動 動作確認 $ ./nitter Starting Nitter at https://nitter.matoken.org Connected

    to Redis at localhost:6379 $ w3m http://localhost:8080/elonmusk 17
  10. 18

  11. 19

  12. 20

  13. 自動起動,httpd 設定など 専用アカウントの下に導入 httpd でTLS やVirtualDomain など その他 about カスタマイズ(

    edit public/md/about.md && nimble md ) systemd の場合service fileを作り自動起動するように 21
  14. 制限 https://github.com/zedeus/nitter/wiki/Guest-Account- Branch-Deployment#guest-accounts Save the file and launch Nitter. Each

    guest account is only valid for 30 days and gives approximately 500 API requests every 15 minutes before it is rate limited. Twitter restricts each IP to creating a single guest account per day, thus generating guest accounts in bulk is a tedious affair beyond the scope of this guide. 22
  15. RaspberryPi OS bullseye armhf cross build → ターゲットのgcc を用意( gcc-arm-linux-

    gnueabihf ) して,--cpu に指定( nimble --cpu:armhf -- os:linux …… ) 出来たbinary をcpして実行……librarie のversion 不整合で 失敗 Nim lang をsource からbuild …… 何故か zippy (圧縮ライブラリ) のclone に失敗する head にするとclone 出来,Nim はbuild 出来たがnimble の build に失敗 ← 今ここ dist-upgrade してbookworm にしたほうが早そう 26
  16. see also Firefox/Chrome の拡張機能 無料のTweetdeck を復活させる 個人用途&PC 利用ならNitter よりお すすめ

     ログインが必須なのでプライバシーは 守られないし,BANされる可能性が上 がると思われる dimdenGD/OldTweetDeck: Returns old TweetDeck, for free! 27
  17. まとめ X(old Twitter)の軽量フロントエンドのNitter 軽量,RSS 対応など便利だったがX(old Twitter)側の仕様変更で どんどん使いづらく 今回ゲストアカウントを使う gusest_accounts branch

    を使うこ とでマシになったが一般公開するのは現実的ではない ローカルで建てることにしたがRaspberry Pi 環境も用意してVPN 経由で使えるようにする予定 みんな自由なActivityPub などに脱X(old Twitter)してくれた ら……串刺し検索が要る? 28