永发信息网

PHP 模拟HTTP发送POST请求

答案:1  悬赏:30  手机版
解决时间 2021-05-06 00:14

$URL_Info=parse_url($URL);
   $referrer=$_SERVER["SCRIPT_URI"];
   foreach ($post_data as $key=>$value){
    $values[]="$key=".urlencode($value);
   }
   $data_string=implode("&",$values);
   $URL_Info["port"]=8080;
   $request.="POST ".$URL_Info["path"]." HTTP/1.1\r\n";
   $request.="Host: ".$URL_Info["host"]."\r\n";
   $request.="Referer: $referrer\r\n";
   $request.="Content-type: application/x-www-form-urlencoded\r\n";
   $request.="Content-length: ".strlen($data_string)."\r\n";
   $request.="Connection: Keep-Alive\r\n";
   $request.="\r\n"; 
   $request.=$data_string."\r\n";
   $fp = fsockopen($URL_Info["host"], $URL_Info["port"]);
 
   fputs($fp, $request);//send http head

   while(!feof($fp)) {
 
   $result .= fgets($fp, 1024);
   }
      $a=strpos($result,'{');
   $result = substr($result,$a,strlen($result));

我这样   Connection: 为Keep-Alive  为什么就不成功  为close就行  还有为close后 为什么求情后不能获得sessionKey是不是 HTTP头还缺少什么 我不懂啊   谁知道帮帮我把

最佳答案
用php模拟登陆主要分为三部分1. post数据。2.根据返回的http头,从中截出cookie段。3.伪造http头发送请求。 我这里以用php抓取163相册的需要密码才能访问的目录为例。<?phpfunction posttohost($url, $data) //post数据if (!isset($url['query'])) $encoded = "";foreach ($data as $k=>$v) $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);if (!$fp) return "Failed to open socket to $url[host]";fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query']));fputs($fp, "Host: $url[host]\n");fputs($fp, "Content-type: application/x-www-form-urlencoded\n");fputs($fp, "Content-length: " . strlen($encoded) . "\n");fputs($fp, "Connection: close\n\n");fputs($fp, "$encoded\n");$line = fgets($fp,1024);if (!eregi("^HTTP/1\.. 200", $line)) return;$results = ""; $inheader = 1;while(!feof($fp)) elseif ($inheader) }fclose($fp);return $results;} 答案补充 function getjs($juser,$jaid,$jcookie) //伪造http头 答案补充 else fclose( $socket ); return $ret;}}$iurl=' http://photo.163.com/photos/'.$iuser.'/'.$aid.'/';$idata=array('pass'=>$pass,'checking'=>'1'); //通过winsock抓包发现,输入访问密码,会向163相册发送 pass=密码&checking=1$mystr=posttohost($iurl,$idata);$pattern='/HALFORDER=(.*?);/';preg_match($pattern,$mystr,$out);$str=getjs($iuser,$aid,$out[1]);echo $str;?>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
姓张的男孩叫啥名好?
魔兽世界,打JD(SW最后一个BOSS)的时候 要
明都百盛大酒店停车场地址在哪,我要去那里办
付出得到回报的诗词,形容心爱的宠物死了的句
福州到佛山的火车是几点到
若a,b互为相反数,c,d互为倒数,则(a+b)+cd=
今天刚买诺基亚6220c欧水!为什么能接收短信
紧急!玩DNF出现问题
家乐家便利店怎么去啊,有知道地址的么
每日礼包中的藏宝图从那里可以找到?
关于英语.if和whether
用QB开VIP划算吗?
有的网站原来可以进现在进不去,为什么
北极熊为虾米不吃企鹅捏、、?
手机要怎样才能用的时间长?
推荐资讯
新车被撞了对方全责都有什么赔偿
爱豆赞美杨幂的句子,赞美老师的语句
qq三国求个好听的军团名字,要浪漫的,最好有
感到生活乏味,甚至时常感到生存的多余
临沂的义乌小商品市场在哪
今年流行什么发型、颜色、服饰?
春季碎花裙配什么鞋子,碎花连衣裙搭配什么鞋
win7如何显示隐藏文件夹
亚洲路虎体验中心在哪里啊,我有事要去这个地
映红照相怎么去啊,有知道地址的么
看弹痕不投票??
什么运动对内脏好?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?