インターネットでいくつか見つけましたが、ほとんどが有効期限が切れているため、特別に 126 のコードを公開しました。163 は少し変態的で、余分なジャンプがあり、さらに面倒です
コードをコピー コードは次のとおりです:
/**
* @file class.126http.php
* 126 の電子メール アドレス帳リストを取得します
* @author jvones
* @日付 2009-09-26
**/
class http126
{
プライベート関数 login($username, $password)
{
//最初のステップ: 初期ログイン
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL , "https://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid=10010102&lightweight=1&verifycookie=1& language=0&style=-1 " );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."@126.com&password=".$password); $ch, CURLOPT_COOKIEJAR, COOKIEJAR);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $str =curl_exec($ch);
//file_put_contents('./126result.txt', $str);
curl_close($ch);
//redirect_url ジャンプ アドレスを取得します。 126result.txt を参照し、正規表現
preg_match("/replace("(.*?)");/", $str, $mtitle); を使用して $str リターン ストリーム内のアドレスと一致します。 _url1 = $mtitle[1];
//file_put_contents('./126resulturl.txt', $redirect_url);
//ステップ 2: 再度先頭にジャンプ $_url1
$ch =curl_init( $_url1);
curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
curl_setopt($ch,CURLOPT_COOKIEFILE,COOKIEJAR); , CURLOPT_COOKIEJAR, COOKIEJAR);
curl_setopt($ch,CURLOPT_HEADER,1);
$str2 ($ch); "安全な終了") !== false)
{
return
}
return 1;
/**
* メールアドレス帳のアドレスを取得
* @param $user
* @param $password
* @param $result
* @return array
*/
パブリック関数getAddressList($username, $password)
{
if (!$this->login($username, $password))
{
return 0;
$ header = $this->getheader($username);
if (!$header['sid'])
{
return 0;
}
// sid をテストします(非常に重要) および host
//file_put_contents('./host.txt', $header['host']);
//file_put_contents('./sid.txt', $header[ 'sid ']);
//シミュレートされたクロールの入力を開始します
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$header['host'] ."/ a/s?sid=".$header['sid']."&func=global:sequential");
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
curl_setopt($ch, CURLOPT_HTTPHEADER , array( "Content-Type: application/xml"));
$str = "eb object>>curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
ob_start() ;
curl_exec($ch);
$contents = ob_get_contents();
curl_close($ch); // ページ情報ユーザー名からメールリストを取得しますメールアドレス
preg_match_all("/
$users = array();
foreach($names[ 1] as $k=>$user)
{
//$user = iconv($user,'utf-8','gb2312');
$users[$mails[1] [$k] ]] = $user;
if (!$users)
{
return 'メールボックスにまだ連絡先がありません';
}
return $ users; 🎜>}
/**
* ヘッダー情報を取得
*/
プライベート関数 _getheader($username)
{
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, "http://entry.mail.126.com/cgi/ntesdoor?hid=10010102&lightweight=1&verifycookie=1& language=0&style=-1&username=".$username."@126.com ");
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR); //現在使用されているクッキー
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); // サービスが返す新しいクッキー
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
$content=curl_exec($ch);
preg_match_all('/Location:s*(.*?)rn/i',$content,$regs);
$refer = $regs[1][0];
preg_match_all('/http://(.*?)//i',$refer,$regs);
$host = $regs[1][0];
preg_match_all("/sid=(.*)/i",$refer,$regs);
$sid = $regs[1][0];
curl_close($ch);
return array('sid'=>$sid,'refer'=>$refer,'host'=>$host);
}
}
?>