2023/04/22(土)[Tampermonkey] fetch responseの割り込み取得

[Tampermonkey] fetch responseの横取り取得

Webページがfetchで動的に取得したJSONデータを観測する手段は無いかなと思って見つけた方法。

ソースコード

// ==UserScript==
// @name        Test intercept fetch
// @description Test intercept fetch
// @namespace   Test
// @version     1.0
// @match       https://example.com/*
// @run-at      document-start
// @grant       unsafeWindow
// ==/UserScript==

const proc_fetch_resp = (data, url) => {
    console.log("proc_fetch_resp:" + url, data);
}

//=====================================================
// Intercept fetch
//=====================================================
const origFetch = unsafeWindow.fetch;
//元のfetchを差し替え
unsafeWindow.fetch = async (...args) => {
    console.log("fetch called with args:", args);
    const response = await origFetch(...args);

    //レスポンスをクローンして使う
    response
        .clone()
        .json()
        .then(body => {
            proc_fetch_resp(body, response.url);
        })
        .catch(err => console.error(err))
        ;

    //元のレスポンスを返す
    return response;
}
  • @match は対象サイトのURLを指定
  • @run-at は割り込みたいfetchよりに先にfetch差し替えができるように指定
  • unsafeWindow を使わないとfetch差し替えができない
  • サンプルなのでレスポンスをJSONとして読み取ってconsole.logに出すだけ。

参考URL

2021/01/09(土)Synology NAS 取り外したHDDへのアクセス(USB経由)

PC::NAS

Synology NAS 取り外したHDDへのアクセス(USB経由)

20210109_1.png

Synology DS216jのHDDを入れ替えたときに、USB経由で旧HDDデータへのアクセスを試してみたのでメモ。


前提

20210109_2.png

  • RAIDタイプ: Basic (データ保護無し)
    • RAID無しの単一HDDとしての運用。

たぶんRAID1でも同じ事ができます。SHR (Synology Hybrid RAID) で同じ事ができるかは不明……。



HDD交換

今回は1台のみ新しいHDDと交換しました。Basicで運用している場合も、DSM (OS) はミラーリングされているようなので、片方だけの交換ならDSMの再インストールは不要です。

USB接続

旧HDDを外付けHDDケースに入れて、USBでNASに接続します。HDD自体は認識され、パーティションの存在も確認出来ますが、このままだとデータにはアクセス出来ません。

20210109_3.png

外付けHDDの状態確認

  1. 作業前にroot権限を取っておきます。
    sudo -i
    
  2. 接続したHDDの確認
    fdisk -l
    Disk /dev/sdq: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: ****
    
    Device       Start         End     Sectors  Size Type
    /dev/sdq1     2048     4982527     4980480  2.4G Linux RAID
    /dev/sdq2  4982528     9176831     4194304    2G Linux RAID
    /dev/sdq3  9437184 15627848351 15618411168  7.3T Linux RAID
    
    • /dev/sdq1~3として認識されているようです。データが入っているのは/dev/sdq3ですが、Basicの場合でもRAIDは作られるようで、TypeはLinux RAIDです。
    • 認識されていない場合は、partprobeコマンドを実行すれば認識されるかも。
  3. RAID状態の確認
    cat /proc/mdstat
    Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
    md3 : active raid1 sda3[0]
          9761614848 blocks super 1.2 [1/1] [U]
          
    md2 : active raid1 sdb3[0]
          7809204544 blocks super 1.2 [1/1] [U]
          
    md1 : active raid1 sda2[0] sdb2[1]
          2097088 blocks [2/2] [UU]
          
    md0 : active raid1 sda1[0] sdb1[1]
          2490176 blocks [2/2] [UU]
    
    • md0~md3が作られています。BasicはHDDが1個だけのRAID1扱い。
    • あとでmd9を作るので使われていないことを確認。

外付けHDDのマウント

まずRAIDを認識させてから、RAIDボリュームをマウントする必要があります。

  1. 作業前にroot権限を取っておきます。
    sudo -i
    
  2. RAIDを編成。
    mdadm -A -R /dev/md9 /dev/sdq3
    
  3. マウント。場所はどこでも良いですが、今回は/volume1/from_USBにマウントします。
    mkdir /volume1/from_USB
    mount /dev/md9 /volume1/from_USB
    
  4. これで、/volume1/from_USB 下に外付けHDDのデータが見えるので、コピーなどが可能です。
    # backupフォルダを/volume1 下にコピーする例
    cp -a /volume1/from_USB/backup   /volume1/
    
  5. アンマウント
    umount /volume1/from_USB
    mdadm -S /dev/md9
    

