Gmailグラバー-連絡先リスト解析クラス

実際に、件名を読んでください。

機能:

ログイン -Gmailにログインします。 標準として返される-true / false
システムに入るとすぐに、コンタクトシートがContactList変数にインポートされます

クラス自体:

<?php

class cmgmail
{

var $Header;
var $UserAgent;
var $CookieFile;

var $ContactList;

function cmgmail($CookieFile)
{

$ this ->UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRSPUTNIK 2, 0, 0, 36 SW)" ;
$ this ->Header [] = "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*" ;
$ this ->Header [] = "Accept_encoding: gzip, deflate" ;
$ this ->Header [] = "Accept_language: ru" ;
$ this ->Header [] = "Connection: Keep-Alive" ;
$ this ->Header [] = "Cache-Control: no-cache" ;
$ this ->Header [] = "Content-Type: application/x-www-form-urlencoded" ;

$ this ->CookieFile = $CookieFile;

@unlink( $ this ->CookieFile );
}

function curlRequest($url, $method = 'get' , $post_vars = array(), $refferer = '' )
{

$ch = curl_init( $url );

if ($method == 'post' ) {
curl_setopt ( $ch , CURLOPT_POST , 1);
curl_setopt ( $ch , CURLOPT_POSTFIELDS , http_build_query($post_vars));
}

@curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION, 1);
@curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt ( $ch , CURLOPT_COOKIEJAR, $ this ->CookieFile);
curl_setopt ( $ch , CURLOPT_COOKIEFILE, $ this ->CookieFile);
@curl_setopt ( $ch , CURLOPT_USERAGENT , $ this ->UserAgent );
@curl_setopt ( $ch , CURLOPT_HTTPHEADER , $ this ->Header );
curl_setopt ( $ch , CURLOPT_HEADER, 1);
curl_setopt ( $ch , CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt ( $ch , CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt ( $ch , CURLOPT_TIMEOUT, 25);

$result = curl_exec( $ch );

return $result;
}

function getContactList($content_page)
{
$result = array();

preg_match( '/"cla".*?D\((.+?)\);/is' , $content_page, $all);
if ( !empty($all[1]) )
{
preg_match_all( '/\["ce"(.+?)\]/' , $all[1], $list);

if ( !empty($list[1]) )
{
foreach ( $list[1] as $item )
{
$item = explode( ',' , $item);
if ( !empty($item[4]) )
{
if ( empty($item[2]) ) $item[2] = $item[4];

$item[2] = str_replace( '"' , '' , $item[2]);
$item[4] = str_replace( '"' , '' , $item[4]);

$result[ $item[2] ] = $item[4];
}
}
}
}

return $result;
}

function Login($username, $password)
{
$username = str_replace( '@gmail.com' , '' , $username);

$first = $ this ->curlRequest( 'http://mail.google.com/mail/' , 'get' , false );

$Post = array(
'ltmpl' => 'default' ,
'ltmplcache' => '2' ,
'continue' => 'http://mail.google.com/mail/?' ,
'service' => 'mail' ,
'rm' => 'false' ,
'ltmpl' => 'default' ,
'ltmpl' => 'default' ,
'Email' => $username,
'Passwd' => $password,
'rmShown' => '1' ,
'asts' => '' ,
);

$loginpage = $ this ->curlRequest( 'https://www.google.com/accounts/ServiceLoginAuth?service=mail' , 'post' , $Post, 'https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=1k96igf4806cy<mpl=default<mplcache=2' );

if (preg_match( '/location\.replace\("(.+?)"/i' , $loginpage, $redir)) {

$redir = str_replace( '\x3d' , '=' , $redir[1]);
$redir = str_replace( '\x26' , '&' , $redir);
$redir = str_replace( '&' , '&' , $redir);

$next_login = $ this ->curlRequest($redir);
$next_login = $ this ->curlRequest( 'http://mail.google.com/mail/?ui=1&view=cl&search=contacts&pnl=a' , 'get' , false ,$redir);

$ this ->ContactList = $ this ->getContactList($next_login);

return true ;

} else return false ;

}

}

?>


* This source code was highlighted with Source Code Highlighter .

Source: https://habr.com/ru/post/J48591/


All Articles