使用curl进行模拟登录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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. ?>

以上是关于使用curl进行模拟登录的主要内容,如果未能解决你的问题,请参考以下文章

PHP使用Curl实现模拟登录及抓取数据功能示例

php通过curl扩展进行模拟登录(含验证码)

怎样用php中的curl模拟登陆

PHP模拟登录并获取数据

PHP培训 CURL模拟登录

PHP通过CURL模拟登录并获取数据