如何模拟 HTTP 请求。例如,我想模拟将数据插入数据库的请求,以检查程序的安全性和可靠性。有什么好的工具吗?
5 回答
对于 *nix 操作系统,您可以使用telnet、curl或wget实用程序:
远程登录:
user@host:~$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /api.php?param1=10¶m2=20 HTTP/1.1 # here is your request params
Host: localhost # required HTTP header
# double ENTER for sending request
检查操作系统的telnet 手册页以获取高级选项。
卷曲:
user@host:~$ curl \
--header 'Host: localhost' \
--user-agent 'Mozilla/5.0 (Linux x86_64; rv:10.0.12) Gecko/ Firefox/10.0.12' \
--no-keepalive \
http://localhost/api.php?param1=10¶m2=20
检查操作系统的curl 手册页以获取高级选项。
得到:
user@host:~$ wget http://localhost/api.php?param1=10¶m2=20
检查操作系统的wget 手册页以获取高级选项。
仅供参考,如果您选择curl那么您将允许使用 *nix shell 的强大功能:grep、sed、输出重定向和许多其他有用的东西。
为了测试您的 PHP 应用程序,您可以使用如下测试框架:SimpleTest
<?php
require_once('simpletest/browser.php');
$browser = &new SimpleBrowser();
$browser->get('http://php.net/');
$browser->click('reporting bugs');
$browser->click('statistics');
$page = $browser->click('PHP 5 bugs only');
preg_match('/status=Open.*?by=Any.*?(\d+)<\/a>/', $page, $matches);
print $matches[1];
?>
如果你想从服务器端尝试 cURL 绝对是最简单的方法。由于您使用 PHP 标记了这个问题,这里是一个模拟 POST 请求的简单 PHP 脚本。
<?php
$url = "http://yoursite.com/yourscript.php";
$postdata = array (
"name" => "Joe",
"address" => "Some street",
"state" => "NY",
);
$req = curl_init($url);
curl_setopt($req, CURLOPT_POST, true);
curl_setopt($req, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($req);
如果您想尝试来自浏览器的请求,Chrome 和 Firefox 都有非常好的扩展。例如(对于 chrome)POSTMAN或Advanced REST client。
HTTPie由一个“ http ”命令组成,专为轻松调试和与 HTTP 服务器、RESTful API 和 Web 服务交互而设计。它可以在所有平台上使用。
使用 Github API 对身份验证问题发表评论:
$ http -a USERNAME POST https://api.github.com/repos/jkbrzt/httpie/issues/83/comments body='HTTPie is awesome! :heart:'
我认为您可以在https://w3webtool.com/http-request-method尝试 HTTP 请求
您可以填写您的参数并模拟您的http请求方法。