使用curl进行模拟登录

王大宝儿 王大宝儿     2022-08-27     617

关键词:

在信息采集的时候,要采集的站点可能需要登录,这样使用简单的采集方式(例如file_get_contents)就无法做到了,我们可以利用PHP的CURL扩展库来进行模拟登录,下面给出代码示例:

    <?php
            $cookie_path = ‘./‘; //设置cookie保存路径
            //-----登录要提交的表单数据---------------
            $vars[‘username‘] = ‘张三‘;
             $vars[‘pwd‘] = ‘123‘;
             //-------------------------------------
            $method_post = true;
            //登录提交的url地址(表单中的action的绝对地址)
             $url = ‘http://****.com/login‘;
            //----------------------------
             $ch = curl_init();
            $params[CURLOPT_URL] = $url;    //请求url地址
            $params[CURLOPT_HEADER] = true; //是否返回响应头信息
            $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
            $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
            $params[CURLOPT_USERAGENT] = ‘Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1‘;
        
            $postfields = ‘‘;
            foreach ($vars as $key => $value){
                $postfields .= urlencode($key) . ‘=‘ . urlencode($value) . ‘&‘;  
            }
            
            $params[CURLOPT_POST] = true;
            $params[CURLOPT_POSTFIELDS] = $postfields;
            
            //判断是否有cookie,有的话直接使用
            if (isset($_COOKIE[‘cookie_jar‘]) && ($_COOKIE[‘cookie_jar‘] || is_file($_COOKIE[‘cookie_jar‘])))
            {
                $params[CURLOPT_COOKIEFILE] = $_COOKIE[‘cookie_jar‘]; //这里判断cookie
            }
            else
            {
                $cookie_jar = tempnam($cookie_path, ‘cookie‘); //产生一个cookie文件
                $params[CURLOPT_COOKIEJAR] = $cookie_jar; //写入cookie信息
                setcookie(‘cookie_jar‘, $cookie_jar); //保存cookie路径
            }
            curl_setopt_array($ch, $params); //传入curl参数
            $content = curl_exec($ch); //执行
            echo ‘
    ‘;
            echo $content; //输出登录结果
            /*
            //---------登录成功后再次请求其他地址,如果有多个可以循环执行---------
            echo ‘
    ‘;
            $nexturl = ‘http://****.com/test‘;
            $params[CURLOPT_URL] = $nexturl;
            $params[CURLOPT_POSTFIELDS] = ‘‘;
            curl_setopt_array($ch, $params); //传入curl参数
            $content = curl_exec($ch); //执行
            echo $content; //输出请求结果
            //-------------------------------------------------
            */
            curl_close($ch); //关闭连接
            
    ?>

 

注:如果遇到无法请求https站点的情况,可能是因为无法验证证书或者域名,只要在curl_setopt_array前增加以下两项就可以了:

$params[CURLOPT_SSL_VERIFYPEER] = false;

$params[CURLOPT_SSL_VERIFYHOST] = false;


 

php模拟登陆知乎

您好,我想和您聊聊如何使用php爬取知乎想要爬取知乎,首先要解决的就是登录问题,知乎登录还是比较简单的,这里有一个示例:https://demo.zjmainstay.cn/php/curl/zhihulogin.php而爬取,不过是对登录成功之后的得到的cookie进行再次利... 查看详情

php通过curl模拟登录并获取数据

