运行下面的程序会出现“500内部服务器错误”,或者提示“您的页面闲置太久”,是不是curl_setopt里的参数哪没设置好?<?php
/**
* 获得139邮箱通讯录列表 -- contactstom.class.php
*/
define( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) ); //定义COOKIES存放的路径,要有操作的权限
define( "TIMEOUT", 1000 ); //超时设定class contacts139
{ function checklogin( $user, $password )
{
$ch = curl_init( );
$headers_login = array(
'Host' => 'mail.10086.cn',
'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA)',
'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*',
'Accept_Language' => 'zh-cn',
'Accept_Encoding' => 'gzip,deflate',
// 'Accept_Charset' => 'GB2312,utf-8;q=0.7,*;q=0.7\r\n',
// 'Keep-Alive' => '115',
'Connection' => 'keep-alive',
'Content-Length' => '50',
'Content-Type' => 'application/x-www-form-urlencoded',
// 'X-Requested-With'=> 'XMLHttpRequest',
'Content_Type' => 'application/x-www-form-urlencoded',
'Cache-Control' => 'no-cache',
'Referer' => 'http://mail.10086.cn/'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt( $ch, CURLOPT_URL, "https://mail.10086.cn/Login/Login.ashx" );
// curl_setopt( $ch, CURLOPT_USERAGENT, USERAGENT );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
$fileds = "UserName=".$user."&Password={$password}";
$fileds .= "&VerifyCode";
curl_setopt( $ch, CURLOPT_POSTFIELDS, $fileds );
ob_start( );
curl_exec( $ch );
$str = curl_exec($ch);
echo $str;exit;
$result = ob_get_contents( );
ob_end_clean( );
curl_close( $ch );
/*if ( preg_match( "/warning|?��??/", $result ) )
{
return 0;
}*/
return 1;
} function getcontacts( $user, $password, &$result )
{
if ( !$this->checklogin( $user, $password ) )
{
return 'checklogin失败';
}
$this->readcookies( COOKIEJAR, $res );
print_r($res);exit;
if ( $res['Coremail'] == "" )
{
return 'readcookies失败';
}
$sid = substr( trim( $res['Coremail'] ), -16 );
$url = "http://wmail1.mail.10086.cn/c/XTS/default.jsp";
$url .= "?funcid=main&sid=".$sid;
$ch = curl_init( );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_USERAGENT, USERAGENT );
curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
curl_setopt( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
ob_start( );
curl_exec( $ch );
$res = ob_get_contents( ); ob_end_clean( );
curl_close( $ch );
$res = iconv("gb2312","utf-8",$res); $p="/<td\sclass=\"Addr_Td_Name\"><a href=\"(.+)?\">(.+)?<\/a><\/td><td\sclass=\"Addr_Td_Address\"><a\shref=\"(.+)?\">(.+)?<\/a>/";
preg_match_all( $p, $res, $tmp);
$result[0]=$tmp[2]; $pattern = "/([\\w_-])+@([\\w])+([\\w.]+)/";
if ( preg_match_all( $pattern, $res, $tmpres, PREG_PATTERN_ORDER ) )
{
$result[1] = array_unique( $tmpres[0] );
}
return $result;
} function readcookies( $file, &$result )
{
$fp = fopen( $file, "r" );
while ( !feof( $fp ) )
{
$buffer = fgets( $fp, 4096 );
$tmp = split( "\t", $buffer );
$result[trim( $tmp[5] )] = trim( $tmp[6] );
}
return 1;
}}$contacts = new contacts139;$res = $contacts->getcontacts('手机号','密码',$result);print_r($res);?>
/**
* 获得139邮箱通讯录列表 -- contactstom.class.php
*/
define( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) ); //定义COOKIES存放的路径,要有操作的权限
define( "TIMEOUT", 1000 ); //超时设定class contacts139
{ function checklogin( $user, $password )
{
$ch = curl_init( );
$headers_login = array(
'Host' => 'mail.10086.cn',
'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; MS-RTC LM 8; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; CIBA)',
'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*',
'Accept_Language' => 'zh-cn',
'Accept_Encoding' => 'gzip,deflate',
// 'Accept_Charset' => 'GB2312,utf-8;q=0.7,*;q=0.7\r\n',
// 'Keep-Alive' => '115',
'Connection' => 'keep-alive',
'Content-Length' => '50',
'Content-Type' => 'application/x-www-form-urlencoded',
// 'X-Requested-With'=> 'XMLHttpRequest',
'Content_Type' => 'application/x-www-form-urlencoded',
'Cache-Control' => 'no-cache',
'Referer' => 'http://mail.10086.cn/'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt( $ch, CURLOPT_URL, "https://mail.10086.cn/Login/Login.ashx" );
// curl_setopt( $ch, CURLOPT_USERAGENT, USERAGENT );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
$fileds = "UserName=".$user."&Password={$password}";
$fileds .= "&VerifyCode";
curl_setopt( $ch, CURLOPT_POSTFIELDS, $fileds );
ob_start( );
curl_exec( $ch );
$str = curl_exec($ch);
echo $str;exit;
$result = ob_get_contents( );
ob_end_clean( );
curl_close( $ch );
/*if ( preg_match( "/warning|?��??/", $result ) )
{
return 0;
}*/
return 1;
} function getcontacts( $user, $password, &$result )
{
if ( !$this->checklogin( $user, $password ) )
{
return 'checklogin失败';
}
$this->readcookies( COOKIEJAR, $res );
print_r($res);exit;
if ( $res['Coremail'] == "" )
{
return 'readcookies失败';
}
$sid = substr( trim( $res['Coremail'] ), -16 );
$url = "http://wmail1.mail.10086.cn/c/XTS/default.jsp";
$url .= "?funcid=main&sid=".$sid;
$ch = curl_init( );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_USERAGENT, USERAGENT );
curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
curl_setopt( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );
ob_start( );
curl_exec( $ch );
$res = ob_get_contents( ); ob_end_clean( );
curl_close( $ch );
$res = iconv("gb2312","utf-8",$res); $p="/<td\sclass=\"Addr_Td_Name\"><a href=\"(.+)?\">(.+)?<\/a><\/td><td\sclass=\"Addr_Td_Address\"><a\shref=\"(.+)?\">(.+)?<\/a>/";
preg_match_all( $p, $res, $tmp);
$result[0]=$tmp[2]; $pattern = "/([\\w_-])+@([\\w])+([\\w.]+)/";
if ( preg_match_all( $pattern, $res, $tmpres, PREG_PATTERN_ORDER ) )
{
$result[1] = array_unique( $tmpres[0] );
}
return $result;
} function readcookies( $file, &$result )
{
$fp = fopen( $file, "r" );
while ( !feof( $fp ) )
{
$buffer = fgets( $fp, 4096 );
$tmp = split( "\t", $buffer );
$result[trim( $tmp[5] )] = trim( $tmp[6] );
}
return 1;
}}$contacts = new contacts139;$res = $contacts->getcontacts('手机号','密码',$result);print_r($res);?>
肯定每个服务商的编码方式不一样 但你模拟web页面登陆的话 怎么都要保证session不被终止啊
建议在浏览器里登陆的同时 用Microsoft Network Monitor之类的监视下数据包 看看正规的登录时怎样的
但我想它有时报500有时候报登陆错误,也就是说500时很有可能你已经登陆成功了,是在采集通讯录上编码出错了吧