暗号化フォルダ(ディレクトリ)のマウント

共有フォルダを暗号化していた場合は、中を見るには暗号化フォルダのマウントが必要です。(当然パスワードは必要。)暗号化されたフォルダは@で囲まれた名前になっています。

    • 暗号化されたフォルダ名: /volume1/from_USB/@backup_e@
    • マウント先フォルダ名: /volume1/from_USB/backup_e
  1. 作業前にroot権限を取っておきます。
    sudo -i
    
  2. 暗号化フォルダをマウント。
    mkdir /volume1/from_USB/backup_e
    mount.ecryptfs /volume1/from_USB/@backup_e@ /volume1/from_USB/backup_e -o 'key=passphrase:passphrase_passwd=パスワード,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=n,no_sig_cache,ecryptfs_enable_filename_crypto=y'
    
  3. これで、/volume1/from_USB/backup_e 下に暗号化フォルダのデータが見えるようになります。
  4. アンマウント
    umount /volume1/from_USB/backup_e
    

なお、まるごとコピーしたいだけなら、@backup_e@を/volume1の下にそのままコピーすれば、DSMのコントロールパネルからマウントできるようです。

おまけ:取り外したHDDのWindowsでの再利用

  1. Windows PCに接続
  2. 「ディスクの管理」を開く
    20210109_4.png
    • 3つのパーティション(と隙間)が確認出来ます。
  3. パーティションを右クリック→ボリュームの削除で、全てのパーティションを削除。
    20210109_5.png
  4. 右クリック→新しいシンプルボリュームで、新しいパーティションを作成。NTFSなどでフォーマットすればWindowsで使用出来るようになります。
    20210109_6.png

2017/11/25(土)Stellaris 独善的な奉仕機械でプレイ

Stellaris 独善的な奉仕機械でプレイ

今まで何度かプレイしてますが、いろんな種族を試してみたいので今度は独善的な奉仕機械でやってみます。

開始

20171125_01.jpg

独善的な奉仕機械の特徴は有機生命体POPを有機生命体の聖域に住まわせて、有機生命体POPの割合に応じてロボットPOPの生産力にボーナスがかかること。なので、初期配置にも有機生命体POPが2います。

有機生命体POPはリーダーになったり生産活動したりしないので、デメリットが問題にならないマイナス特性「愚鈍(リーダーの経験値入手-25%)」、「貧弱(鉱物-5%)」を付けて、プラス特性は「順応性(居住性+10%)」、「社会的(幸福度+5%)」、「保護論者(消費財コスト-15%)」にしてみました。後から考えると、強制移住を結構使ったので「遊牧的(強制移住コスト-25%)」を入れても良かったかも。

国是は「委任機能(リーダー雇用費用-50%/リーダー雇用上限+4)」を選択。機械知性はリーダー雇用費用+100%の特性があるので、これでも雇用費用は影響力75が必要。不死なので再雇用が不要とは言え序盤が辛そう(>_<)

続きを読む

2017/09/18(月)ECO-Wiki (acronia) 一括ダウンロードデータ

ECO-Wiki (acronia) 一括ダウンロードデータ

ダウンロードURL

ECO-Wiki (acronia) 一括ダウンロードデータ を公開しました。以下のOneDriveフォルダからダウンロードできます。

配布物の不備などに気づかれた場合は、本記事のコメント欄などで連絡してください。

本データ利用時の注意

ミラーサイトなどを公開する場合は以下の点に注意してください。

  • 画像について、http://eco.acronia.net/img/ へのアクセスが発生しないようにしてください。
    • ダウンロードデータは、http://eco.acronia.net/img/ を http://0.0.0.0/img/ に置換しているので、そのまま使っただけではアクセスは発生しないようになっています。
  • できればリードオンリーとしてください。(必須ではありません。)
    • ECO-Wiki (acronia) がリードオンリーとなった場合はこの限りではありません。
  • できれば重複コンテンツ扱いされないように検索避けを行ってください。(必須ではありません。)
    • ECO-Wiki (acronia) が消滅した場合はこの限りではありません。
  • ミラーサイトを公開したことはECO-Wiki (acronia)のコメント欄などを利用して告知して構いません。

