• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

用telnet和php的curl库测试http

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.telnet测试http

telnet简介

    Telnet协议是TCP/IP协议族的其中之一,是Internet远端登录服务的标准协议和主要方式,常用于网页服务器的远端控制,可供使用者在本地主机执行远端主机上的工作。

    使用者首先在电脑执行Telnet程序,连线至目的地服务器,然后输入帐号和密码以验证身份。使用者可以在本地主机输入命令,然后让已连接的远端主机执行,就像直接在对方的控制台上输入一样。

    传统Telnet会话所传输的资料并未加密,帐号和密码等敏感资料容易会被窃听,因此很多服务器都会封锁Telnet服务,改用更安全的SSH

   (以上介绍摘自维基百科http://zh.wikipedia.org/wiki/Telnet

    windows7系统中telnet

    windows7默认是关闭telnet服务的,windows7启用telnet过程见 http://soft.yesky.com/204/31059704.shtml

 

    用telnet的远程登录命令示例 telnet 127.0.0.1或者telnet localhost,如果连接成功,输入用户名、密码便可以远程控制目标主机了。

    下面是重点,用telnet测试http

    比如说,我要用get和post方法获得http服务器222.31.76.182上的页面。

    http报文如图所示:

    http请求头的格式参见http://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE和http://royaki.iteye.com/blog/685317

    (以下测试均在ubuntu系统上进行)

    GET方法:

    1.使用telnet连接到HTTP服务器222.31.76.182,并指定80端口

       telnet 222.31.76.182 80

    2.连接http服务器后,发送http请求信息:

      GET /test.html HTTP/1.1

      Connection:close

      Host:222.31.76.182

     输入上面的内容后,连续敲击两个回车,就可以看到返回的结果了。

HTTP/1.1 200 OK
Date: Mon, 18 Nov 2013 04:

46:58 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
Last-Modified: Tue, 18 Jun 2013 02:32:44 GMT
ETag: "2e000000011ebf-dd-4df6487339a58"
Accept-Ranges: bytes

Content-Length: 221

Connection: close
Content-Type: text/html; charset=utf-8

<!doctype html>
<html ng-app="drag">

  <head>
    <script src="angular-1.0.7/angular.min.js"></script>
    <script src="script.js"></script>
  </head>
  <body>
    <span draggable>Drag ME</span>
  </body>
</html>Connection closed by foreign host.

 

    POST 方法:

    telnet 222.31.76.182

    POST /telnettest.php HTTP/1.1

    Host: 222.31.76.182

    Content-Type: application/x-www-form-urlencoded

    Content-Length: 10

                                                                     //注意此处要空一行,作为http请求头与请求内容直接的分隔

    test=hello

    按两次enter键,将会出现类似于以下的结果,最后一行是返回的数据

HTTP/1.1 200 OK
Date: Mon, 18 Nov 2013 05:34:37 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.5
Content-Length: 31
Content-Type: text/html; charset=utf-8

The data what you send is hello

二.php的curl测试http

  这里仅举例说明php的curl函数库的用法,详细用法参考php官方文档http://my.oschina.net/leadsir/blog/137755

    首先要保证php的设置里开启了curl库。windows下只需修改php.ini文件,将extention=php_curl.dll前的注释符删掉就行,linux下需要重新编译PHP,在configure时加上“--with-curl”参数。

    获取一个页面

<?php
    // 初始化一个 cURL 对象
    $curl = curl_init();

    // 设置你需要抓取的URL。还是之前的页面
    curl_setopt($curl, CURLOPT_URL, 'http://localhost/test.html');

    // 设置header   此处是启用时会将头文件的信息作为数据流输出。
    curl_setopt($curl, CURLOPT_HEADER, 1);

    // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。CURLOPT_RETURNTRANSFER以文件流的形式返回。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    // 运行cURL,请求网页
    $data = curl_exec($curl);

    // 关闭URL请求
    curl_close($curl);

    // 显示获得的数据
    var_dump($data);

    此处获得的结果跟上面的telnet用get获取的内容是一样的。

    POST数据

<?php
    $test = 'hello';
    $curlPost = 'test=' . urlencode($test);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://localhost/telnettest.php');//请原谅我此处没有再重新写服务器端的文件
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($ch);
    curl_close($ch);
    var_dump($data);

此处获得的结果跟上面telnet用post方法获取的内容是一样的。

三.linux的curl

    当然如果你用的是linux系统,用curl也是一种非常好的http测试工具。可参考http://www.linuxidc.com/Linux/2008-01/10891.htm

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php自定义函数及内部函数发布时间:2022-07-10
下一篇:
PHP中单引号与双引号的区别发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap