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

我需要一个实时测试服务器,它通过HTTP GET接受我对基本信息的请求,并允许我POST(即使它真的什么都不做)。这完全是为了测试目的。

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

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

545672 次浏览

你自己设置一个就可以了。将这个片段复制到您的web服务器。



echo "<pre>";
print_r($_POST);
echo "</pre>";


把你想要的贴在那个页面上。完成了。

http://ptsv2.com/

“在这里,你会发现一个服务器,它可以接收你想要发送的任何POST,并存储内容供你审阅。”

创建选择一个免费的网络主机,并把以下代码

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

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

https://httpbin.org/

它将在请求中使用以下类型的任何数据进行回显:

< a href = " http://requestb。在noreferrer“rel = > http://requestb.in < / >类似于前面提到的工具,也有一个非常漂亮的UI。

RequestBin为您提供了一个URL,该URL将收集向它发出的请求,并让您以一种人性化的方式检查它们。 使用RequestBin查看HTTP客户端发送的内容,或者检查和调试webhook请求

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

由于持续的滥用,我们已经停止了RequestBin的公开托管版本,这使得它很难保持站点的可靠运行。请参阅指令以设置自己的自托管实例。

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

我已经创建了一个开源的可破解的本地测试服务器,您可以在几分钟内运行。你可以创建新的API,定义你自己的响应,并以任何你想要的方式破解它。

# eyz0: # eyz1

# EYZ0。它有很好的功能,无需登录就可以获得端点(24小时临时帐户)

我不确定是否有人愿意花这么大的力气来测试GET和POST调用。我使用Python Flask模块并编写了一个函数,该函数的功能类似于@Robert共享的功能。

from flask import Flask, request
app = Flask(__name__)


@app.route('/method', methods=['GET', 'POST'])
@app.route('/method/<wish>', methods=['GET', 'POST'])
def method_used(wish=None):
if request.method == 'GET':
if wish:
if wish in dir(request):
ans = None
s = "ans = str(request.%s)" % wish
exec s
return ans
else:
return 'This wish is not available. The following are the available wishes: %s' % [method for method in dir(request) if '_' not in method]
else:
return 'This is just a GET method'
else:
return "You are using POST"

当我运行这个时,如下所示:

C:\Python27\python.exe E:/Arindam/Projects/Flask_Practice/first.py
* Restarting with stat
* Debugger is active!
* Debugger PIN: 581-155-269
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

现在让我们打几通电话。我正在使用浏览器。

  • < p > # EYZ0

    This is just a GET method
    
  • < p > # EYZ0

    This wish is not available. The following are the available wishes:
    
    ['application', 'args', 'authorization', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environ', 'files', 'form', 'headers', 'host', 'json', 'method', 'mimetype', 'module', 'path', 'pragma', 'range', 'referrer', 'scheme', 'shallow', 'stream', 'url', 'values']
    
  • < p > # EYZ0

    {'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken=YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug/0.12.2', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/method/environ', 'SERVER_PROTOCOL': 'HTTP/1.1', 'QUERY_STRING': '', 'werkzeug.server.shutdown': , 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36', 'HTTP_CONNECTION': 'keep-alive', 'SERVER_NAME': '127.0.0.1', 'REMOTE_PORT': 49569, 'wsgi.url_scheme': 'http', 'SERVER_PORT': '5000', 'werkzeug.request': , 'wsgi.input': , 'HTTP_HOST': '127.0.0.1:5000', 'wsgi.multithread': False, 'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 'HTTP_ACCEPT': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 'wsgi.version': (1, 0), 'wsgi.run_once': False, 'wsgi.errors': ", mode 'w' at 0x0000000002042150>", 'REMOTE_ADDR': '127.0.0.1', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch, br'}
    

如果你想要一个本地测试服务器接受任何URL并将请求转储到控制台,你可以使用node:

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}/`);
});

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

$ node echo.js
Server running at http://localhost:3000/

然后你可以提交数据:

$ curl -d "[1,2,3]" -XPOST http://localhost:3000/foo/bar

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

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]

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

enter image description here

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

nc一行本地测试服务器

在Linux下用一行设置本地测试服务器:

nc -kdl localhost 8000

另一个shell上的请求生成器示例:

wget http://localhost:8000

然后在第一个shell中,你看到请求显示出来:

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

netcat-openbsd包中的nc广泛可用,并已预先安装在Ubuntu上。

在Ubuntu 18.04上测试。

这是一个邮差回声: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.'

回应:

{"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":{"...

你可能不需要任何网站,只需要打开浏览器,按F12就可以访问开发工具>控制台,然后在控制台写一些JavaScript代码来实现。

下面我将分享一些实现这一目标的方法:

For GET request: *。使用jQuery: < / p >

$.get("http://someurl/status/?messageid=597574445", function(data, status){
console.log(data, status);
});

POST请求:

  1. 使用jQuery $.ajax:
var url= "http://someurl/",
api_key = "6136-bc16-49fb-bacb-802358",
token1 = "Just for test",
result;
$.ajax({
url: url,
type: "POST",
data: {
api_key: api_key,
token1: token1
},
}).done(function(result) {
console.log("done successfuly", result);
}).fail(function(error) {
console.log(error.responseText, error);
});
  1. 使用jQuery,添加和提交
var merchantId = "AA86E",
token = "4107120133142729",
url = "https://payment.com/Index";


var form = `<form id="send-by-post" method="post" action="${url}">
<input id="token" type="hidden" name="token" value="${merchantId}"/>
<input id="merchantId" name="merchantId" type="hidden" value="${token}"/>
<button type="submit" >Pay</button>
</div>
</form> `;
$('body').append(form);
$("#send-by-post").submit();//Or $(form).appendTo("body").submit();
  1. 使用纯JavaScript:
`var api_key = "73736-bc16-49fb-bacb-643e58",
recipient = "095552565",
token1 = "4458",
url = 'http://smspanel.com/send/';`


``var form = `<form id="send-by-post" method="post" action="${url}">
<input id="api_key" type="hidden" name="api_key" value="${api_key}"/>
<input id="recipient" type="hidden" name="recipient"  value="${recipient}"/>
<input id="token1" name="token1" type="hidden" value="${token1}"/>
<button type="submit" >Send</button>
</div>
</form>`;``


document.querySelector("body").insertAdjacentHTML('beforeend',form);
document.querySelector("#send-by-post").submit();
  1. 甚至使用ASP。Net:
var url = "https://Payment.com/index";
Response.Clear();
var sb = new System.Text.StringBuilder();


sb.Append("<html>");
sb.AppendFormat("<body onload='document.forms[0].submit()'>");
sb.AppendFormat("<form action='{0}' method='post'>", url);
sb.AppendFormat("<input type='hidden' name='merchantId' value='{0}'>", "C668");
sb.AppendFormat("<input type='hidden' name='Token' value='{0}'>", "22720281459");
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");
Response.Write(sb.ToString());
Response.End();

你可以在本地运行实际的肯那个宿舍叫赖茨的 httpbin服务器(在docker下或裸机上):

https://github.com/postmanlabs/httpbin

运行dockerized

docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin

直接在您的机器上运行

## 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

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

Minimal 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)

如果你需要或想要一个简单的HTTP服务器与以下:

  • 是否可以在本地运行或在与公共Internet密封的网络中运行
  • 有基本的认证吗
  • 处理POST请求
我在PyPI上已经建立的优秀的SimpleHTTPAuthServer之上构建了一个。这增加了POST请求的处理: # EYZ0 < / p >

否则,所有其他公开可用的选项都已经很好很健壮了。

我不知道为什么这里所有的答案都让一个很简单的工作很辛苦!

当HTTP上有一个请求时,实际上客户端会发送一个HTTP_MESSAGE到服务器(阅读什么是HTTP_MESSAGE),你可以在只需简单的两步中创建一个服务器:

  1. < p > # EYZ0

    在许多基于unix的系统中,你已经安装了这个,如果你有windows只是谷歌它,安装过程真的很简单,你只需要一个nc.exe文件,然后你应该复制这个nc.exe文件的路径到你的path环境变量,并检查是否一切顺利,nc -h

  2. < p > # EYZ1

    只要在你的终端上输入nc -l -p 12345,一切都完成了!(在mac nc -l 12345 tnx 西尔维奥•Biasiol)


现在你有一个服务器正在监听http://localhost:12345,例如,你可以用axios发出一个post请求,如果你是一个js开发者:

axios.post('http://localhost:12345', { firstName: 'Fred' })

或者制作自己的xhr或在HTML文件中制作一个表单并将其提交给服务器,例如:

<form action="http://localhost:12345" method="post">

或以curlwget或其他方式提出请求。然后检查你的终端,一个原始的HTTP_MESSAGE应该出现在你的终端上,你可以开始你的快乐黑客;) # EYZ0 < / p >

另一个提供一些自定义且易于使用(无需安装、注册)的是https://beeceptor.com

您创建一个端点,向它发出初始请求,并可以调整响应。

一些在线httpbin:

< br > < br >

获取客户端ip,端口,ua..

  • < a href = " http://ifconfig。Io /" rel="nofollow noreferrer">http://ifconfig.io/ .

< br > < br >

获取客户端ip, isp