配布ファイルについて

  • ecowiki_data_yyyymmdd.zip
    • PukiWikiのwikiディレクトリとbackupディレクトリが含まれています。
    • PukiWiki運用者向け。
  • ecowiki_html_yyyymmdd.zip
    • HTML化したWikiデータが含まれています。
    • Wiki編集が不要な人向け。
    • オフラインでの閲覧も可能。
  • img_yyyymdd.zip
    • 画像ファイルが含まれています。
    • ファイル名がUTF-8のため、アーカイバによっては文字化けします。展開するときはUTF-8対応のアーカイバを使用してください。(7zipなど)
      • 特にWindows環境で問題になります。

PukiWikiにECO-Wiki (acronia)のデータを組み込む手順

  • PukiWikiは既に稼働しているものとします。
  • wikiディレクトリを直接編集するので、実施後には ?plugin=links を実行することを推奨します。
  • 画像パスを http://eco.acronia.net/img/ から http://0.0.0.0/img/ に置き換えているため、画像を閲覧できるようにするには置換が必要です。
  1. ecowiki_data_yyyymmdd.zip を展開する。
    • wikiディレクトリをPukiWikiの同名ディレクトリにコピーする。
    • backupディレクトリをPukiWikiの同名ディレクトリにコピーする。(backupが不要なら省略可能)
  2. img_yyyymdd.zipを展開し、ブラウザからアクセス可能な場所に画像を格納。
    • サーバー上でのファイル名文字コードはUTF-8にする必要があります。
  3. 画像の格納場所に合わせて、wiki/*.txt と backup/*.gz 内の http://0.0.0.0/img/ を有効なURLに置換する。
    • 置換用のスクリプト pukiwiki_replaceall.php を合わせて配布しています。
  • 参考:ディレクトリ構造
    <pukiwiki>/
      index.php
      pukiwiki.ini.php
      backup/
        *.gz   <--ecowiki_data_yyyymmdd.zip内のファイルをコピー
      cache/
      counter/
      diff/
      image/
      lib/
      plugin/
      skin/
      wiki/
        *.txt  <--ecowiki_data_yyyymmdd.zip内のファイルをコピー
    
pukiwiki_replaceall.php の使い方
  1. pukiwikiのディレクトリに pukiwiki_replaceall.php を格納。(index.phpと同じ階層。)
  2. pukiwiki_replaceall.phpにブラウザでアクセス。
  3. 置換後文字列の欄に http://0.0.0.0/img/ の代わりとなるURLを入力。
  4. 送信ボタンをクリック。
    • 置換後のファイルが、wiki_replaceディレクトリとbackup_replaceディレクトリに格納される。
  5. 内容を確認したら、ディレクトリをリネーム。
    • リネーム例
      wiki   -> wiki_original (または削除)
      backup -> backup_original (または削除)
      wiki_replace   -> wiki
      backup_replace -> backup
      

ECO-Wiki (acronia)のHTMLデータ閲覧手順

  1. ecowiki_html_yyyymmdd.zip を展開する。
  2. img_yyyymdd.zipを展開し、ディレクトリ名をimgにしてHTMLと同じ階層に格納。
  3. HTMLをブラウザなどで閲覧する。
  • 参考:ディレクトリ構造
    <ecowiki_html>/
      img/   <--img_yyyymdd.zipを展開
        ecolist/
        ecossup/
        gamedb_info/
        gamedb_wiki/
        test/
        wiki/
      skin/
        logo.png
        pukiwiki.css
      _list.html
      *.html
      fold.js
    

2017/09/02(土)ECO終了

ECO終了

Twitterではつぶやいてたけどこっちでは何も書いてなかったΣ('◇'*)

Jasminでもちょっとログインしてたけど、その後はメインキャラにCCしてアップタウンで無事最後を迎えられました。

やりたいことはそれなりにやったつもりだし、落ち着いて最後を迎えられるかなと思ってたけど、人でいっぱいのアップタウンを見ると残念だなあと言う気持ちがどんどん強くなって、自分でもちょっとびっくり。12年分のいろいろなものが集まっていたのかもしれません。

SS

  • 最初
    ss20050812_015137.jpg
  • 最後
    ss20170831_232621.jpg

Tweet