HTTP测试服务器接受GET/POST请求

Joh*_*igg 428 post http

我需要一个实时测试服务器,它通过HTTP GET接受我对基本信息的请求,并允许我POST(即使它真的没有做任何事情).这完全是出于测试目的.

一个很好的例子是在这里.它很容易接受GET请求,但我也需要一个接受POST请求的请求.

有没有人知道我可以发送虚拟测试消息的服务器?

Rob*_*ert 708

http://httpbin.org/

它回应了您的请求中使用的任何这些类型的数据:

  • @therobyouknow点击链接执行GET,但是如果你对该URL进行POST,则可以正常工作.尝试:`curl -iX POST httpbin.org/post`它返回200. (6认同)
  • @ user3280180`` $ pip install httpbin gunicorn && gunicorn httpbin:app``如上所述是httpbin.org (4认同)
  • 是否还可以创建本地httpbin服务器? (3认同)
  • 至少 httpbin.org/headers 会返回 405 - POST 上不允许使用方法,因此这不应该是一个可接受的答案。 (2认同)

cat*_*bot 113

http://ptsv2.com/

"在这里,您将找到一台服务器,它接收您希望提供的任何POST并存储内容供您查看."

  • 如果您正在运行从您无权访问内部的远程服务器触发的请求,那么这个请求非常好,因为它将保存请求以便以后检索. (6认同)
  • 使用http://ptsv3.com/ (5认同)
  • 也可以尝试http://requestb.in - 它也可以保存以后检查的请求. (2认同)
  • 与http://httpbin.org/put不同,它返回一个非常有用的响应,提供有关您的请求的详细信息.特别是在文件上传的情况下,它非常有用,因为您可以看到您在httpbin.org上无法在服务器上上传的文件. (2认同)

Mik*_*g36 40

http://requestb.in类似于已经提到的工具,也有一个非常好的用户界面.

RequestBin为您提供了一个URL,用于收集对其发出的请求,并让您以人性化的方式检查它们.使用RequestBin查看HTTP客户端正在发送的内容或检查和调试webhook请求.

虽然它已于2018年3月21日停产.

由于持续滥用,我们已停止公开托管的RequestBin版本,因此很难确保网站的可靠性.请参阅说明为建立自己的自托管的实例.

  • RequestBin 不再可用。 (4认同)
  • [PutsReq](http://putsreq.com/)也类似于RequestBin,但它允许您使用JS编写所需的响应. (3认同)

Pab*_*ero 29

看看PutsReq,它与其他类似,但它也允许您使用JavaScript编写您想要的响应.

  • 伟大的网站 - 它似乎是最直观和良好的文档,可以帮助您检查请求类型,标题,表单数据等. (2认同)

Wil*_*hes 23

如果您希望本地测试服务器接受任何URL并将请求转储到控制台,则可以使用节点:

const http = require("http");

const hostname = "0.0.0.0";
const port = 3000;

const server = http.createServer((req, res) => {
  console.log(`\n${req.method} ${req.url}`);
  console.log(req.headers);

  req.on("data", function(chunk) {
    console.log("BODY: " + chunk);
  });

  res.statusCode = 200;
  res.setHeader("Content-Type", "text/plain");
  res.end("Hello World\n");
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://localhost:${port}/`);
});
Run Code Online (Sandbox Code Playgroud)

将其保存在文件'echo.js'中并按如下方式运行:

$ node echo.js
Server running at http://localhost:3000/
Run Code Online (Sandbox Code Playgroud)

然后,您可以提交数据:

$ curl -d "[1,2,3]" -XPOST http://localhost:3000/foo/bar
Run Code Online (Sandbox Code Playgroud)

它将显示在服务器的标准输出中:

POST /foo/bar
{ host: 'localhost:3000',
  'user-agent': 'curl/7.54.1',
  accept: '*/*',
  'content-length': '7',
  'content-type': 'application/x-www-form-urlencoded' }
BODY: [1,2,3]
Run Code Online (Sandbox Code Playgroud)


Pat*_*irk 19

Webhook Tester是一个很棒的工具:https://webhook.site (GitHub)

在此输入图像描述

对我来说很重要,它显示了请求者的IP,当您需要将IP地址列入白名单但不确定它是什么时,它会很有用.


Cir*_*四事件 10

nc 一线本地测试服务器

在Linux下一行安装本地测试服务器:

nc -kdl localhost 8000
Run Code Online (Sandbox Code Playgroud)

另一个外壳上的样本请求制作者:

wget http://localhost:8000
Run Code Online (Sandbox Code Playgroud)

然后在第一个外壳上,您会看到发出的请求:

GET / HTTP/1.1
User-Agent: Wget/1.19.4 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: localhost:8000
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)

ncnetcat-openbsd软件包中的广泛可用,并预装在Ubuntu上。

在Ubuntu 18.04上测试。

  • '虽然是真的;执行 echo -e "HTTP/1.1 200 OK\n" | 数控-Nl 8000;done` 会让 nc 每次响应 200 OK 代码。 (5认同)
  • `nc -kdl localhost 8000` 会循环监听,所以不需要 bash `while`。但是,`nc` 不会响应,因此测试查询将等到无响应超时。 (4认同)

ccp*_*zza 9

您可以在本地运行实际的Ken Reitz httpbin服务器(在 docker 下或在裸机上):

https://github.com/postmanlabs/httpbin

运行 dockerized

docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
Run Code Online (Sandbox Code Playgroud)

