首页 > php代码 > php 模拟用户浏览网页代码

php 模拟用户浏览网页代码

<?php
class HttpRequest {
    var $sHostAdd;
    var $sUri;
    var $iPort;
    var $sRequestHeader;
    var $sResponse;
    function HttpRequest($sUrl) {
        $sPatternUrlPart = '/http:\/\/([a-z-.0-9]+)(:(\d+)){0,1}(.*)/i';
        $arMatchUrlPart = array();
        preg_match($sPatternUrlPart, $sUrl, $arMatchUrlPart);
        $this->sHostAdd = gethostbyname($arMatchUrlPart[1]);
        if (empty($arMatchUrlPart[4])) {
            $this->sUri = '/';
        } else {
            $this->sUri = $arMatchUrlPart[4];
        }
        if (empty($arMatchUrlPart[3])) {
            $this->iPort = 80;
        } else {
            $this->iPort = $arMatchUrlPart[3];
        }
        $this->addRequestHeader('Host: ' . $arMatchUrlPart[1]);
        $this->addRequestHeader('Connection: Close');
    }
    function addRequestHeader($sHeader) {
        $this->sRequestHeader.= trim($sHeader) . " ";
    }
    function sendRequest($sMethod = 'GET', $sPostData = '') {
        $sRequest = $sMethod . " " . $this->sUri . " HTTP/1.1 ";
        $sRequest.= $this->sRequestHeader;
        if ($sMethod == 'POST') {
            $sRequest.= "Content-Type: application/x-www-form-urlencoded ";
            $sRequest.= "Content-Length: " . strlen($sPostData) . " ";
            $sRequest.= " ";
            $sRequest.= $sPostData . " ";
        }
        $sRequest.= " ";
        $sockHttp = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if (!$sockHttp) {
            die('socket_create() failed!');
        }
        $resSockHttp = socket_connect($sockHttp, $this->sHostAdd, $this->iPort);
        if (!$resSockHttp) {
            die('socket_connect() failed!');
        }
        socket_write($sockHttp, $sRequest, strlen($sRequest));
        $this->sResponse = '';
        while ($sRead = socket_read($sockHttp, 4096)) {
            $this->sResponse.= $sRead;
        }
        socket_close($sockHttp);
    }
    function getResponse() {
        return $this->sResponse;
    }
    function getResponseBody() {
        $sPatternSeperate = '/ /';
        $arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2);
        return $arMatchResponsePart[1];
    }
    function getResponseHead() {
        $sPatternSeperate = '/ /';
        $arMatchResponsePart = preg_split($sPatternSeperate, $this->sResponse, 2);
        return $arMatchResponsePart[0];
    }
}


文章网址:http://www.phprm.com/code/3ff369b2257086dfce7c40b25f418ce9.html

随意转载^^但请附上教程地址。

标签:none

发表留言