【问题标题】:How to simulate HTTP requests?如何模拟 HTTP 请求?
【发布时间】:2013-09-27 01:47:16
【问题描述】:

如何模拟 HTTP 请求。例如,我想模拟将数据插入数据库的请求,以检查程序的安全性和可靠性。有什么好工具吗?

【问题讨论】:

  • 您的意思是可以发出 HTTP 请求的工具?一个行业标准是 curl:curl.haxx.se(编辑:啊,您可能是指负载测试 - Google 例如。server load testing tools)这对 SO 来说不是一个好问题,一些谷歌搜索会为您提供所需的所有解决方案。跨度>
  • 我通过Acunetix测试我的网络应用程序,你也可以用它修改请求。但如果你只想修改请求,请使用Tamper data

标签: php http jquery networking request


【解决方案1】:

对于 *nix 操作系统,您可以使用 telnetcurlwget 实用程序:

远程登录:

user@host:~$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /api.php?param1=10&param2=20 HTTP/1.1   # here is your request params
Host: localhost                             # required HTTP header
                                            # double ENTER for sending request

检查您的操作系统的telnet man-page 以获取高级选项。

卷曲:

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&param2=20

检查您的操作系统的curl man-page 以获取高级选项。

Wget:

user@host:~$ wget http://localhost/api.php?param1=10&param2=20

检查您的操作系统的wget man-page 以获取高级选项。

仅供参考,如果您选择 curl,那么您将允许使用 *nix shell 的强大功能:grepsedoutput redirection 和许多其他有用的东西。

【讨论】:

    【解决方案2】:

    如果你想从服务器端尝试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)POSTMANAdvanced REST client

    【讨论】:

      【解决方案3】:

      为了测试您的 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];
      ?>
      

      【讨论】:

        【解决方案4】:

        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:'
        

        【讨论】:

          【解决方案5】:

          我想你可以在https://w3webtool.com/http-request-method尝试HTTP请求

          您可以填写您的参数并模拟您的http请求方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-05-29
            • 1970-01-01
            • 2016-11-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-08
            • 1970-01-01
            相关资源
            最近更新 更多