ホームページ > バックエンド開発 > PHPチュートリアル > MSN (HOTMAIL) メール友達同期更新バージョン 2011-8 を取得できない問題を解決する方法

MSN (HOTMAIL) メール友達同期更新バージョン 2011-8 を取得できない問題を解決する方法

WBOY
リリース: 2016-06-13 13:50:32
オリジナル
1550 人が閲覧しました

MSN (HOTMAIL) メール フレンド同期の更新バージョン 2011-8 を入手します
昨年、MSN (HOTMAIL)、gmail、yahoo の 3 つの模擬ログインを作成しました。
現在、MSN の有効期限が切れています。これはインターネットでも必要なため、もう一度 HTTP 分析ツールを入手して詳しく調べてみました
今回の分析では、MSN がログイン時に COOKIE を検出したことがわかりました。最後のステップでは、COOKIE を検出するのが正常です。
今回は、過剰な COOKIES が検出された場合、彼は必要な Cookie をフィルタリングすることしかできません。最後のステップの要件
わかりました、コードは次のとおりです (基本的には前回と同じですが、途中に追加の COOKIE フィルターがある点が異なります)

私のブログ: www.onlypo.com

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
define( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) ); // COOKIES を保存するパスを定義します。操作権限が必要です。
define( "TIMEOUT", 1000 ); //タイムアウト設定
エラー報告(E_ALL);
クラスMSN
{

        関数 getAddressList($username, $password)
        {
                //ステップ 1: ログイン ページのデータの取得をシミュレートし、Cookie を書き留めます
                $cookies = 配列();
                $ch =curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_URL, "http://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=".time()."&rver=6.1.6206.0&wp=MBI&wreply=http:%2F %2Fmail.live.com%2Fdefault.aspx&lc=2052&id=64855&mkt=zh-cn&cbcxt=mail&snsc=1");
                curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
                curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                $str =curl_exec($ch);
                カール_クローズ($ch);

                //データ ファイルは JS によって生成された Cookie をシミュレートします
                $CkTst = 'G'.time() * 1000;
                $wlidperf = "スループット=3&latency=948&FR=L&ST=".(time() * 1000 + 1254);
                $fp = fopen(COOKIEJAR, "a+");
                $str_new = "login.live.comtTRUEt/tFALSEt0tCkTstt$CkTstrn";
                $str_new .= "login.live.comtTRUEt/tFALSEt0twlidperft$wlidperfrn";
                fwrite($fp,$str_new);
                fclose($fp);
                
                //パラメータの分析
                $matches = 配列();
                preg_match('/<inputs*type="hidden"s*name="PPFT"s*id="(.*?)"s*value="(.*?)"s*/>/i' 、$str、$matches);
                $PPFT = $matches[2];

                $タイプ = 11;
                
                $LoginOptions = 3;
                
                $Newuser = 1;
                
                $idsbho = 1;
                
                $i2 = 1;
                
                $i12 = 1;
                $i3 = '562390';
                $i14 = '868';
                $i15 = '1338';
                
                $PPSX = 'パ';
                //パラメータをマージします
                $postfiles = "login=".$username."&passwd=".$password."&type=".$type."&LoginOptions=".$LoginOptions."&Newuser=".$Newuser."&idsbho=".$idsbho ."&i2=".$i2."&i3=".$i3."&PPFT=".$PPFT."&PPSX=".$PPSX."&i12=1&i14=$i14&i15=$i15";

                //ステップ 2: ログインを開始する
                $ch =curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
                curl_setopt($ch, CURLOPT_URL, 'https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&rpsnv=11&ct='.(time()+5).'&rver=6.1.6206.0&wp= MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=2052&id=64855&mkt=zh-cn&cbcxt=mail&snsc=1&bk='.(time()+715)); //ここでの 2 つの time() は次のとおりです。ランダムな時間をシミュレートする
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postfiles);
                curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
                curl_setopt($ch, CURLOPT_HEADER, 1);
                curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      
                $content =curl_exec($ch);
                カール_クローズ($ch);

                
                if(stripos($content,'WLWorkflow') !== FALSE ) { //WLWorkflow ログイン ページ JS
                    return false; //ログインに失敗しました。
                }
                // 位置情報のリンクを取得
                $matches = 配列();
                preg_match('/window.location.replace("(.*?)")/i', $content, $matches);
                $url_continiune_1 = $matches[1] //次のリンク
                if(!$url_continiune_1) {
                    false を返します。
                }
                
                // 冗長な Cookie を削除します
                $arr_new = ファイル(COOKIEJAR);
                $str_new = '';
                $need_arr = 配列(0,1,2,3,7,9,13,15,16,17,18,21,22);
                foreach($arr_new as $k => $v) {
                    if(in_array($k, $need_arr))
                        $str_new .= "$v";
                }$fp = fopen(COOKIEJAR, "w+");
                fwrite($fp,$str_new);
                fclose($fp);

                // 第三步: 入引导页面
               
                $ch =curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
                curl_setopt($ch, CURLOPT_URL, $url_contiune_1);
                curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
                curl_setopt($ch, CURLOPT_HEADER, 1); 
                curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                $content_2 =curl_exec($ch);
                
                // $postfiles をエコーし​​ます。  
                カール_クローズ($ch);

                //获取redicturl链接
                $matches = 配列();       
                preg_match('/<as>/i', $content_2, $matches); 
                $url_contiune_2 = $matches[1]; //次に来る接続
                if(!$url_contiune_2) {
                    false を返します。
                }
               
                //获取邮箱请要求基址读取host
                $matches = 配列();       
                preg_match('/(.*?)//(.*?)/(.*?)/i', $url_contiune_2, $matches); 
                $url_contiune_3 = トリム($matches[1]).'//'.trim($matches[2]); //首页定义的站点基址
                $url_4 = $url_contiune_3.'/mail/ContactMainLight.aspx?n=435707983'; //nの後の数字は随数です
                if(!$url_contiune_3) {
                    false を返します。
                }

                //第四步: 开始获取邮箱联系人
                //ベース $url_4
                $ch =curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
                curl_setopt($ch, CURLOPT_URL, $url_4);
                curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                $str =curl_exec($ch);
                カール_クローズ($ch);
                

                // データを分析します (このデータは Hotmail の JS 処理機構のため、表面では表示されませんが、ソース コードではデータを確認できます)
                return $this->hanlde_date($str);
                
        }
        関数 hanlde_date($data) {
                $new_str = 配列();
                if(!empty($data)) {
                        $ops_start =tripos($data,'ic_control_data');
                        $ops_end = ストリップス($data,';',$ops_start);
                        $new_str = substr($data, $ops_start + strlen('ic_control_data = '), $ops_end - $ops_start - strlen('ic_control_data = ') );
                        $new_str を返します。 //JSON オブジェクトを返す
                } それ以外 {
                    戻り配列();
                }
                
                                    
        }
}
$msn = 新しい MSN();
$res = $msn->getAddressList('usrname@hotmail.com','111111');

?>

 <div class="clear"></div></as>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート