模拟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效果 如何在Joomla里动态调用Google map FLEAPHP框架与数据库的问题,求助! php如何跟 asp进行同步登陆啊? thinkPHP与oracle语句 微博@功能的实现 php输出数据,无法desc php混淆加密 求解 php怎么加载lib库文件问题 隐藏flash播放地址 我真的不是程序,继续求帮助,PHP的curl输出结果帮助以及,能否重新用表格代替 如何提取中文名字的名和姓 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效果