78253


ブラウジングしながら特定のサイト内のサーバーレスポンスを  
ローカルPCファイルに保存し続けたいです

* * *

これまでにも何度か質問させていただいてchrome-extension で javascript 上にレスポンスを文字列として取得するまではできました

ただここから直接ファイルに保存するのが javascript のセキュリティ的に無理そうなので、ローカルに保存する為だけのサーバーをたてようかと思っています

Windows 上で http リクエストを受け取ってリクエストボディを保存するサーバーを手軽に実現できる方法はないでしょうか  
ウェブサーバーだと apache とか nginx とかしか使ったことがなくてその上に CGI
をのせてその中でリクエストボディをファイル保存するみたいなことをすればできそうではあるんですが

ruby, python, java, node あたりははいってるのでワンライナーとかリダイレクトあたりで手軽に実現できないでしょうか

リクエストボディのみでヘッダ情報は一切不要  
完全に自分用で公開したり配布したりしないのでセキュリティとかもどうでもよくて最低限落ちてる(起動忘れてる)のに気付けるとうれしいです

よろしくおねがいします

* * *

これまでの関連質問

[ブラウザで開いてるページの ajax
通信の内容を自動でローカルファイルに残したい](https://ja.stackoverflow.com/questions/76026/%e3%83%96%e3%83%a9%e3%82%a6%e3%82%b6%e3%81%a7%e9%96%8b%e3%81%84%e3%81%a6%e3%82%8b%e3%83%9a%e3%83%bc%e3%82%b8%e3%81%ae-
ajax-%e9%80%9a%e4%bf%a1%e3%81%ae%e5%86%85%e5%ae%b9%e3%82%92%e8%87%aa%e5%8b%95%e3%81%a7%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%ab%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e6%ae%8b%e3%81%97%e3%81%9f%e3%81%84)  
[chrome extension
内からローカルファイルに書き込むことってできませんか？](https://ja.stackoverflow.com/questions/78113/chrome-
extension-%e5%86%85%e3%81%8b%e3%82%89%e3%83%ad%e3%83%bc%e3%82%ab%e3%83%ab%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e6%9b%b8%e3%81%8d%e8%be%bc%e3%82%80%e3%81%93%e3%81%a8%e3%81%a3%e3%81%a6%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93%e3%81%8b)


CC BY-SA 4.0
2021-07-17T09:32:32.490
78249
2021-07-17T16:16:05.913
2021-07-17T16:16:05.913
3060
question
windows http
HTTP リクエストボディをファイル保存するだけのサーバー


Rubyのワンライナーだとたとえばこうです。

[code]

    ruby -r webrick -e 'f = open("body.txt", "ab"); s = WEBrick::HTTPServer.new(Port: 4000); s.mount_proc("/"){|req,res| f.puts(req.body); res.status = 200; res.body = "ok\n"}; s.start'
    
[/code]

この例はカレントディレクトリの body.txt というファイルに追加保存していきます。

なお、最新のRubyだと webrick は事前に `gem install webrick` でインストールする必要があります。


CC BY-SA 4.0
2021-07-17T11:40:13.477
78253
2021-07-17T11:40:13.477
292
78249
answer


目的とあっているかわかりませんが、電子ペーパーの通信解析(未完)用にずっと前に作成したツールを参考実装として紹介しておきます。

<https://github.com/raccy/denshi_paper/tree/master/tool>

これはリバースプロキシとして動作し、アクセスすると指定のIPアドレス宛にそのままリクエストを投げてそのレスポンスをそのまま返します。Vagrant上で実行して、hostsあたりを書き替えれば、特定サイトだけそのままアクセスできると思います。全てのリクエストとレスポンスを標準出力に表示するようにしていますが、適当なファイルにリダイレクトするか、その部分を書き替えればいいでしょう。

中身を見ればわかりますが、実装は本当にリクエストとレスポンスの受け渡しなので割と単純です。ただ、Cookie周りは工夫しないとうまくいかなったので、色々しています(なぜ、こうなっているのかは記憶に無いので、詳しいことは聞かないでください)。特定のメソッドだけで、Cookieとかを考慮しないとかでないと、ワンライナーで実現するのは難しいと思います。

ただ、電子ペーパー専用に作り込んでいる(mDNS通知とか、8080ポートを使うとか)ので、実装は参考程度にして、書き替えるか、作り直してください。(ライセンスは一つ上のディレクトリにあるLICENSEにMITと書いてあるので、煮るなり焼くなりご自由に)

なお、普通に解析目的なら[Fiddler Classic](https://www.telerik.com/fiddler/fiddler-
classic)等を使った方が簡単だと思われます。


CC BY-SA 4.0
2021-07-17T12:58:46.567
78255
2021-07-17T13:16:04.193
2021-07-17T13:16:04.193
7347
7347
78249
answer