ホームページ > バックエンド開発 > PHPチュートリアル > PHP は GMAIL、HOTMAIL (MSN)、YAHOO、163、126 の電子メール ログインをシミュレートします (オリジナル)

PHP は GMAIL、HOTMAIL (MSN)、YAHOO、163、126 の電子メール ログインをシミュレートします (オリジナル)

WBOY
リリース: 2016-06-23 14:08:46
オリジナル
1381 人が閲覧しました

最近忙しく、これらのソース コードをオープンソースにするために、国慶節の休暇の終わりにこの記事を急いで公開しています

もちろん、これらの方法はお勧めできないかもしれませんが、これはすべきです現在はUCHOMEの香港と台湾のサイトなので、全体的な方向性は

友達招待の表示方法を変更する予定だったので、最初は気にしなかったので、「はい」と言いました。

これを行っているときに、UCH のこの場所がローミング モードを使用して作成されていることがわかりました。これは非常に混乱しており、何も変更できませんでした。

ああ、私は同意して大丈夫だと言いましたが、実際の状況ではもう不可能なので、この問題をすぐに解決するために、GOOGLE、

Baidu で検索したところ、結果はまた予想外でした。 、ちょうど 126 メールボックス 他にオープンソースの例はありません。QQ を保持していて、他のソース コードが欲しいと言っている兄弟がいます

QQ を追加して購入できます。この人にはもうコメント不要です!時間をかけて整理したところ、幸運にもいくつか入手できました。時間は限られているので、他のものは気にしませんでした。GMAIL、HOTMAIL (MSN) を使用しました。 , YAHOO のメール連絡先の PHP ソース コード:



1.GMAIL

 <?phpdefine( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) );   //定义COOKIES存放的路径,要有操作的权限define( "TIMEOUT", 1000 ); //超时设定class GMAIL{        private function login($username, $password)        {                               //第一步:模拟抓取登录页面的数据,并记下cookies                $cookies = array();                $matches = array();                //获取表单                $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);                curl_close($ch);                //模拟参数                $name = array('dsh','timeStmp','secTok');                 foreach($name as $v) {                     preg_match('/<input\s*type="hidden"\s*name="'.$v.'"\s*id="'.$v.'"\s*value="(.*?)"\s*\/>/i', $contents, $matches);                    if(!empty($matches)) {                        $$v = $matches[1];                        $matches = array();                    }                        }                $server = 'mail';                preg_match('/<input\s*type="hidden"\s*name="GALX"\s*value="(.*?)"\s*\/>/i', $contents, $matches);                if(!empty($matches)) {                    $GALX = $matches[1];                    $matches = array();                }                 $timeStmp = time();                                //第二步: 开始登录                $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);                $fileds = "dsh=$dsh&Email=".$username."&Passwd={$password}&GALX=$GALX&timeStmp=$timeStmp&secTok=$secTok&signIn=Sign in&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);                               curl_close($ch);                     //第三步:check Cookies即也算是个引导页面                $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);                                 curl_close($ch);                                                                if (strpos($contents, "安全退出") !== false)                {                                                return FALSE;                }                               return TURE;        }                //获取邮箱通讯录-地址        public function getAddressList($username, $password)        {                               if (!$this->login($username, $password))                {                        return 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);                curl_close($ch);                //die($contents);                //get mail list from the page information username && emailaddress                /* 对于返回xml数据时的处理                preg_match_all("/<string\s*name=\"EMAILREF\">(.*)<\/string>/Umsi",$contents,$mails);                preg_match_all("/<string\s*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&&& '));                 return $contents;        }}$gamil = new GMAIL;$res = $gamil->getAddressList('username@163.com','123456');echo $res;?><script type="text/javascript">var data = <?php echo $res; ?>alert(data['Body']); //json数据</script>
ログイン後にコピー



ディスカッションへの返信 (解決策)

2.HOTMAIL(MSN)