<?php/*通过CURL模拟登录并获取数据 一些网站需要权限认证,必须登录网站后,才能有效地抓取网页并采集内容, 这就需要curl来设置cookie完成模拟登录网页,php的curl在抓取网页内容方 面效率是比较高的,而且支持多线程,而fi... 查看详情

使用curl模拟ip和来源进行网站采集的实现方法

对于限制了ip和来源的网站,使用正常的采集方式是不行的。本文将介绍一种方法,使用php的curl类实现模拟ip和来源,实现采集限制ip和来源的网站。1.设置页面限制ip和来源访问server.php<?php$client_ip=getip();$referer=getreferer();$allow_i... 查看详情

玩儿虫那些事——使用curl

...个简单的网站二、模拟登录新浪三、各种请求的发送四、使用curl五、模拟登录QQ空间六、selenium的使用七、phantomjs的使用八、开源框架webmagic九、开源框架scrapy十、多线程爬取与反爬策略十一、加密与解密十二、APP数据抓取十三... 查看详情

使用 Curl 从 Yii2 进行 WP 自动登录在首次加载时不起作用

】使用Curl从Yii2进行WP自动登录在首次加载时不起作用【英文标题】:WPAutoLoginFromYii2usingCurlnotworkingonFirstLoad【发布时间】:2016-08-0916:53:46【问题描述】:我正在使用YII2的WordPress自动登录下面是我的代码。function.php(WP)functionautologin... 查看详情

如何使用qt进行postget模拟登录

参考技术AQt只是一个图形库吧,它没有能力,有能力的是该语言本身,只要按照HTTP协议发送一个POST或者GET请求就行了。GET请求的参数在url中,POST请求的参数在正文中。 查看详情

php登录知乎并发表文章

...关于PHP cURL的内容,请参考《PHP cURL实现模拟登录与采集使用方法详解》http://www.zjmainstay.cn/php-curl来自:求助得到的回答参考技术A去抓包你就知道需要那些参数了追问能具体一点吗?我抓了包也模拟发了数据,但是提示403错误... 查看详情

从模拟令牌进行网络登录

...:2009-08-2813:19:06【问题描述】:在模拟客户端的服务中(使用ImpersonateNamedPipeClient),我尝试调用CreateProcessAsUser。可执行文件名是位于第三台计算机上的UNC路径(既不是服务器,也不是连接到管道的客户端)。调用失败,错误代... 查看详情

爬虫第三章模拟登录(代码片段)

...别验证码-验证码往往是作为登录中发送的请求参数进行使用的验证码识别:借助于一些线上打码平台(超级鹰,云打码,打码兔)超级鹰的使用流程:-注册:注册一个<用户中心>身份的账号-登录:基于<用户中心>进行登录-点击软... 查看详情

怎样用php中的curl模拟登陆

在我的博客《PHP cURL模拟登录与采集分析过程详解》做了详细的介绍,步骤有:1. 访问目标网站2. 打开Firebug(快捷键:F12)3. 清除【Cookie】4. 重新访问目标网站5. 设置【网络】为[保持]状态6. 填写表单,提交登录请求7. 利... 查看详情

使用 cURL 注销应用程序

】使用cURL注销应用程序【英文标题】:LogoutofappwithcURL【发布时间】:2014-09-2318:07:12【问题描述】:我们有一个使用RubyonRails构建的Web应用程序,它使用Devise进行登录和注销。我负责使用cURL的后端XMLAPI。用户可以在命令提示符下... 查看详情

使用snoopy进行模拟登陆采集

 Snoopy是一个使用PHP写的采集类,使用了一下发现功能比较强大,几乎可以模拟浏览器的所有行为,可以实现的功能有:比起使用curl,fsockopen等函数来说方便很多,下面总结一下这个类一些属性与方法的作用。方法:  &... 查看详情

使用snoopy进行模拟登陆采集

  Snoopy是一个使用PHP写的采集类,使用了一下发现功能比较强大,几乎可以模拟浏览器的所有行为,可以实现的功能有:比起使用curl,fsockopen等函数来说方便很多,下面总结一下这个类一些属性与方法的作用。方法: &... 查看详情

Process.Start 使用 ServiceUser 凭据进行模拟/在 ServiceUser 的上下文中运行代码(没有机器的登录权限)

】Process.Start使用ServiceUser凭据进行模拟/在ServiceUser的上下文中运行代码(没有机器的登录权限)【英文标题】:Process.StartimpersonationwithServiceUsercredentials/runcodeinthecontextofaServiceUser(withoutloginpermissionstothemachine)【发布时间】:2020-09-1... 查看详情

python使用requests模块,如何模拟进行登录并执行之后的操作?

一个简单的例子,我要先登录百度知道,然后进行今天的签到.因为签到必须前必须登录.分解一下就是两个问题,session保持和cookie.以下实例是一个完整的代码,实现了从博客获取内容发布至百度,分别实践抓取博客内容、模拟登录... 查看详情

pythonrequest库模拟登录

参考技术A1.读取本地用户文件,或者账号名和密码2.使用md5对用户密码进行加密3.获取session的临时随机串及sessionid4.对随机串及用户密码进行二次md5加密生成新的请求秘钥串5.传递用户名、新的秘钥串及sessionid模拟用户登录 查看详情

如何利用curl向网页提交数据

参考技术APHPcURL提交数据,可以参考我的博客《PHPcURL应用》http://www.zjmainstay.cn/php-curl上面基本覆盖所有的PHPcURL使用示例。模拟登录和模拟发帖,从原理上来说,都只是对一个urlpost必需的数据,达到类似真实用户请求的效果。 查看详情

尝试使用 Curl 登录网站

】尝试使用Curl登录网站【英文标题】:TryingtologgingintoawebsiteusingCurl【发布时间】:2011-12-1309:04:55【问题描述】:我是curl的新手,已经尝试了很多教程。我所做的最后一次尝试是使用以下代码:<?php//INITCURL$url="";functionlogin($url)$... 查看详情