我想构造一个post表单将请求发到服务器端,实现自动留言功能,也就是所谓的水军,页面是http://www.cnblogs.com/shanyou/archive/2012/10/30/2746168.html,我想在这下面实现自动留言,下面是我写的代码,被服务器禁止了,Cookie我没放上来,太长了,求高人指点<?php$url = "http://www.cnblogs.com/mvc/PostComment/New.aspx";//post action 地址无法访问到$post_data['postId']=2746168;
$post_data['Body']="顶";
$post_data['ParentCommentID']=0;
foreach($post_data as $key => $value)
{
$requestArray[] = $key.':'.urlencode($value);
}
$requestString = implode(",",$requestArray);
//url
$url_info = parse_url($url);if(!isset($url_info['port']))
{
$url_info['port'] = 80;
$request = "POST ".$url_info['path']." HTTP/1.1\n";
$request .= "Host: ".$url_info['host']."\n";
$request .= "Content-type: application/x-www-form-urlencoded\n";
$request .= "Content-length: ".strlen($requestString)."\n";
$request .= "Referer: http://www.cnblogs.com/shanyou/archive/2012/10/30/2746168.html\n";
$request .="X-Requested-With :XMLHttpRequest\n";
$request .= "Connection: close\n";
$request .= "\n";
$request .= $requestString."\n";
}$fp = fsockopen($url_info["host"], $url_info["port"]);
fputs($fp, $request);$inheader = 1;$result="";
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}echo "<pre>";
echo $result;
fclose($fp);
?>
$post_data['Body']="顶";
$post_data['ParentCommentID']=0;
foreach($post_data as $key => $value)
{
$requestArray[] = $key.':'.urlencode($value);
}
$requestString = implode(",",$requestArray);
//url
$url_info = parse_url($url);if(!isset($url_info['port']))
{
$url_info['port'] = 80;
$request = "POST ".$url_info['path']." HTTP/1.1\n";
$request .= "Host: ".$url_info['host']."\n";
$request .= "Content-type: application/x-www-form-urlencoded\n";
$request .= "Content-length: ".strlen($requestString)."\n";
$request .= "Referer: http://www.cnblogs.com/shanyou/archive/2012/10/30/2746168.html\n";
$request .="X-Requested-With :XMLHttpRequest\n";
$request .= "Connection: close\n";
$request .= "\n";
$request .= $requestString."\n";
}$fp = fsockopen($url_info["host"], $url_info["port"]);
fputs($fp, $request);$inheader = 1;$result="";
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}echo "<pre>";
echo $result;
fclose($fp);
?>
还有,如果循环发送的话,循环中要加上sleep,具体秒数自己去试下大概就知道了。