php telnet 获取,用telnet和php的curl库测试http

一.telnet测试http

telnet简介

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

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

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

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报文如图所示:

8e2a259d30eb44d064199b3ef9813018.png

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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

HTTP/1.1200OK

Date:Mon,18Nov201304:

46:58GMT

Server:Apache/2.2.17(Win32)mod_ssl/2.2.17OpenSSL/0.9.8oPHP/5.3.4mod_perl/2.0.4Perl/v5.10.1

Last-Modified:Tue,18Jun201302:32:44GMT

ETag:"2e000000011ebf-dd-4df6487339a58"

Accept-Ranges:bytes

Content-Length:221

Connection:close

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

<!doctypehtml>

<htmlng-app="drag">

<head>

<scriptsrc="angular-1.0.7/angular.min.js"></script>

<scriptsrc="script.js"></script>

</head>

<body>

<spandraggable>DragME</span>

</body>

</html>Connectionclosedbyforeignhost.

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

1

2

3

4

5

6

7

8

HTTP/1.1200OK

Date:Mon,18Nov201305:34:37GMT

Server:Apache/2.2.17(Win32)mod_ssl/2.2.17OpenSSL/0.9.8oPHP/5.3.4mod_perl/2.0.4Perl/v5.10.1

X-Powered-By:PHP/5.3.5

Content-Length:31

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

Thedatawhatyousendishello

二.php的curl测试http

首先要保证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);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?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);

1

2

3

4

5

6

7

8

9

10

11

12

<?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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值