php は、GMAIL、HOTMAIL (MSN)、YAHOO、163、126 の電子メール ログインをシミュレートします (オリジナル)
最近忙しいので、これらのソース コードを公開するために、この記事を国慶節の休暇の終わりに公開します。 source
もちろんこれらの方法は推奨されないかもしれませんが、現在 UCHOME 香港と台湾のサイトを構築中なので、おおよそこの方向になるはずです
表示方法を変更する予定です友達の招待状に、最初は気にしなかったので、「はい!」と言いました。
これを行っているときに、UCH のこの場所がローミング モードを使用して作成されていることがわかりました。これは非常に混乱しており、何も変更できませんでした。
まあ、私は同意して大丈夫と言ったのに、現状ではうまくいかないので、恥ずかしいので、この問題を早く解決するために、GOOGLEで検索してみました、
。 Baidu の結果はまたもや、オープン ソースの例は 126 メールボックスのみで、他にはありません。ある人は QQ を保持しており、他のソース コードが必要だと言いました。
に QQ を追加できます。買ってください!この人にはもうコメント不要です!時間をかけて整理したところ、幸運にもいくつか入手できました。時間は限られているので、他のものは気にしませんでした。GMAIL、HOTMAIL (MSN) を使用しました。 , YAHOOのメール連絡先のPHPソースコード:
1.GMAIL
<!-- 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 ); //タイムアウト設定 クラス GMAIL { プライベート関数ログイン($username, $password) { //ステップ 1: ログイン ページのデータの取得をシミュレートし、Cookie を書き留めます $cookies = 配列(); $matches = 配列(); //フォームを取得する $login_url = "https://www.google.com/accounts/ServiceLoginAuth"; $ch =curl_init($login_url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $contents =curl_exec($ch); カール_クローズ($ch); //シミュレーションパラメータ $name = array('dsh','timeStmp','secTok'); foreach($name as $v) { preg_match('/<inputs*type="hidden"s*name="'.$v.'"s*id="'.$v.'"s*value="(.*?)"s* />/i', $contents, $matches); if(!empty($matches)) { $$v = $matches[1]; $matches = 配列(); } } $server = 'メール'; preg_match('/<inputs*type="hidden"s*name="GALX"s*value="(.*?)"s*/>/i', $contents, $matches); if(!empty($matches)) { $GALX = $matches[1]; $matches = 配列(); } $timeStmp = 時間(); //ステップ 2: ログインを開始する $ch =curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ServiceLoginAuth"); curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR); curl_setopt($ch, CURLOPT_POST, 1); $filds = "dsh=$dsh&Email=".$username."&Passwd={$password}&GALX=$GALX&timeStmp=$timeStmp&secTok=$secTok&signIn=サインイン&rmShown=1&asts=&PersistentCookie=yes"; curl_setopt($ch, CURLOPT_POSTFIELDS, $fileds); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $str =curl_exec($ch); カール_クローズ($ch); //ステップ 3: Cookie の確認もガイド ページです $ch =curl_init("https://www.google.com/accounts/CheckCookie?chtml=LoginDoneHtml"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_COOKIEFILE,COOKIEJAR); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR); curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT); $str2 =curl_exec($ch); カール_クローズ($ch); if (strpos($contents, "安全な終了") !== false) { FALSEを返します。 } TURE を返します。 } //メールアドレス帳のアドレスを取得 パブリック関数 getAddressList($username, $password) { if (!$this->login($username, $password)) { FALSEを返します。 }//シミュレーションキャプチャの入力を開始します $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, "http://mail.google.com/mail/contacts/data/contacts?thumb=true&groups=true&show=ALL&enums=true&psort=Name&max=300&out=js&rf=&jsx=true"); // out=js は json データを返します。設定されていない場合は XML データを返します curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR); /* この設定は XML データを返すときに必要です curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/xml")); $str = "<?xml version="1.0"?><object><array name="items"><object><string name="func">pab:searchContacts</string> ;<object name="var"><array name="order"><object><string name="field">FN</string><boolean name="ignoreCase"> true</boolean></object></array></object></object><object><string name="func">user:getSignatures</string></object> ;<object><string name="func">pab:getAllGroups</string></object></array></object>"; curl_setopt($ch, CURLOPT_POSTFIELDS, $str); */ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT); $contents =curl_exec($ch); カール_クローズ($ch); //死ぬ($contents); // ページ情報からメールリストを取得 ユーザー名 && メールアドレス /* XMLデータを返す際の処理 preg_match_all("/<strings>(.*)</string>/Umsi",$contents,$mails); preg_match_all("/<strings*name="FN">(.*)</string>/Umsi",$contents,$names); $users = array(); foreach($names[1] as $k=>$user) { //$user = iconv($user,'utf-8','gb2312'); $users[$mails[1][$k]] = $user; } if (!$users) { return 'あなたのメールボックスにはまだ連絡先がありません'; } */ $contents = substr($contents, strlen('while (true); &&&START&&&'), -strlen('&&&END&&& ')); $content を返します。 } } $gamil = 新しい GMAIL; $res = $gamil->getAddressList('username@163.com','123456'); $res をエコー; ?> <スクリプトタイプ="text/javascript"> var data = <?php echo $res ?> alert(data['Body']); //json データ </スクリプト> <div class="clear"></div></strings>