日期:2014-05-17 浏览次数:20553 次
// 模拟请求数据 Function request($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 => 0, 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("/_SessionId\=(.[^;]*)/i",$Cook,$Out); Return $Out[1]; } $url = "http://www.edai365.cn/Index/login.aspx"; $postfields='txt_nickname=baluwu&txt_pwd=000000&ddlcookietime='.UrlEncode('一周').'&ibt_login='; $a=request($url,$postfields); unset($postfields,$url); Echo "<textarea style='width:100%;height:200px'>",Chr(10),$a,Chr(10),"</textarea>";Die();
------解决方案--------------------
http://www.21andy.com/blog/20080507/1095.html
看下,或许有帮助
------解决方案--------------------
解决这种问题最好的办法就是截包,看看正常的包和curl通信的包有什么不同就知道了