最近发现线上登录Yahoo邮箱取地址薄的代码不能用了,调试发现是登录方式变换了,特通过HttpFox关注,重构代码如下:



define("USERAGENT","Mozilla/99.99 (compatible; MSIE 99.99; Windows XP 99.99)");define("COOKIEJAR",tempnam("/tmp/cookie/","cookie"));define("TIMEOUT",10);define("REFER", "http://mail.cn.yahoo.com");define("LOGIN_HOME", "http://mail.cn.yahoo.com");define("LOGINURL", "https://edit.bjs.yahoo.com/config/login?"); ........

 /**     *get login parameters     *@return @mixed     *     */    public function getParam()    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, LOGIN_HOME);        curl_setopt($ch, CURLOPT_USERAGENT,USERAGENT);        curl_setopt($ch, CURLOPT_COOKIEJAR,COOKIEJAR);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        $contents = curl_exec($ch);        curl_close($ch);

    preg_match_all("/name=\".challenge\" value=\"(.*?)\"/", $contents, $arr_challenge);   $challenge = $arr_challenge[1][0];   preg_match_all("/name=.done value=\"(.*?)\"/", $contents, $arr_done);   $done = $arr_done[1][0];        return array('challenge'=>$challenge,                      'done'=>$done);    }

    /**     *     *@return boolean     */    public function checkLogin($user,$password)    {        $params = $this->getParam();        $done = $params['done'];        $challenge = $params['challenge'];  $postfields = ".intl=cn&.done={$done}&.src=ym&.cnrid=ymhp_&challenge=${challenge}&login={$user}&passwd={$password}&submit=";

        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL,$LOGINURL);        curl_setopt($ch, CURLOPT_REFERER, REFER);        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);        curl_setopt($ch, CURLOPT_USERAGENT,USERAGENT);        curl_setopt($ch, CURLOPT_COOKIEJAR,COOKIEJAR);        curl_setopt($ch,CURLOPT_TIMEOUT,TIMEOUT);        curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);

   $r = curl_exec($ch);        curl_close($ch);

        if(strpos($r,"Caps Lock")) {     return False;        } else {       return True;  }    }

yahoocn邮箱登录脚本相关推荐

  1. Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)

    Python+Selenium自动化测试--126邮箱自动登录脚本 版权声明:本文为博主原创文章,未经允许不得转载.https://blog.csdn.net/qiao_wan/article/det ...

  2. 自己的网页嵌入外部邮箱登陆

    类似上面的外部邮箱入口,我们在自己的页面里也可以添加,代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  3. hao123.com上的邮箱登录

    <!------第一步:创建mail.js 文件------------> function G($){return document.getElementById($)} functio ...

  4. 邮箱的登陆界面,选择登陆到不同类型的邮箱 编程怎么实现

    法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 02 <html> ...

  5. 【转载】自己的网页嵌入外部邮箱登陆

    代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  6. appuim java 脚本_APP自动化测试神器之Appium-QQ登录脚本实战(java版)

    在前文中,我们已经完成了如下知识点的铺垫: 一.QQ登录脚本测试用例 下面我们就来着手实现QQ轻聊版本应用的登录业务脚本的开发和运行.打开android模拟器上的qq应用 点击首页上的登录按钮 在登录 ...

  7. Lumen / Laravel 使用网易邮箱 SMTP 发送邮件

    Laravel 是目前最流行的PHP框架,而Lumen 是 Laravel 的精简版,主要用于接口开发. Laravel 邮件发送服务基于 Symfony 组件 Swift Mailer. 本文记录了 ...

  8. Git 修改用户名和邮箱

    在修改用户名和邮箱之前可以查看下现在的用户名和邮箱 git config --list 或者使用 git config user.name git config user.email 修改用户名和邮箱 ...

  9. 在SharePoint 2010使用OWA查看自己邮箱的内容

    在SharePoint 2010使用OWA 背景: 利用 Outlook Web Access Web 部件,可以在 SharePoint 网站中显示从 Microsoft Exchange Serv ...

最新文章

  1. 为什么双层循环 冒泡排序_冒泡排序的双重循环理解
  2. 聊聊Oracle 11g的Snapshot Standby Database(上)
  3. 杨海坡:比特币分叉往事
  4. 为什么应该学习Kotlin
  5. iOS开发火了九年,这些错误你还在犯嘛?
  6. 精确控制div的高度
  7. miui微博html5版关闭,MIUI10迎来最后一波开发版推送 可关闭广告消息
  8. Java 13,最新最全新特性解读
  9. 用企业实例说明,制造业如何打破4大困境,解决数字化转型痛点
  10. 在机器学习中为什么只需要正的误差而不用负的误差
  11. 【Elasticsearch】一次 排查 iK 分词器 查询慢 分词多 内容大 的问题记录
  12. SCREEN MODULE 逻辑控制
  13. selenium控制浏览器操作
  14. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航
  15. Ontrack易恢复最新版EasyRecovery数据恢复软件功能
  16. win10计算机不分区,win10有必要分区吗
  17. 深入了解Spring IoC
  18. NCRE——网络工程师——操作系统
  19. android pie新功能,Android Pie:3个隐藏功能 | MOS86
  20. 踱步狼注释移除状态机算法2019.10

热门文章

  1. easyui表格数据折叠的使用经验
  2. C#Json怎么组合在一起_github上有哪些不错的C# .Net项目?
  3. 双系统:解决ubuntu18.04系统开机黑屏的问题(ubuntu20.04,ubuntu16.04适用)
  4. wangEditor介绍(入门级)
  5. JUC-ReentrantLock
  6. C#中HttpWebRequest的用法详解
  7. 自学Java需要多长时间?
  8. 如何创建一个react项目
  9. [转]artDialog说明文档
  10. php文本框的属性,在PHP中,为文本框设置“name”属性的方法是() 答案:为不同文本框表单元素分别设置不同的“name”属性值...