PHP + Socket 发送http请求进而实现网站灌水

php中文网
发布: 2016-06-23 13:46:24
原创
1392人浏览过

本质上实现组装http信息的请求行,头信息,主题信息,参考it自学网

cookie信息和http请求头有很大关系,注意把http请求头信息传递到函数里面


01-msg.php

立即学习PHP免费学习笔记(深入)”;

网易天音
网易天音

网易出品!一站式音乐创作工具!零基础写歌!

网易天音 76
查看详情 网易天音
<?phprequire('./http.class.php');$http = new Http('http://home.verycd.com/cp.php?ac=pm&op=send&touid=0&pmid=0');$http->setHeader('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');$http->setHeader('Accept-Encoding: gzip, deflate');$http->setHeader('Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3');$http->setHeader('Connection: keep-alive');$http->setHeader('Cookie: Hm_lvt_c7849bb40e146a37d411700cb7696e46=1371132935,1371551596,1371552570; CNZZDATA1479=cnzz_eid%3D2070887527-1371133011-http%253A%252F%252Fhome.verycd.com%26ntime%3D1371559611%26cnzz_a%3D27%26retime%3D1371559611556%26sin%3Dhttp%253A%252F%252Fwww.verycd.com%252Fi%252F17907141%252F%26ltime%3D1371559611556%26rtime%3D1; __utma=248211998.1671623420.1371133015.1371557486.1371559612.4; __utmz=248211998.1371552579.2.2.utmcsr=verycd.com|utmccn=(referral)|utmcmd=referral|utmcct=/; Hm_lpvt_c7849bb40e146a37d411700cb7696e46=1371554752; post_action=repost; BAIDU_CLB_REFER=http%3A%2F%2Fcwebmail.mail.163.com%2Fjs5%2Fread%2Freadhtml.jsp%3Fssid%3DI7zQECYCxLDKHPlnXYxQm9sNe5EPh1drYPvN26nZekk%253d%26mid%3D45%3A1tbiLRFAhFEFoLvtCAAAsS%26color%3D003399%26preventSetRead%3Don%26font%3D15; uchome_loginuser=http%E5%8D%8F%E8%AE%AE; uchome__refer=%2Fspace.php%3Fdo%3Dpm%26filter%3Dnewpm; __utmc=248211998; sid=9a48b201fb4d176a7188ef2a3560789651eb4766; member_id=17822047; member_name=http%E5%8D%8F%E8%AE%AE; mgroupId=93; pass_hash=e75f942862a5e927a2faffd2d2d582c9; rememberme=false; uchome_auth=4128oUJWyonkCXZvxM4sDRjcugSmt3L0r197Pq%2BPdf8fcLJsUiNZKBXjG0hYuPZSRK3XEs2FuRn1pH2cEFBNc1H0Im7x5A; uchome_sendmail=1; uchome_checkpm=1; __utmb=248211998.1.10.1371559612; dcm=1');$http->setHeader('Referer: http://home.verycd.com/cp.php?ac=pm');$http->setHeader('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0');$msg = array('formhash'=>'4f23e777','message'=>'我不是在灌水,请放行','pmsubmit'=>'true','pmsubmit_btn'=>'发送','refer'=>'http://home.verycd.com/space.php?do=pm&filter=privatepm','username'=>'http接收');file_put_contents('./res.html',$http->post($msg));echo 'ok';
登录后复制

http.class.php

立即学习PHP免费学习笔记(深入)”;

立即学习PHP免费学习笔记(深入)”;

<?php/*PHP+socket编程 发送HTTP请求要求能 模拟下载,注册,登陆,批量发帖*/// http请求类的接口interface Proto {    // 连接url    function conn($url);    //发送get查询    function get();    // 发送post查询    function post();    // 关闭连接    function close();}class Http implements Proto {    const CRLF  = "\r\n";    protected $errno = -1;    protected $errstr = '';    protected $response = '';    protected $url = null;    protected $version = 'HTTP/1.1';    protected $fh = null;        protected $line = array();    protected $header = array();    protected $body = array();        public function __construct($url) {        $this->conn($url);        $this->setHeader('Host: ' . $this->url['host']);    }    // 此方法负责写请求行    protected function setLine($method) {        $this->line[0] = $method . ' ' . $this->url['path'] . '?' .$this->url['query'] . ' '. $this->version;    }    // 此方法负责写头信息    public function setHeader($headerline) {        $this->header[] = $headerline;     }    // 此方法负责写主体信息    protected function setBody($body) {         $this->body[] = http_build_query($body);    }    // 连接url    public function conn($url) {        $this->url = parse_url($url);        // 判断端口        if(!isset($this->url['port'])) {            $this->url['port'] = 80;        }        // 判断query        if(!isset($this->url['query'])) {            $this->url['query'] = '';        }        $this->fh = fsockopen($this->url['host'],$this->url['port'],$this->errno,$this->errstr,3);    }    //构造get请求的数据    public function get() {        $this->setLine('GET');        $this->request();        return $this->response;    }    // 构造post查询的数据    public function post($body = array()) {              $this->setLine('POST');        // 设计content-type        $this->setHeader('Content-type: application/x-www-form-urlencoded');                // 设计主体信息,比GET不一样的地方        $this->setBody($body);        // 计算content-length        $this->setHeader('Content-length: ' . strlen($this->body[0]));        $this->request();        return $this->response;    }    // 真正请求    public function request() {        // 把请求行,头信息,实体信息 放在一个数组里,便于拼接        $req = array_merge($this->line,$this->header,array(''),$this->body,array(''));        //print_r($req);        $req = implode(self::CRLF,$req);         //echo $req; exit;        fwrite($this->fh,$req);                while(!feof($this->fh)) {            $this->response .= fread($this->fh,1024);        }        $this->close(); // 关闭连接    }    // 关闭连接    public function close() {        fclose($this->fh);    }    }/*$url = 'http://news.163.com/13/0613/09/9187CJ4C00014JB6.html';$http = new Http($url);echo $http->get();*//*set_time_limit(0);$url = 'http://liangyue.net.cn/0523/?';for($i=1;$i<100;$i++) {    $str = str_shuffle('abcdefghijklmnopqrst0776656');    $tit = substr($str,0,5);    $con = substr($str,6,8);    $http = new Http($url);    $http->post(array('tit'=>$tit,'con'=>$con,'submit'=>'留言'));    echo $tit,'-----------',$con,'<br />';    usleep(2000);}*/
登录后复制


立即学习PHP免费学习笔记(深入)”;


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号