使用curl进行模拟登录

    1. <?php
    2. $cookie_path = './'; //设置cookie保存路径
    3.  
    4. //-----登录要提交的表单数据---------------
    5. $vars['username'] = '张三';
    6. $vars['pwd'] = '123';
    7. //-------------------------------------
    8. $method_post = true;
    9. //登录提交的url地址(表单中的action的绝对地址)
    10. $url = 'http://****.com/login';
    11. //----------------------------
    12.  
    13. $ch = curl_init();
    14. $params[CURLOPT_URL] = $url; //请求url地址
    15. $params[CURLOPT_HEADER] = true; //是否返回响应头信息
    16. $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
    17. $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
    18. $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';

    19. $postfields = '';
    20. foreach ($vars as $key => $value){
    21. $postfields .= urlencode($key) . '=' . urlencode($value) . '&';
    22. }

    23. $params[CURLOPT_POST] = true;
    24. $params[CURLOPT_POSTFIELDS] = $postfields;

    25. //判断是否有cookie,有的话直接使用
    26. if (isset($_COOKIE['cookie_jar']) && ($_COOKIE['cookie_jar'] || is_file($_COOKIE['cookie_jar'])))
    27. {
    28. $params[CURLOPT_COOKIEFILE] = $_COOKIE['cookie_jar']; //这里判断cookie
    29. }
    30. else
    31. {
    32. $cookie_jar = tempnam($cookie_path, 'cookie'); //产生一个cookie文件
    33. $params[CURLOPT_COOKIEJAR] = $cookie_jar; //写入cookie信息
    34. setcookie('cookie_jar', $cookie_jar); //保存cookie路径
    35. }
    36. curl_setopt_array($ch, $params); //传入curl参数
    37. $content = curl_exec($ch); //执行
    38.  
    39. echo '
    40. ';
    41. echo $content; //输出登录结果
    42. /*
    43. //---------登录成功后再次请求其他地址,如果有多个可以循环执行---------
    44. echo '
    45. ';
    46. $nexturl = 'http://****.com/test';
    47. $params[CURLOPT_URL] = $nexturl;
    48. $params[CURLOPT_POSTFIELDS] = '';
    49. curl_setopt_array($ch, $params); //传入curl参数
    50. $content = curl_exec($ch); //执行
    51. echo $content; //输出请求结果
    52. //-------------------------------------------------
    53. */
    54. curl_close($ch); //关闭连接

    55. ?>
原文地址:https://www.cnblogs.com/mhj66/p/6391746.html