直接在你的机器上运行

## install dependencies
pip3 install gunicorn decorator httpbin werkzeug Flask flasgger brotlipy gevent meinheld six pyyaml

## start the server
gunicorn -b 0.0.0.0:8000 httpbin:app -k gevent
Run Code Online (Sandbox Code Playgroud)

现在您的个人 httpbin 实例在http://0.0.0.0:8000上运行(对您的所有 LAN 可见)

最小 Flask REST 服务器

我想要一个返回预定义响应的服务器,所以我发现在这种情况下使用最小的 Flask 应用程序更简单:

#!/usr/bin/env python3

# Install dependencies:
#   pip3 install flask

import json

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def root():
    # spit back whatever was posted + the full env 
    return jsonify(
        {
            'request.json': request.json,
            'request.values': request.values,
            'env': json.loads(json.dumps(request.__dict__, sort_keys=True, default=str))
        }
    )

@app.route('/post', methods=['GET', 'POST'])
def post():
    if not request.json:
        return 'No JSON payload! Expecting POST!'
    # return the literal POST-ed payload
    return jsonify(
        {
            'payload': request.json,
        }
    )

@app.route('/users/<gid>', methods=['GET', 'POST'])
def users(gid):
    # return a JSON list of users in a group
    return jsonify([{'user_id': i,'group_id': gid } for i in range(42)])

@app.route('/healthcheck', methods=['GET'])
def healthcheck():
    # return some JSON
    return jsonify({'key': 'healthcheck', 'status': 200})

if __name__ == "__main__":
    with app.test_request_context():
        app.debug = True
    app.run(debug=True, host='0.0.0.0', port=8000)
Run Code Online (Sandbox Code Playgroud)


ash*_*deh 6

我不知道为什么这里的所有答案都使一项非常简单的工作变得非常困难!

当 HTTP 上有请求时,实际上客户端会向服务器发送 HTTP_MESSAGE(了解什么是 HTTP_MESSAGE ),您只需 2 个简单的步骤即可创建服务器:

  1. 安装netcat:

    在许多基于 UNIX 的系统中,你已经安装了这个,如果你有 Windows,只需 google 一下,安装过程非常简单,你只需要一个nc.exe文件,然后你应该将此 nc.exe 文件的路径复制到你的路径环境变量并检查一切是否正常nc -h

  2. 创建一个正在侦听的服务器localhost:12345

    nc -l -p 12345只需在终端上输入,一切就完成了!(在 mac nc -l 12345tnx Silvio Biasiol中)


现在你有一个正在监听的服务器(不是真正的Web服务器,只是一个网络监听器)http://localhost:12345,例如你可以使用axios发出post请求如果你是一个js开发人员:

axios.post('http://localhost:12345', { firstName: 'Fred' })
Run Code Online (Sandbox Code Playgroud)

或者自己制作xhr或在 HTML 文件中制作表单并将其提交到服务器,等等。喜欢:

<form action="http://localhost:12345" method="post">
Run Code Online (Sandbox Code Playgroud)

curl或者使用或等发出请求。wget然后检查您的终端,原始 HTTP_MESSAGE 应该出现在您的终端上,您就可以开始愉快的黑客攻击了;) 在此输入图像描述

  • 在 Mac 上只是“nc -l 12345” (2认同)
  • 它不是一个网络服务器,而是一个网络监听器。它不会发回任何响应(连同响应标头等,以及升级,...) (2认同)

gre*_*sse 5

创建选择一个免费的Web主机并输入以下代码

 <h1>Request Headers</h1>
 <?php
 $headers = apache_request_headers();

 foreach ($headers as $header => $value) {
     echo "<b>$header:</b> $value <br />\n";
 }
 ?>
Run Code Online (Sandbox Code Playgroud)


Mik*_*ike 5

https://www.mockable.io。它具有无需登录即可获取端点的出色功能(24小时临时帐户)


rog*_*ack 5

这是一个邮递员回声:https : //docs.postman-echo.com/

例:

curl --request POST \
  --url https://postman-echo.com/post \
  --data 'This is expected to be sent back as part of response body.'
Run Code Online (Sandbox Code Playgroud)

响应:

{"args":{},"data":"","files":{},"form":{"This is expected to be sent back as part of response body.":""},"headers":{"host":"postman-echo.com","content-length":"58","accept":"*/*","content-type":"application/x-www-form-urlencoded","user-agent":"curl/7.54.0","x-forwarded-port":"443","x-forwarded-proto":"https"},"json":{"...
Run Code Online (Sandbox Code Playgroud)


小智 5

另一种提供一些定制且易于使用(无需安装、注册)的工具是Beeceptor。您创建一个端点,向其发出初始请求,然后可以调整响应。

Beeceptor 不仅仅是一个 HTTP 检查工具。你还可以做更多:

  • HTTP拦截和检查

    • 您可以定义规则来发送特定的 HTTP 响应代码。
    • 用于检查传入请求的专用子域或端点。
    • 它只是起作用,比如对 API 基本 URL(在代码/配置中)的直接替换来检查所有传入路径。
  • 模拟服务器- 发送所需的 HTTP 响应。您可以定义规则来根据路由/路径匹配请求。Beeceptor 的模拟模板非常强大,允许您选择查询参数并发送响应负载。

  • 反向代理:MITM 或反向代理,可让您将传入请求路由到目标服务器并检查流量。在调试未记录在应用程序日志中的有效负载时,这非常方便。