一.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

用telnet和php的curl库测试http的更多相关文章

  1. php的cURL库介绍

    cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的 ...

  2. 网络爬虫2--PHP/CURL库(client URL Request Library)

    PHP/CURL库功能   多种传输协议.CURL(client URL Request Library),含义是“客户端URL请求库”. 不像上一篇所用的PHP内置网络函数,PHP/CURL支持多种 ...

  3. linux编译curl库的动态库so(转)

    转载请注明出处:帘卷西风的专栏(http://blog.csdn.NET/ljxfblog) curl库是一个很强大的http开源库,c++里面能够很方便的和http服务器交互. 最近项目开始内测,开 ...

  4. CURL库在C++程序中的运用浅析

    最近由于要做一个爬虫项目,要对很多网站进行爬取,所以一直都在看这方面的文章.在翻阅了很多资料后,下载了一个curl库,着实对项目有了很大的帮助. 一.LibCurl基本编程框架 二.一些基本的函数 三 ...

  5. [转]linux 下 使用 c / c++ 调用curl库 做通信开发

    example:   1. http://curl.haxx.se/libcurl/c/example.html  2. http://www.libcurl.org/book:  1. http:/ ...

  6. curl库 c语言的curl 编程

    c语言的curl 编程 [Linux@centos-64-min exercise]# gcc -Wall -o curltest curltest.c /tmp/ccosVANi.o: In fun ...

  7. 嵌入式 Linux下curl库API简单介绍

    1:CURLcode curl_global_init(long flags); 这个函数全局需要调用一次(多次调用也可以,不过没有必要), 所以这也是把Curlplus设计成单体类的原因,curl_ ...

  8. 采用curl库

    Windows通过使用curl库: 到http://curl.haxx.se/下了个curl的源代码下来,源代码是用VC6编译的,我在VS2005下又一次进行编译.竟然仅仅有一个警告. cUrl的实现 ...

  9. ZH奶酪:PHP的cURL库

    原文链接:http://coolshell.cn/articles/664.html 参考链接:http://www.runoob.com/php/php-ref-curl.html 使用PHP的cU ...

随机推荐

  1. windows server 备份与还原

    1:文件备份: ①Goodsync ②Acronis Backup & Recovery 2:域控&系统备份 ①CMD -- >NTbackup (不支持异机还原) ②Acron ...

  2. 关于OJ上内存问题的试验

    char类型占一个字节 int类型占4个字节 如果杭电OJ上给的范围是32678K,那么内存大小就是32678*1024=33554432 那么可以开到多大的数组呢?!可以开到很大,但是可用的就只有3 ...

  3. html5,html5教程

    html5,html5教程 1.向后兼容 HTML5是这样被定义的:能向后兼容目前UA处理内容的方式.为了让语言更简单,一些老的元素和Attribute被舍弃.比如一些纯粹用于展现的元素(译注:即非语 ...

  4. 解决Linux中遇到No such device

    虚拟机备份转移后,网络启动异常,提示“SIOCSIFADDR: No such device” he problem lies in the fact that ethernet MAC addres ...

  5. linux路由配置负载均衡

    负载平衡ip route add default scope global nexthop via XX.XX.XX.XX dev eth0 weight 1 nexthop via XX.XX.XX ...

  6. PHP字符串拼接与MySQL语句

    这个部分总是钻牛角尖.总是出错. public function getList($pagesize=25){ $where = '1'; $tableName = $this->getTabl ...

  7. js中settimeout方法加参数

    js中settimeout方法加参数的使用. 简单使用看w3school  里面没有参数调用,  例子: <script type="text/javascript"> ...

  8. ubuntu 12.04 LTS(64位)安装apache2

    在网上找了很多文章,说法不一,不知道应该用哪种方法,后来想就用其中最简单的吧,装不好再卸了重装, 然后就...装上了,用的是tar包源码安装,下面是步骤 1.去官网下载apache2.2.25源码包, ...

  9. 随机获取Mysql数据表的一条或多条记录

    随机获得Mysql数据表的一条或多条记录有很多方法,下面我就以users(userId,userName,password......)表(有一百多万条记录)为例,对比讲解下几个方法效率问题: sel ...

  10. C-链表的一些基本操作【创建-删除-打印-插入】

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define LEN sizeof(stru ...