它与您请求中使用的任何这些类型的数据相呼应:
https://httpbin.org/anything 返回以下大部分内容。
https://httpbin.org/ip 返回源 IP。
https://httpbin.org/user-agent 返回用户代理。
https://httpbin.org/headers 返回标题字典。
https://httpbin.org/get 返回 GET 数据。
https://httpbin.org/post 返回 POST 数据。
https://httpbin.org/put 返回 PUT 数据。
https://httpbin.org/delete 返回 DELETE 数据
https://httpbin.org/gzip 返回 gzip 编码的数据。
https://httpbin.org/status/:code 返回给定的 HTTP 状态代码。
https://httpbin.org/response-headers?key=val 返回给定的响应标头。
https://httpbin.org/redirect/:n 302 重定向 n 次。
https://httpbin.org/relative-redirect/:n 302 相对重定向 n 次。
https://httpbin.org/cookies 返回 cookie 数据。
https://httpbin.org/cookies/set/:name/:value 设置一个简单的 cookie。
https://httpbin.org/basic-auth/:user/:passwd 挑战 HTTPBasic 身份验证。
https://httpbin.org/hidden-basic-auth/:user/:passwd 404'd BasicAuth。
https://httpbin.org/digest-auth/:qop/:user/:passwd 挑战 HTTP Digest Auth。
https://httpbin.org/stream/:n 流 n–100 行。
https://httpbin.org/delay/:n 延迟响应 n–10 秒。
“在这里你会找到一个服务器,它接收你希望给它的任何 POST 并存储内容供你查看。”
Webhook Tester 是一个很棒的工具:https://webhook.site (GitHub)
https://i.stack.imgur.com/98QII.png
对我来说很重要,它显示了请求者的 IP,当您需要将 IP 地址列入白名单但不确定它是什么时,这很有帮助。
http://requestb.in 与前面提到的工具类似,并且用户界面也非常漂亮。
RequestBin 为您提供一个 URL,该 URL 将收集对其发出的请求,并让您以人性化的方式检查它们。使用 RequestBin 查看您的 HTTP 客户端发送的内容或检查和调试 webhook 请求。
尽管它已于 2018 年 3 月 21 日停产。
我们已经停止了 RequestBin 的公共托管版本,因为持续的滥用使网站难以可靠地保持运行。请参阅设置您自己的自托管实例的说明。
如果您想要一个接受任何 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}/`);
});
将其保存在文件“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]
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 上测试。
nc -kdl localhost 8000
将循环监听,因此不需要 bash while
。但是,nc
不会响应,因此测试查询将等到超时才响应。
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; done
将使 nc 每次都以 200 OK 代码响应。
这是一个 Postman 回声: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":{"...
您可以在本地运行实际的 Ken Reitz's 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
现在您的个人 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)
alias httpbin='docker run -p 80:80 kennethreitz/httpbin'
👍
https://www.mockable.io。它具有无需登录即可获取端点的不错功能(24小时临时帐户)
创建选择一个免费的虚拟主机并输入以下代码
<h1>Request Headers</h1>
<?php
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
echo "<b>$header:</b> $value <br />\n";
}
?>
print_r($headers)
并避免 foreach 循环?
我创建了一个开源的可破解本地测试服务器,您可以在几分钟内运行它。您可以创建新的 API,定义自己的响应并以您希望的任何方式对其进行破解。
Github 链接:https://github.com/prabodhprakash/localTestingServer
我不知道为什么这里的所有答案都让一个非常简单的工作变得非常困难!
当有 HTTP 请求时,实际上客户端会向服务器 (read about what is HTTP_MESSAGE) 发送 HTTP_MESSAGE,您可以只需 2 个简单的步骤即可创建服务器:
安装 netcat:在许多基于 unix 的系统中,你已经安装了这个,如果你有 Windows,只需 google 即可,安装过程非常简单,你只需要一个 nc.exe 文件,然后你应该复制这个 nc.exe 的路径将文件添加到您的路径环境变量中,并使用 nc -h 检查每个想法是否正常 创建一个正在侦听 localhost:12345 的服务器:只需在终端上键入 nc -l -p 12345 ,一切就完成了! (在 mac nc -l 12345 tnx Silvio Biasiol 中)
现在您有一个正在监听 http://localhost:12345
的服务器发出一个 post 请求:
axios.post('http://localhost:12345', { firstName: 'Fred' })
如果您是 js 开发人员或制作自己的 xhr
或在 HTML 文件中制作表单并将其提交到服务器,...喜欢:
<form action="http://localhost:12345" method="post">
或使用 curl
或 wget
等发出请求。然后检查您的终端,原始 HTTP_MESSAGE 应该出现在您的终端上,您可以开始愉快的黑客攻击;)
nc -l 12345
您可能不需要任何网站,只需打开浏览器,按 F12
即可访问开发者工具 >控制台,然后在控制台中编写一些 JavaScript 代码来执行此操作。
在这里,我分享一些方法来实现这一点:
对于 GET 请求:*。使用 jQuery:
$.get("http://someurl/status/?messageid=597574445", function(data, status){
console.log(data, status);
});
对于 POST 请求:
使用 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);
});
使用 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();
使用纯 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();
甚至使用 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();
如果您需要或想要一个具有以下功能的简单 HTTP 服务器:
可以在本地运行,也可以在与公共 Internet 隔离的网络中运行
有一些基本的身份验证
处理 POST 请求
我在 PyPI 上已经很出色的 SimpleHTTPAuthServer 之上构建了一个。这增加了对 POST 请求的处理:https://github.com/arielampol/SimpleHTTPAuthServerWithPOST
否则,所有其他公开可用的选项已经如此出色和强大。
我不确定是否有人会这么痛苦地测试 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)
现在让我们尝试一些调用。我正在使用浏览器。
http://127.0.0.1:5000/method 这只是一个 GET 方法
http://127.0.0.1:5000/method/NotCorrect 这个愿望不可用。以下是可用的愿望:['application', 'args', 'authorization', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environ ', 'files', 'form', 'headers', 'host', 'json', 'method', 'mimetype', 'module', 'path', 'pragma', 'range', 'referrer', “方案”、“浅”、“流”、“网址”、“值”]
http://127.0.0.1:5000/method/environ {'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': ", 模式 'w' 在 0x0000000002042150>", 'REMOTE_ADDR': '127.0.0.1', ' HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'HTTP_ACCEPT_ENC ODING': 'gzip, deflate, sdch, br'}
一些在线httpbin:
https://httpbin.org/
https://httpbingo.org/
https://quic.aiortc.org/httpbin/
获取客户端IP、端口、UA ..
http://ifconfig.io/
获取客户端IP,ISP
https://www.cip.cc/
自己设置一个就行了。将此代码段复制到您的网络服务器。
echo "<pre>"; print_r($_POST); echo "</pre>";
只需将您想要的内容发布到该页面即可。完毕。
$ pip install httpbin gunicorn && gunicorn httpbin:app
提到的是 httpbin.orgcurl -iX POST httpbin.org/post
它返回 200。