cmd http php请求,模拟Http请求

使用Telnet模拟Http请求

打开cmd运行框,输入Telnet www.baidu.com 80后按回车键。此时看到的界面是黑屏状态,标题栏显示 Telnet www.baidu.com

如果提示telnet不是内部或外部命令可以参考百度经验。利用快捷键打开“Ctrl+]”打开Telnet回显,按回车键后可以进入编辑状态。

回显模式:

bVUweD?w=548&h=229

编辑模式:

bVUweI?w=460&h=243

接下来是考验手速的时候了,单身党一定完胜的游戏。输入GET /index.html HTTP/1.1按回车键,接着输入HOST:www.baidu.com,连续按两次回车键(两次回车代表提交请求)输入速度不够快的话,将会连接失败。可以将代码写入记事本,使用时直接复制就好了。

然后来看看服务器的返回数据:

bVUweN?w=668&h=675

PHP模拟HTTP请求

Http.class.php

class HttpRequest

{

private $_host; //主机地址

private $_port; //端口号

private $_requestHead; //请求头信息

private $_requestMethod; //请求方式

private $_requestPath; //请求路径

private $_requestContent = ''; //请求正文

private $_httpVersion = '1.1'; //协议版本

/**

* [__contruction 初始化成员属性]

* @author:JieJie

*/

public function __construct($host,$port,$method,$path)

{

$this->_host = $host;

$this->_port = $port;

$this->_requestMethod = strtoupper($method);

$this->_requestPath = $path;

}

/**

* [setRequestHead 设置请求头信息]

* @author:JieJie

* @DateTime:2016-11-25T00:22:04+0800

* @param [array] $data [头信息数组]

*/

public function setRequestHead($data) {

foreach ($data as $key => $value) {

$this->_requestHead .= $key.':'.$value."\r\n";

}

$this->_requestHead .= "\r\n";

return $this;

}

/**

* [setRequestContent 设置请求正文]

* @author:JieJie

* @DateTime:2016-11-25T00:37:53+0800

* @param [array] $data

*/

public function setRequestContent($data) {

if($this->_requestMethod != 'POST')

return $this;

foreach ($data as $key => $value) {

$this->_requestContent .= "{$key}={$value}&";

}

$this->_requestContent = rtrim($this->_requestContent,'&')."\r\n";

return $this;

}

/**

* [sendRequest 发送HTTP请求并获取结果]

* @author:JieJie

* @DateTime:2016-11-25T00:51:53+0800

*/

public function sendRequest() {

//拼接请求行

$http = "{$this->_requestMethod} {$this->_requestPath} HTTP/{$this->_httpVersion}\r\n";

//拼接请求头

$http .= $this->_requestHead;

//拼接请求正文

$http .= $this->_requestContent;

//创建连接

$fp = fsockopen($this->_host,$this->_port,$errno,$errstr);

if(!$fp)

throw new Exception($errstr);

//发送请求

fwrite($fp, $http);

//获得结果

$result = '';

while (!feof($fp))

$result .= fgets($fp);

return $result;

}

}

?>

client.php

include './Http.class.php';

$Http = new HttpRequest('www.jiejieyh.cn','80','POST','/login.php');

$requestHead = [

'Host'=>'www.jiejieyh.cn',

'User-Agent'=>'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',

'Accept'=>'application/json, text/javascript, */*; q=0.01',

'Accept-Language'=>'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',

'Accept-Encoding'=>'gzip, deflate',

'Content-Type'=>'application/x-www-form-urlencoded;',

'charset'=>'UTF-8',

'X-Requested-With'=>'XMLHttpRequest',

'Referer'=>'http://www.jiejieyh.cn',

'Content-Length'=>47,

'Connection'=>'keep-alive'

];

$requestContent = [

'password' => 'admin',

'username' => '123456',

];

$result = $Http->setRequestHead($requestHead)->setRequestContent($requestContent)->sendRequest();

echo $result;

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值