首页 后端开发 php教程 php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍_PHP教程

php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍_PHP教程

Jul 21, 2016 pm 03:06 PM
gmail msn php yahoo 介绍 模拟 登录 详细 邮箱

最近一直在忙,赶在这个假期结束的时候,发表一下此文,为了是让这些源码开源出来
当然这些方法可能不可取,但大致应该是这种方向了吧,由于目前做的一个UCHOME港台的站点
咱们策划说要改一下好友邀请里面的显示方式,开始我也没有在意,当时就说行!
到了弄这个的时候才发现,UCH里面的这个地方是用漫游型式做的,让人很是无解,啥都改不了!
唉,既然都答应了说可以,现在实际情况不行了,所以觉得不好意思,为了快速解决这问题,在GOOGLE,
百度上搜了个遍,结果又出忽意料,就一个126邮箱的开源例子,其它的都没有,有一牛哥留着QQ说要其它的源码,
可以加QQ买!不对此人评论了!俺花了点时间,整了整,结果就幸运的弄出来了几个,因为时间有限,目前手上的项目一直在弄,所以就没有管其它的,现在给出 GMAIL,HOTMAIL(MSN),YAHOO的邮箱联系人的PHP源代码:
 
1.GMAIL

复制代码 代码如下:

define( "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('//i', $contents, $matches);
                    if(!empty($matches)) {
                        $$v = $matches[1];
                        $matches = array();
                    }       
                }
                $server = 'mail';
                preg_match('//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 = "pab:searchContactsFNtrueuser:getSignaturespab:getAllGroups";
                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>/Umsi",$contents,$mails);
                preg_match_all("/(.*)/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;
?>


2.HOTMAIL(MSN)
复制代码 代码如下:

define( "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('//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('//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;
?>


3.YAHOO
复制代码 代码如下:

define( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" ) );   //定义COOKIES存放的路径,要有操作的权限
define( "TIMEOUT", 1000 ); //超时设定
class YAHOO
{
        private function login($username, $password)
        {              
                //第一步:模拟抓取登录页面的数据,并记下cookies
                $cookies = array();
                $matches = array();

                //获取表单
                $login_url = "https://login.yahoo.com/config/login?.src=fpctx&.intl=us&.done=http%3A%2F%2Fwww.yahoo.com%2F";
                $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('tries','src','md5','hash','js','last','promo','intl','bypass','partner','u','v','challenge','yplus','emailCode','pkg','stepid','ev','hasMsgr','chkP','done','pd','pad','aad');
                $postfiles = array();
                $matches = array();
                foreach($name as $v) {
                     preg_match('//i', $contents, $matches);
                    if(!empty($matches)) {
                        $postfiles['.'.$v] = $matches[1];
                        $matches = array();
                    }
                    if($v == 'pd') {
                        $postfiles['.'.$v] = urlencode($postfiles['.'.$v]);
                    }      
                }
                $postfiles['pad'] = 5;
                $postfiles['aad'] = 6;
                $postfiles['login'] = urlencode($username);
                $postfiles['passwd'] = $password;
                $postfiles['.persistent'] = 'y';
                $postfiles['save'] = '';
                $postfiles['.done'] = urlencode($postfiles['.done']);
                //$postfiles['.pd'] = urlencode($postfiles['.pd']);
                $postargs = '';

                foreach($postfiles as $k => $v){
                    $postargs .= $k.'='.$v.'&';       
                }
                $postargs = substr($postargs,0,-1);
                $request = "https://login.yahoo.com/config/login?";

                //开始登录
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_URL, $request);

                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postargs);
                curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);
                curl_setopt($ch, CURLOPT_TIMEOUT, TIMEOUT);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                $contents = curl_exec($ch);
                curl_close($ch);
                if (stripos($contents,'submit') != FALSE)
                {                       
                        return 0;
                }       
                return 1;
        }

        //获取邮箱通讯录-地址
        public function getAddressList($username, $password)
        {              
                if (!$this->login($username, $password))
                {
                        return 0;
                }

            //开始进入模拟抓取
            //get mail list from the page information username && emailaddress
            $url = "http://address.mail.yahoo.com/";
            $data = array( );
            if ( !$data = $this->hanlde_date( $url, $names, $emails) )
            {
                return FALSE;
            }
            echo '
';<br>            print_r($data);<br>            return $data;<br>        }<br>        function hanlde_date( $url, &$names, &$emails)<br>        {<br>            $ch = curl_init( );<br>            curl_setopt( $ch, CURLOPT_COOKIEFILE, COOKIEJAR );<br>            curl_setopt( $ch, CURLOPT_URL, $url );<br>            curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );<br>            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br>            $contents = curl_exec($ch);<br>            curl_close($ch); <br>            $temparr = array();<br>            preg_match_all('/InitialContacts/s*=/s*(.*?);/i',$contents,$temparr);<br>            return $temparr[1][0].';';       //匹配出JSON对象数组<br>        }<br>}<br>$yahoo = new YAHOO;<br>$res = $yahoo->getAddressList('username@yahoo.com.cn','123456');<br>?><br><script type="text/javascript"><!--<BR>var data = <?php echo $res; ?><BR>var obj1 = data[0];<BR>alert(data[0]['contactName']);<BR>// --></script><br>
登录后复制

注:
163,126在网上的源码都有,在此就不一一的列出来了哦
当然此代码是自己个人的拙作,只是为了给大家此类问题做一个指引

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/327649.htmlTechArticle最近一直在忙,赶在这个假期结束的时候,发表一下此文,为了是让这些源码开源出来 当然这些方法可能不可取,但大致应该是这种方向了...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

十大数字虚拟货币app排行榜 币圈交易数字货币交易所排名前十 十大数字虚拟货币app排行榜 币圈交易数字货币交易所排名前十 Apr 22, 2025 pm 03:00 PM

十大数字虚拟货币app排行榜分别是:1. OKX,2. Binance,3. gate.io,4. Coinbase,5. Kraken,6. Huobi,7. KuCoin,8. Bitfinex,9. Bitstamp,10. Poloniex。这些交易所根据交易量、用户体验和安全性等因素评选,均提供多种数字货币交易服务和高效的交易体验。

欧易交易所如何注册账户 欧易交易所注册教程 欧易交易所如何注册账户 欧易交易所注册教程 Apr 24, 2025 pm 02:06 PM

注册欧易账户的步骤如下:1.准备有效邮箱或手机号和稳定网络。2.访问欧易官网。3.进入注册页面。4.选择邮箱或手机号注册,填写信息。5.获取并填写验证码。6.同意用户协议。7.完成注册并登录,进行KYC和设置安全措施。

排名前十的数字货币交易所 数字货币app交易所排行榜前十 排名前十的数字货币交易所 数字货币app交易所排行榜前十 Apr 22, 2025 pm 03:15 PM

数字货币交易所排名前十分别是:1. OKX,2. Binance,3. gate.io,4. Coinbase,5. Kraken,6. Huobi,7. KuCoin,8. Bitfinex,9. Bitstamp,10. Poloniex。这些交易所根据交易量、用户体验和安全性等因素评选,均提供多种数字货币交易服务和高效的交易体验。

币安下载链接 币安下载路径 币安下载链接 币安下载路径 Apr 24, 2025 pm 02:12 PM

安全下载币安APP需通过官方渠道:1. 访问币安官网,2. 找到并点击APP下载入口,3. 选择扫描二维码、应用商店或直接下载APK文件的方式下载,确保链接和开发者信息真实,开启双重验证保护账户安全。

芝麻开门交易所如何注册账户 芝麻开门交易所注册教程 芝麻开门交易所如何注册账户 芝麻开门交易所注册教程 Apr 24, 2025 pm 02:00 PM

注册芝麻开门账号需7步:1.准备有效邮箱或手机号及稳定网络;2.访问官网;3.进入注册页面;4.选择并填写注册方式;5.获取并填写验证码;6.同意用户协议;7.完成注册并登录,建议进行KYC和设置安全措施。

十大数字虚拟币交易app排行榜 十大数字货币交易所排行榜2025年 十大数字虚拟币交易app排行榜 十大数字货币交易所排行榜2025年 Apr 22, 2025 pm 02:45 PM

数字货币交易所排名前十分别是:1. OKX,2. Binance,3. gate.io,4. Coinbase,5. Kraken,6. Huobi,7. KuCoin,8. Bitfinex,9. Bitstamp,10. Poloniex。这些交易所根据交易量、用户体验和安全性等因素评选,均提供多种数字货币交易服务和高效的交易体验。

币安交易所如何注册账户 币安交易所注册教程 币安交易所如何注册账户 币安交易所注册教程 Apr 24, 2025 pm 02:03 PM

注册币安账号的步骤包括:1. 准备有效邮箱或手机号和稳定网络;2. 访问币安官网;3. 进入注册页面;4. 选择注册方式;5. 填写注册信息;6. 同意用户协议;7. 完成验证;8. 获取并填写验证码;9. 完成注册。

欧易交易所app官网下载苹果手机下载 欧易交易所app官网下载苹果手机下载 Apr 28, 2025 pm 06:57 PM

欧易交易所app支持苹果手机下载,访问官网,点击“苹果手机”选项,在App Store中获取并安装,注册或登录后即可进行加密货币交易。

See all articles