<?phpdefine( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) );   //定义COOKIES存放的路径,要有操作的权限define( "TIMEOUT", 1000 ); //超时设定class MSN{        function getAddressList($username, $password)        {                               //第一步:模拟抓取登录页面的数据,并记下cookies                $cookies = array();                $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.0.5285.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=2052&id=64855&mkt=en");                curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);                curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                $str = curl_exec($ch);                              curl_close($ch);                //参数的分析                $matches = array();                       preg_match('/<input\s*type="hidden"\s*name="PPFT"\s*id="(.*?)"\s*value="(.*?)"\s*\/>/i', $str, $matches);                 $PPFT = $matches[2];                                preg_match('/srf_sRBlob=\'(.*?)\';/i', $str, $matches);                 $PPSX = $matches[1];                                $type = 11;                                $LoginOptions = 3;                                $Newuser = 1;                                $idsbho = 1;                                $i2 = 1;                                $i12 = 1;                                $i3 = '562390';                                $PPSX = 'Pa';                //合并参数                $postfiles = "login=".$username."&passwd=".$password."&type=".$type."&LoginOptions=".$LoginOptions."&Newuser=".$Newuser."&idsbho=".$idsbho."&i2=".$i2."&i3=".$i3."&PPFT=".$PPFT."&PPSX=".$PPSX."&i12=1";                      //第二步:开始登录                $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.0.5285.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=2052&id=64855&mkt=en&bk='.(time()+715)); //此处的两个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);                curl_close($ch);                 if( stripos($content,'WLWorkflow') !== FALSE ) {     //WLWorkflow登录页面JS                    return false;      //登录失败                }                //获取location链接                $matches = array();                       preg_match('/window.location.replace\(\"(.*?)\"\)/i', $content, $matches);                 $url_contiune_1 = $matches[1]; //接下来的链接                if(!$url_contiune_1) {                    return false;                }                //第三步: 进入引导页面                                $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);                                //echo $postfiles;                  curl_close($ch);                                //获取redicturl链接                $matches = array();                       preg_match('/<a\s*href=\"(.*?)\"\s*>/i', $content_2, $matches);                 $url_contiune_2 = $matches[1]; //接下来的链接                if(!$url_contiune_2) {                    return false;                }                                //跳过进入首页                /*                $ch = curl_init();                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);                curl_setopt($ch, CURLOPT_URL, $url_contiune_2);                curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);                curl_setopt($ch, CURLOPT_HEADER, 1);                 curl_setopt($ch, CURLOPT_TIMEOUT, 1000);                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                $content_3 = curl_exec($ch);                                 curl_close($ch);                */                //获取邮箱请求基址 读取host                $matches = array();                       preg_match('/(.*?)\/\/(.*?)\/(.*?)/i', $url_contiune_2, $matches);                 $url_contiune_3 = trim($matches[1]).'//'.trim($matches[2]); //首页定义的站点基址                $url_4 = $url_contiune_3.'/mail/ContactMainLight.aspx?n=435707983'; //n后面的数字是随机数                if(!$url_contiune_3) {                    return false;                }                                //第四步: 开始获取邮箱联系人                //base  $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);                //分析数据 (此处的数据因为hotmail的JS处理机制,所以在页面上看不出来,源码上可以看到数据)                return $this->hanlde_date($str);                        }        function hanlde_date($data) {                $new_str = array();                if(!empty($data)) {                        $ops_start = stripos($data,'ic_control_data');                        $ops_end = stripos($data,';',$ops_start);                        $new_str = substr($data, $ops_start + strlen('ic_control_data = '), $ops_end - $ops_start - strlen('ic_control_data = ') );                        return $new_str; //返回JSON对象                } else {                    return array();                }                                                            }}$msn = new MSN;$res = $msn->getAddressList('username@111.com','123456');echo $res;?><script type="text/javascript">var data = <?php echo $res; ?>alert(data['ic1'][6]);alert(data['ic1'][3]);</script> 
ログイン後にコピー

3.YAHOO
れれー




注:

163 と 126 のソース コードはオンラインで入手できるため、ここでは 1 つずつ列挙しません

もちろん、このコードは私自身の個人的な作品であり、ガイドを提供するためのものです。みたいな問題

誰もこれに興味を持っていません

それを学び、集めました。共有してくれた投稿者に感謝します

投稿者は擬似ログインでおなじみです

役に立ちました、
コレクション

役に立ちました...コレクションありがとうございます

msn で得られた結果をもう一度処理するだけで、結果はかなり汚いです

集めました、カニ

