当前位置: 首页 > 后端技术 > PHP

模拟Http请求

时间:2023-03-29 19:20:29 PHP

使用Telnet模拟Http请求打开cmd运行框,输入Telnetwww.baidu.com80回车。此时看到的界面是黑屏状态,标题栏显示Telnetwww.baidu.com如果提示telnet不是内部或外部命令,可以参考百度经验。使用快捷键打开“Ctrl+]”打开Telnetecho,按回车键进入编辑状态。回声模式:编辑模式:接下来就是考验手速的时候了,单方必胜的游戏。输入GET/index.htmlHTTP/1.1回车,然后输入HOST:www.baidu.com,连续两次回车(两次回车代表提交请求)。如果输入速度不够快,连接就会失败。您可以将代码写入记事本,使用时复制即可。然后看服务器的返回数据:PHP模拟HTTP请求Http.class.php_host=$host;$this->_port=$port;$this->_requestMethod=strtoupper($method);$this->_requestPath=$path;}/***[setRequestHead设置请求头信息]*@author:JieJie*@DateTime:2016-11-25T00:22:04+0800*@param[数组]$data[头信息数组]*/publicfunction设置请求头($数据){foreach($dataas$key=>$value){$this->_requestHead.=$key.':'.$value."\r\n";}$this->_requestHead.="\r\n";返回$这个;}/***[setRequestContent设置请求文本]*@author:JieJie*@DateTime:2016-11-25T00:37:53+0800*@param[array]$data*/publicfunctionsetRequestContent($data){if($this->_requestMethod!='POST')返回$this;foreach($dataas$key=>$value){$this->_requestContent.="{$key}={$value}&";}$this->_requestContent=rtrim($this->_requestContent,'&')."\r\n";返回$这个;}/***[sendRequest发送HTTP请求并获取结果]*@author:JieJie*@DateTime:2016-11-25T00:51:53+0800*/publicfunctionsendRequest(){//拼接请求行$http="{$this->_requestMethod}{$this->_requestPath}HTTP/{$this->_httpVersion}\r\n";//拼接请求头$http.=$this->_requestHead;//拼接请求文本$http.=$this->_requestContent;//创建连接$fp=fsockopen($this->_host,$this->_port,$errno,$errstr);如果(!$fp)抛出新异常($errstr);//发送请求fwrite($fp,$http);//获取结果$result='';while(!feof($fp))$result.=fgets($fp);返回$结果;}}?>client.php'www.jiejieyh.cn','User-Agent'=>'Mozilla/5.0(WindowsNT10.0;WOW64;rv:49.0)Gecko/20100101Firefox/49.0','Accept'=>'应用程序/json,文本/javascript,*/*;q=0.01','接受-语言ge'=>'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=['密码'=>'admin','用户名'=>'123456',];$result=$Http->setRequestHead($requestHead)->setRequestContent($requestContent)->sendRequest();回声$结果;?>