• 技术文章 >后端开发 >php教程

    php模拟登录qq邮箱(curl命令详解)

    2016-07-25 09:03:56原创1110
    1. header("Content-type:text/html;charset=utf-8");

    2. $cookie_file = dirname(__FILE__)."/cookie_".md5(basename(__FILE__)).".txt"; // 设置Cookie文件保存路径及文件名
    3. function vlogin($url,$data){ // 模拟登录获取Cookie函数
    4. $curl = curl_init(); // 启动一个CURL会话
    5. curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    6. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    7. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
    8. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    9. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    10. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    11. curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    12. curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
    13. curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie信息的文件名称
    14. curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息
    15. curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    16. curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    17. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    18. $tmpInfo = curl_exec($curl); // 执行操作
    19. if (curl_errno($curl)) {
    20. echo 'Errno'.curl_error($curl);
    21. }
    22. curl_close($curl); // 关闭CURL会话
    23. return $tmpInfo; // 返回数据
    24. }
    25. function vget($url){ // 模拟获取内容函数
    26. $curl = curl_init(); // 启动一个CURL会话
    27. curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    28. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    29. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
    30. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    31. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    32. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    33. curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求
    34. curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息
    35. curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    36. curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    37. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    38. $tmpInfo = curl_exec($curl); // 执行操作
    39. if (curl_errno($curl)) {
    40. echo 'Errno'.curl_error($curl);
    41. }
    42. curl_close($curl); // 关闭CURL会话
    43. return $tmpInfo; // 返回数据
    44. }
    45. function vpost($url,$data){ // 模拟提交数据函数
    46. $curl = curl_init(); // 启动一个CURL会话
    47. curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    48. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    49. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
    50. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    51. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    52. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    53. curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    54. curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
    55. curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息
    56. curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    57. curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    58. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    59. $tmpInfo = curl_exec($curl); // 执行操作
    60. if (curl_errno($curl)) {
    61. echo 'Errno'.curl_error($curl);
    62. }
    63. curl_close($curl); // 关键CURL会话
    64. return $tmpInfo; // 返回数据
    65. }

    66. function delcookie($cookie_file){ // 删除Cookie函数

    67. @unlink($cookie_file); // 执行删除
    68. }

    69. function readcookies( $file)

    70. {
    71. $result = null;
    72. $fp = fopen( $file, "r" );
    73. if($fp)
    74. {
    75. while ( !feof( $fp ) )
    76. {
    77. $buffer = fgets( $fp, 4096 );
    78. $result = $buffer;
    79. //$tmp = @split( "/t", $buffer );
    80. //$result[@trim( $tmp[5] )] = @trim( $tmp[6] );
    81. }
    82. fclose($fp);
    83. }
    84. return $result;
    85. }
    86. $url = 'http://w.mail.qq.com/cgi-bin/loginpage?f=xhtml';
    87. if(!file_exists($cookie_file)) { // 检测Cookie是否存在
    88. $str = vget($url); // 获取提交后台
    89. preg_match("/action=\"([^\"]*?)\"/isU",$str,$hash); // 提取登录随机值
    90. print_r($hash[1]);
    91. vlogin($hash[1],'&f=xhtml&uin=你的qq号&aliastype=@qq.com&pwd=qq号密码&mss=1'); // 登录获取Cookie

    92. }

    93. else
    94. {
    95. vget("http://w30.mail.qq.com/cgi-bin/today?sid=ggQq2H-cUHdDdHs0z6rT6vN8,4,z-yTNgDwU&first=1");
    96. echo '生成了cookie';
    97. }
    98. ?>

    复制代码

    >>> 更多有关php模拟登录的文章,请参考专题链接:php模拟登录 php curl模拟登录教程大全

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php模拟登录qq邮箱(curl命令详解)
    上一篇:php生成excel与控制Excel单元格中的换行符 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 实例详解PHP统计代码行数及文件数量的方法• 关于非常提交的问题,请各位看看• PHP String and Regular Expression functions• php通过文件头判断格式的方法,_PHP教程• PHP命名空间和自动加载类,PHP命名空间加载类_PHP教程
    1/1

    PHP中文网