主にカールとレギュラー。

悪くないよ。

オリジナルのポスターはまだありますか?これが欲しいだけです。一晩テストしましたが、yahoo から返されたデータを処理する方法がわかりません。[{"guid":"" ,"contactId":"1 ",...}{...}{...}]
php配列に変換したいのですが、jsonデータとして配列に変換するとうまくいきません。 Yahooのデータを処理する必要がありますか?知るか?

オリジナルのポスターはまだありますか?これが欲しいだけです。一晩テストしましたが、yahoo から返されたデータを処理する方法がわかりません。[{"guid":"" ,"contactId":"1 ",...}{...}{...}]

php配列に変換したいのですが、jsonデータとして配列に変換するとうまくいきません。 Yahooのデータを処理する必要がありますか?知るか?
これら 3 つの戻り値はすべて json データであり、これは単なる json 配列であり、配列の形式でアクセスできます。 JSON の結果は 2 日後に投稿されます

これには誰も興味がありません

もちろん
















はい!

コレクションを共有してくれた LZ に感謝します。ありがとう家主。

11 階の billssjone からの返信を引用します:
オリジナルのポスターはまだありますか?これが欲しいです。一晩テストしましたが、yahoo から返されたデータを処理する方法がわかりません。[{"guid":"" ,"contactId":"1 ",...}{...}{...}]
php配列に変換したいのですが、jsonデータとして配列に変換するとうまくいきません。 Yahooのデータを処理する必要がありますか?知るか?

これら 3 つの戻り値はすべて js です...

取得と出力には php の foreach を使用します。 []はjsonでは処理できないようですが、phpで処理するにはどうすればよいでしょうか?

ディンディンディンディンディンディン


あ、スピードが早くて大好きです

とても早くて時間通りです

マスターありがとう!
勉強になりました

勉強になりました、ありがとう~~~

オリジナルのポスターは本当に思慮深く、共有してくれてありがとう!

便利な、

コレクション


オリジナルのポスターは本当に思慮深く、共有してくれてありがとう!

PHP が yahoo から返されたデータをどのように処理するかを教えてください
===============
$yahoo = new YAHOO
$email_json = $yahoo->getAddressList($email; , $password);
foreach($email_json as $key => $value){


================
$email_json は通常 2 人の yahoo 友達を返します、形式は [{"guid":"","contactId":"1",...},{...}] です
ただし、foreach で読み取るときにエラーが発生しました: 警告: foreach に指定された引数が無効です( ) in
json_decode($email_json, true) を使用して配列を変換し、foreach を使用してそれを読み取ると、同じエラーが発生します。返されたデータはどのように処理すればよいですか?一晩中試しましたが解決できませんでした。

良い事

悪くない、コレクション。

yahoo からの返信データを読み取るために js を使用するように切り替えました。
著者は友達を見つけるための QQ 方法を持っていますか?もう 1 つ QQ が欲しいです

良いものが集まりました 共有してくれてありがとう

msn で取得した結果を処理するだけで済みます。結果は非常に乱雑です

結果を処理するためのコードを共有します:
$msn = new MSN ;
$email_json = $msn->getAddressList($email, $password);
$email_arr = json_decode($email_json, true);
if(count ( $value)==19){
echo "

名前: ".$value[3]."/メール: ".$value[6]."< / p>";
}
}
==========================
$gamil = 新しい GMAIL;
$email_json = $gamil- > ;getAddressList($email, $password);
$email_arr = json_decode($email_json, true);
foreach($email2_arr['連絡先'] as $key => ; $value){
echo "

名前: ".$value['DisplayName']."/メール: ".$value['メール'][0][ ' アドレス']."

";
}
=================
Yahoo:
$yahoo = new YAHOO; $ email_json = $yahoo->getAddressList($email, $password);


とても良かった

ヘン・チャンダー

共有してくれてありがとう!まずは試してみてください!

シェアしていただきありがとうございます!まずは試してみてください!

シェアしていただきありがとうございます!まずは試してみてください!

保存してください。将来役立つかもしれません。共有してくれてありがとう

共有してくれてありがとう...

悪くないです

163 などのメールボックスのソース コードはありますか?投稿者です

シェアしてくれてありがとう

良い人は良い人です

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