切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
PHP中采用POST方式发送数据的几种方式[复制链接]
发表于 2013-5-8 23:39:55 | 显示全部楼层 |!read_mode!
1.通过curl函数
$post_data = array () ;
$post_data [ ' clientname ' ] = " test08 " ;
$post_data [ ' clientpasswd ' ] = " test08 " ;
$post_data [ ' submit ' ] = " submit " ;
$url = ' [url=http://xxx.xxx.xxx.xx/xx/xxx/top.php]http://xxx.xxx.xxx.xx/xx/xxx/top.php[/url] ' ;
$o = "" ;
foreach ( $post_data as $k => $v ) 
{ 
     $o .= " $k = " . urlencode ( $v ) . " & " ;
} 
$post_data = substr ( $o , 0 ,- 1 ) ;
$ch = curl_init () ;
curl_setopt ( $ch , CURLOPT_POST , 1 ) ;
curl_setopt ( $ch , CURLOPT_HEADER , 0 ) ;
curl_setopt ( $ch , CURLOPT_URL , $url ) ;
//为了支持cookie 
curl_setopt ( $ch , CURLOPT_COOKIEJAR , ' cookie.txt ' ) ;
curl_setopt ( $ch , CURLOPT_POSTFIELDS , $post_data ) ;
$result = curl_exec ( $ch ) ;


缺点:需要模块化支持,并不是所有的环境都支持;


2. 通过fsockopen
$URL ='http : //xxx.xxx.xxx.xx/xx/xxx/top.php'; 
$post_data [ ' clientname ' ] = " test08 " ;
$post_data [ ' clientpasswd ' ] = " test08 " ;
$post_data [ ' submit ' ] = "提交" ;
$referrer = "" ;
// parsing the given URL 
$URL_Info = parse_url ( $URL ) ;
// Building referrer 
if ( $referrer == "" ) // if not given use this script as referrer 
$referrer = $_SERVER [ " SCRIPT_URI " ] ;
 
// making string from $data 
foreach ( $post_data as $key => $value ) 
$values [] = " $key = " . urlencode ( $value ) ;
 
$data_string = implode ( " & " , $values ) ;
// Find out which port is needed - if not given use standard (=80) 
if ( ! isset ( $URL_Info [ " port " ])) 
$URL_Info [ " port " ] = 80 ;
// building POST-request: 
$request .= " POST " . $URL_Info [ " path " ] . " HTTP/1.1 /n " ;
$request .= " Host: " . $URL_Info [ " host " ] . " /n " ;
$request .= " Referer: $referrer /n " ;
$request .= " Content-type: application/x-www-form-urlencoded /n " ;
$request .= " Content-length: " . strlen ( $data_string ) . " /n " ;
$request .= " Connection: close /n " ;
$request .= " /n " ;
$request .= $data_string . " /n " ;
$fp = fsockopen ( $URL_Info [ " host " ] , $URL_Info [ " port " ]) ;
fputs ( $fp , $request ) ;
while ( ! feof ( $fp )) { 
     $result .= fgets ( $fp , 128 ) ;
} 
fclose ( $fp ) ;


缺点:
1. 延迟比较大,我在内网测试,用命令行进行的测试,发现响应有时候需要2S以上,不能接受。
2. 读到的response包含了HTTP头域信息,但是大部分情况下,我们只需要body部分内容,要提取body内容,还需要一番处理。



3,简洁、大方、优雅、通用的某几个API函数组合使用
 function do_post_request($url, $data, $optional_headers = null)
  {
     $params = array('http' => array(
                  'method' => 'POST',
                  'content' => $data
               ));
     if ($optional_headers !== null) {
        $params['http']['header'] = $optional_headers;
     }
     $ctx = stream_context_create($params);
     $fp = @fopen($url, 'rb', false, $ctx);
     if (!$fp) {
        throw new Exception("Problem with $url, $php_errormsg");
     }
     $response = @stream_get_contents($fp);
     if ($response === false) {
        throw new Exception("Problem reading data from $url, $php_errormsg");
     }
     return $response;
  }


调用方式:
$postdata = array('name' => '3G-SecTeam');
$postdata = http_build_query($postdata);
echo do_post_request('http://localhost/test/index.php', $postdata);


注意要是关联数组的形式才可以!更别忘了 http_build_query()

缺点:感觉没啥缺点,而且返回的内容仅仅是Body中内容。我也没去仔细研究这些API的说明,就采用了这个,没发现有大的问题。如果有人有类似需求,推荐大家采用这个function.




该贴已经同步到 抚菊深思的微博
操千曲而后晓声,观千剑而后识器。
发表于 2013-5-9 14:33:07 | 显示全部楼层
这个好像比较高端。。。
没看懂啊。
发表于 2013-5-9 18:11:54 | 显示全部楼层
王子不是我 发表于 2013-5-9 14:33
这个好像比较高端。。。
没看懂啊。

哈哈  一般吧  算不上高端,程序做分布式的时候比较常用;

话说国内常见的PHP DDOS大马发包的方式大多是第二种,太耗服务器资源了,怪不得容易被发现。。。。
发表于 2013-5-9 22:05:38 | 显示全部楼层
抚菊深思 发表于 2013-5-9 18:11
哈哈  一般吧  算不上高端,程序做分布式的时候比较常用;

话说国内常见的PHP DDOS大马发包的方式大多 ...

只明白 木马控制肉鸡D-DOS原理。
PHP这方面攻击不懂
还有CC是啥。
发表于 2013-5-9 22:29:28 | 显示全部楼层
王子不是我 发表于 2013-5-9 22:05
只明白 木马控制肉鸡D-DOS原理。
PHP这方面攻击不懂
还有CC是啥。

php发包在论坛搜 "织梦"我之前转了两个文章

CC在论坛搜cc看下就理解了
李莫愁 该用户已被删除
发表于 2013-8-22 22:50:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
ddrreeaamm 该用户已被删除
发表于 2013-9-21 05:55:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-7-27 11:28:02 | 显示全部楼层
我只是路过,如果是分布式,也很少这么做,因为比较好的架构是必须会减少http请求滴

代码区

GMT+8, 2019-11-19 21:53

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部