lyke 发表于 2020-3-5 14:10

PHP多线程模拟访问刷网址流量

<?php
set_time_limit(360000);      //执行时间无限
ini_set('memory_limit', '-1');    //内存无限
Get_Census();//调用次数记录

//记录使用次数
function Get_Census(){
include __DIR__.'/count.php';
$var1 = $count+1;
$data = '<?php
$count = '.var_export($var1,true).';
?>';
file_put_contents(__DIR__."/count.php",$data);
}


function StCc($url,$ip){
        $type = 'http';
        $cUrl = curl_init();
        curl_setopt($cUrl, CURLOPT_URL, $url);
        curl_setopt($cUrl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($cUrl, CURLOPT_TIMEOUT, 3);
        curl_setopt($cUrl, CURLOPT_PROXY, $ip); //做代{过}{滤}理的ip和端口
       
        //if($type=='https'){ //不使用证书
                curl_setopt($cUrl, CURLOPT_SSL_VERIFYPEER, FALSE);
                curl_setopt($cUrl, CURLOPT_SSL_VERIFYHOST, FALSE);
        //}
        curl_exec($cUrl);
        //$pageContent = trim(curl_exec($cUrl));
        curl_close($cUrl);
}

//$requestUrl = 'http://baidu.com';
/*while ( requestUrl) {
        StrCc($requestUrl,10);
}*/

//启动功能
function StrCc($url,$time){
        $data_str=file_get_contents("ip.txt");
        $data_ip=explode(PHP_EOL,$data_str);
        $n = count($data_ip);
        $shuz = array();
        //初始化线程
        for($i=0;$i<$n;$i++){
                $item = curl_init();
                curl_setopt($item, CURLOPT_URL, $url);//访问地址
                curl_setopt($item, CURLOPT_RETURNTRANSFER, 1);//参数为1表示传输数据,为0表示直接输出显示
                curl_setopt($item, CURLOPT_TIMEOUT, $time);//设置curl允许执行的最长秒数
                curl_setopt($item, CURLOPT_PROXY, $data_ip[$i]); //做代{过}{滤}理的ip和端口
                curl_setopt($item, CURLOPT_HEADER, 1); //设定是否输出页面内容
                array_push($shuz,$item);
        }
        //得到批量处理句柄
        $mh = curl_multi_init();
        //添加句柄到批量处理句柄中
        for($i=0;$i<$n;$i++){
                curl_multi_add_handle($mh,$shuz[$i]);
        }
        //初始化
        $still_running = null;
        /*do{
        //运行当前CURL句柄子链接
        curl_multi_exec($mh,$still_running);
        }while($still_running);//still_running标识符,用于判断操作是否仍在执行*/
       
        do{
                $mrc = curl_multi_exec($mh,$still_running);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($still_running and $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $still_running); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } }
        //得到结果
        for($i=0;$i<$n;$i++){
                $data_tv = curl_multi_getcontent($shuz[$i]);
                $Num = $i;
        }
        //移除句柄
        for($i=0;$i<$n;$i++){
                curl_multi_remove_handle($mh,$shuz[$i]);
        }
        //关闭批量句柄
        curl_multi_close($mh);
        for($i=0;$i<$n;$i++){
                curl_close($shuz[$i]);
        }
        //输出执行数量
        echo $Num;
}

//传入访问地址
if (isset($_GET['url'])&&$_GET['url']!='') {
        StrCc($_GET['url'],5);
}

lyke 发表于 2020-3-6 13:57

成品源码:https://www.lanzouj.com/i9yjpfc

sundq 发表于 2020-3-11 19:36

lyke 发表于 2020-3-6 14:03
理论上可以,但是基于语言的问题,有点难成大器

哈哈,其实跟服务器的cpu也有关系,看能起多少,可以用golang试试

lyke 发表于 2020-3-6 14:03

sundq 发表于 2020-3-6 14:01
哈哈,这个可以变成攻击脚本吧?

理论上可以,但是基于语言的问题,有点难成大器{:1_907:}

青灯黄卷 发表于 2020-3-5 14:44

怎么用的呀?

星凯 发表于 2020-3-5 14:59

..你发了这个和没法一样大部分人不知道咋玩。。

crackisgood 发表于 2020-3-5 15:00

是只有我不知道怎么用不{:1_907:}

lsmh 发表于 2020-3-5 15:12

有空间推荐吗?

seoyifan 发表于 2020-3-5 15:16

能做成个成品就好了

jmwang6514 发表于 2020-3-5 15:54


怎么用的呀?我需要刷数据包模式Q147714187

stone009 发表于 2020-3-5 16:31

jmwang6514 发表于 2020-3-5 15:54
怎么用的呀?我需要刷数据包模式Q147714187

需要有代{过}{滤}理IP

yc19951005 发表于 2020-3-5 18:17

运行了 好像不知道怎么用...

人称昊哥 发表于 2020-3-6 09:50

大佬,这个源码我不会用啊
页: [1] 2 3
查看完整版本: PHP多线程模拟访问刷网址流量