最近忙しく、これらのソース コードをオープンソースにするために、国慶節の休暇の終わりにこの記事を急いで公開しています
もちろん、これらの方法はお勧めできないかもしれませんが、これはすべきです現在は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のデータを処理する必要がありますか?知るか?
php配列に変換したいのですが、jsonデータとして配列に変換するとうまくいきません。 Yahooのデータを処理する必要がありますか?知るか?
これら 3 つの戻り値はすべて json データであり、これは単なる json 配列であり、配列の形式でアクセスできます。 JSON の結果は 2 日後に投稿されます
これには誰も興味がありません
もちろん
はい!
コレクションを共有してくれた LZ に感謝します。ありがとう家主。
11 階の billssjone からの返信を引用します:
オリジナルのポスターはまだありますか?これが欲しいです。一晩テストしましたが、yahoo から返されたデータを処理する方法がわかりません。[{"guid":"" ,"contactId":"1 ",...}{...}{...}]
php配列に変換したいのですが、jsonデータとして配列に変換するとうまくいきません。 Yahooのデータを処理する必要がありますか?知るか?
これら 3 つの戻り値はすべて js です...
ディンディンディンディンディンディン
あ、スピードが早くて大好きです
とても早くて時間通りです
マスターありがとう!
勉強になりました
勉強になりました、ありがとう~~~
オリジナルのポスターは本当に思慮深く、共有してくれてありがとう!
便利な、
コレクション
オリジナルのポスターは本当に思慮深く、共有してくれてありがとう!
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][ ' アドレス']."
";シェアしていただきありがとうございます!まずは試してみてください!
シェアしていただきありがとうございます!まずは試してみてください!
保存してください。将来役立つかもしれません。共有してくれてありがとう
共有してくれてありがとう...
悪くないです
163 などのメールボックスのソース コードはありますか?投稿者です
シェアしてくれてありがとう
良い人は良い人です