模拟post失败 为什么? 本帖最后由 h420943302 于 2012-12-11 11:18:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 模拟请求数据 Function Curl($url,$postfields,$referer='',$cookie_jar='./cookie.txt'){ $Cur = curl_init(); $Opt = Array( CURLOPT_URL => $url, CURLOPT_HEADER => 1, CURLOPT_NOBODY => 1, CURLOPT_PORT => 80, //端口 CURLOPT_POST => 1, //发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。 CURLOPT_POSTFIELDS => $postfields,//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名 CURLOPT_RETURNTRANSFER => 1,// 获取的信息以文件流的形式返回,而不是直接输出。 CURLOPT_SSL_VERIFYHOST => 1,// 从证书中检查SSL加密算法是否存在 CURLOPT_SSL_VERIFYPEER => 0,// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。 //CURLOPT_COOKIE => GetCook($url), //CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",//模拟用户使用的浏览器,在HTTP请求中包含一个"user-agent"头的字符串。 CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1', CURLOPT_FOLLOWLOCATION => 1, CURLOPT_COOKIEJAR => Dirname(__FILE__).$cookie_jar, CURLOPT_COOKIEFILE => Dirname(__FILE__).$cookie_jar, CURLOPT_REFERER => $referer, ); curl_setopt_array($Cur,$Opt); $code = curl_exec($Cur); curl_close($Cur); unSet($Cur); Return $code; } Function GetCook($url) { $Curl=curl_init($url); curl_setopt($Curl,CURLOPT_HEADER,1); curl_setopt($Curl,CURLOPT_RETURNTRANSFER,1); $Cook=curl_exec($Curl); curl_close($Curl); $Out=''; preg_match("/ssid\=(.[^;]*)/i",$Cook,$Out); Return $Out[1]; } $url = "http://pcik.7di.net/pcik_in"; $postfields='g=yes&username=see7di&password=www.7di.net999&id=&code='; $a=Curl($url,$postfields); unSet($postfields,$url); Echo "<textarea style='width:100%;height:200px'>",Chr(10),$a,Chr(10),"</textarea>";Die();你試試我這個 你的 $cookie_id 的值是从哪里来的?看上去表单是 ThinkPHP 的,如果目标页启用了 token,那么你这静态的 cookie 是不可能通过验证的 呵呵 谢谢大家的 回答 我已经解决了cookie 抓包得到的 可用的 我上面说了 是可以到达 指定页面的 (也就是cookie可用) 只是没有post效果 php 项目二次开发(添加三个功能) 及美工网页优化 有过大中型项目工作经验优先考虑 关于PDO对象 无限极分类,怎样添加分类产品 获取的IP不正确 求高手 PHP 在线客服截图功能~在线等~急求 转--IT职场:阻碍职场发达的十种做法 php模拟post将一个数组传递到到xxx.jsp KoolanooGroup北京总部诚招php程序员 如何获取一个网址跳转后的地址? Discuz x3如何从数据库中修改 积分,需要操作哪几个表? 如何提取中文名字的名和姓 sql查询的问题
Function Curl($url,$postfields,$referer='',$cookie_jar='./cookie.txt'){
$Cur = curl_init();
$Opt = Array(
CURLOPT_URL => $url,
CURLOPT_HEADER => 1,
CURLOPT_NOBODY => 1,
CURLOPT_PORT => 80, //端口
CURLOPT_POST => 1, //发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
CURLOPT_POSTFIELDS => $postfields,//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
CURLOPT_RETURNTRANSFER => 1,// 获取的信息以文件流的形式返回,而不是直接输出。 CURLOPT_SSL_VERIFYHOST => 1,// 从证书中检查SSL加密算法是否存在
CURLOPT_SSL_VERIFYPEER => 0,// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
//CURLOPT_COOKIE => GetCook($url), //CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",//模拟用户使用的浏览器,在HTTP请求中包含一个"user-agent"头的字符串。
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1',
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_COOKIEJAR => Dirname(__FILE__).$cookie_jar,
CURLOPT_COOKIEFILE => Dirname(__FILE__).$cookie_jar,
CURLOPT_REFERER => $referer,
);
curl_setopt_array($Cur,$Opt);
$code = curl_exec($Cur);
curl_close($Cur);
unSet($Cur);
Return $code;
} Function GetCook($url) {
$Curl=curl_init($url);
curl_setopt($Curl,CURLOPT_HEADER,1);
curl_setopt($Curl,CURLOPT_RETURNTRANSFER,1);
$Cook=curl_exec($Curl);
curl_close($Curl);
$Out='';
preg_match("/ssid\=(.[^;]*)/i",$Cook,$Out);
Return $Out[1];
} $url = "http://pcik.7di.net/pcik_in";
$postfields='g=yes&username=see7di&password=www.7di.net999&id=&code=';
$a=Curl($url,$postfields);
unSet($postfields,$url); Echo "<textarea style='width:100%;height:200px'>",Chr(10),$a,Chr(10),"</textarea>";Die();
你試試我這個
cookie 抓包得到的 可用的 我上面说了 是可以到达 指定页面的 (也就是cookie可用) 只是没有post效果