【问题标题】:Simple HTTP server for logging requests only [closed]仅用于记录请求的简单 HTTP 服务器 [关闭]
【发布时间】:2017-10-15 20:09:35
【问题描述】:

我需要运行一个简单的 HTTP 服务器,它只记录传入的请求,什么也不记录。

它应该记录整个请求的内容。像标题、cookie、正文......

我只需要可以在几分钟内运行并且可以运行的简单解决方案。

实现语言并不重要。

类似于 Charles 但 HTTP 服务器而不是代理

【问题讨论】:

    标签: http logging http-headers httpserver charles-proxy


    【解决方案1】:

    对于一些超级简单的替代方案,有 netcat:

    $ nc -l -p 8080
    

    还有python的内置:

    $ python -m SimpleHTTPServer 8080
    

    (在最新版本的 python 中,3?)现在是:

    $ python -m http.server 8080
    

    Netcat 不会提供响应,因此您可能不会走得太远,SimpleHTTPServer 不会显示 POST 请求(至少)。但有时我发现两者都很有用。

    【讨论】:

    • netcat 有多个版本,具有不同的行为,令人恼火。 -p 标志即使在可选的情况下也能正常工作。
    • 对于 Mac OS X 上的我来说,nc -l -p <port> 给出了一个错误,而 nc -l <port> 工作但只让 nc 监听单个请求。 nc -k -l <port> 让它超过第一个请求。
    • 小心python http.server 命令,如果你请求'/',它会列出你目录的文件并允许你下载文件。
    【解决方案2】:

    如果您正在寻找可以记录所有请求信息的在线 HTTP 服务器,您可以使用RequestBin。 (2020 年更新:很遗憾,RequestBin 现在离线了。)

    如果您需要制作自己的 HTTP 日志服务器,Node.js + Express 是一个不错的选择。制作起来非常简单快捷:

    1. 安装Node.js
    2. 安装Express generator,以便可以在几秒钟内生成Web应用程序:npm install express-generator -g
    3. 生成一个 Web 应用程序并安装所有依赖项:
    快递我的应用 cd myapp npm 安装
    1. 编辑myapp/app.js并在app.use('/', index);行之前插入以下代码块:
    app.use(函数(req, res) { 控制台.log(req.headers); 控制台.log(req.cookies); 控制台.log(req.body); res.send('OK'); });
    1. 就是这样。现在在控制台中运行DEBUG=myapp:* npm start 并启动网络应用程序。发送到主机 localhost:3000 的所有 HTTP 请求都将与其标头、cookie 和正文一起记录。
    2. 如果需要将这些日志写入文件,可以使用logger模块,如log

    【讨论】:

    • 我在这里实现了建议的nodejs解决方案:github.com/humblewolf/loght
    • “RequestBin”网站好像下线了。
    • @humble_wolf 为什么要使用 docker 来做这么简单的事情?
    • @Chris RequestBin 下线了 很伤心:(
    • @JeanPaul docker 更简单:)
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多