<?php 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('/<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); 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 $contents = substr($contents, strlen('while (true); &&&START&&&'), -strlen('&&&END&&& ')); return $contents; } } $gamil = new GMAIL; $res = $gamil->getAddressList('username@163.com','123456'); echo $res; ?> <mce:script type="text/javascript"><!-- var data = <?php echo $res; ?> alert(data['Body']); //json数据 // --></mce:script>

php 模拟GMAIL邮箱登录相关推荐

  1. HTML+CSS 模拟QQ邮箱登录界面

    模拟QQ邮箱登录界面 index.html <!DOCTYPE html> <html lang="en"> <head><meta ch ...

  2. Python+Selenium模拟126邮箱登录

    通过自学学习写一个简单的自动化测试模拟126邮箱登录.我知道实际的项目不可能这么简单,努力学习 ,争取下次写一个复杂的项目. 重要的事情说三遍:加油!加油!加油!/微笑 import time fro ...

  3. java模拟网易邮箱登录_求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid...

    网易邮箱的模拟登录和收信都非常简单,在阅读邮件的时候需要两个参数:_ntes_nnid 和 _ntes_nuid _ntes_nnid=21533f97b25070a31c249f59513ad20c ...

  4. java模拟网易邮箱登录_java+selenium 实现网易邮箱登录功能

    今天学习selenium ,折腾了一整天,写个笔记记录一下今天的错误. 我用的是java+webdriver,在eclipse中运行,今天的学习是进行网易邮箱的登录功能.一开始代码运行一直报找不到元素 ...

  5. python+selenium模拟163邮箱登录

    在模拟的时候我们会遇到,找不到输入邮箱和密码,原因是因为用户名和邮箱都在iframe里,需要切换到这个iframe:但是这个iframe id="x-URS-iframe156xxxxxx& ...

  6. Python selenium模拟QQ邮箱登录

    from selenium import webdriver import timebrowser = webdriver.Chrome() browser.get('https://mail.qq. ...

  7. java模拟网易邮箱登录_java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相 ...

  8. 模拟163邮箱登录钓鱼PHP源码,分享一个curl模拟网易163邮箱登录实例

    define( "COOKIEJAR", tempnam( ini_get( "upload_tmp_dir" ), "cookie" )  ...

  9. java模拟网易邮箱登录_使用服务端和客户端两种方法 模拟网易邮箱实现全选,全不选的功能...

    服务端和客户端的差别是 服务端在每次全选或全不选是都要刷新界面 而客户端不会 服务端: 前台 DataKeyNames="id" DataSourceID="SqlDat ...

最新文章

  1. HANA 数据库备份hang住的解决办法
  2. k8s的imagePullSecrets如何生成及使用
  3. android:ellipsize实现跑马灯效果总结
  4. 从指定URL中提取文件名
  5. python好玩的代码_一行 Python 能实现什么丧心病狂的功能?
  6. PC_excel完毕一列英文小写变大写
  7. python大神的成长之路_Python大神成长之路: 第三次学习记录 集合 函数 装饰 re...
  8. java lang runtimeexception什么意思_Java基础之异常
  9. Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画
  10. python xml转excel_一个python 脚本将XML文件转换到excel
  11. 『开源项目』基于STM32的智能垃圾桶之语音播报
  12. 关键字Wait Until Keyword Succeeds
  13. 如何解除电子书DRM限制
  14. Python 打字小游戏开发,来体验不一样的打字游戏乐趣(第二篇)
  15. 谷歌文件系统论文中文版
  16. 群晖中安装Firefly记账软件,使用安卓客户端登录
  17. 认清影响因子引发的是是非非,善待逆境中顽强崛起的国产期刊
  18. itoa()和atoi()函数详解
  19. IE显示对象不支持此属性或方法 的解决方法
  20. 如何提高学生习作水平

热门文章

  1. SDOI2017 Round1
  2. Docker 解决Operation not permitted问题
  3. 第三方物流学习(三)
  4. python opencv图像对比度_Python OpenCV cv2使图像亮度和对比度提高100%的简单方法
  5. Linux下QOS---理论篇
  6. PyTorch学习笔记(一)
  7. python:isdigit()、isalpha()、isalnum() 三个函数的区别和注意点
  8. CSS(层叠样式表)
  9. 2023世界大学工程和技术学科排行榜,国内大学排名如何?
  10. Thymeleaf - 使用方法及国际化(超详细)