在做采集程序时,有时我们要抓取一些登录才能访问的页面。但是有时即使我们登录成功了,却还是无法抓取相关页面,这是为什么呢?
嗯,最有可能的原因是没把登录成功后的 cookie 一并传递过去。
对于一些安全防范措施不是做得很高的网站,我们可以通过 PHP 的函数 curl_setopt 来登录的。
<?php
//在指定目录中建立一个具有唯一文件名的文件。如果该目录不存在,tempnam() 会在系统临时目录中生成一个文件,并返回其文件名。
$cookie_file = tempnam('./tmp','cookie');//其中 cookie 为文件名的前缀
$postfield = 'LoginForm[username]=admin&LoginForm[password]=admin&LoginForm[rememberMe]=0&yt0=Login';
$url = "http://localhost/testdrive/index.php?r=site/login";//登录 提交的 url,可以通过 firfox 的 firebug 工具或者 google chrome 的开发人员工具来查看
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//保存 cookie 的文件
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfield);
$strlen = curl_exec($ch);
$url = "http://localhost/testdrive/index.php";//访问登录后的页面。
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//再次发送请求时,cookie 就会自动传递过去
$strlen = curl_exec($ch);
?>
原文链接:http://woqilin.blogspot.com/2012/11/curl.html
相关推荐
【PHP与CURL模拟登录及数据获取】 在Web开发中,有时我们需要模拟用户登录到某个网站,以便自动化处理一些任务或获取受保护的数据。在这个PHP100视频教程88中,我们将深入学习如何利用PHP的cURL库来实现这个功能。...
总的来说,通过理解RSA加密原理,掌握PHP和cURL库的使用,我们可以编写出能够模拟登录并处理RSA加密的脚本。这是一个涉及网络通信、加密技术、Web编程的综合实践,对于提升开发者的技术能力具有重要意义。
cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国...
在使用 curl 模拟登陆 163 邮箱时,需要获取登陆结果信息,以便判断登陆是否成功。如果登陆失败,需要获取失败原因信息,以便进行错误处理。 4. 获取 cookie 信息 在登陆成功后,需要获取 cookie 信息,以便使用该...
本篇将详细介绍如何使用PHP的cURL函数来获取数据、模拟登陆以及POST数据。 首先,我们来看一个基本的cURL函数示例,名为`curl_allinfo`,这个函数用于通过cURL处理各种HTTP请求: ```php public function curl_all...
3. **设置cURL选项**:使用cURL,我们需要设置适当的选项来模拟表单提交,例如设置POST字段、添加之前获取的cookie、设置请求头等。 4. **执行POST请求**:使用构造好的数据,向微博服务器发送POST请求,以完成登录...
在如今的网络世界中,模拟登陆论坛并进行数据采集是一项相当实用的技术。本文将详细解读如何使用PHP语言配合libcurl库通过CURL函数模拟登陆DZ(Discuz!)论坛,并且进行数据的采集。 首先,我们需要了解CURL是一个...
` 发送请求并获取响应。 7. **检查错误**:`curl_error($ch)` 检查是否有错误发生。 8. **关闭cURL**:`curl_close($ch);` 完成后记得关闭cURL资源。 对于注册和登录过程,通常分为以下几个步骤: 1. **发送...
2. 获取并保存cookies:登录成功后,服务器通常会返回一个或多个cookies,这些cookies用于识别已登录的用户。我们需要保存这些cookies,以便在后续请求中保持登录状态。 3. 使用保存的cookies进行后续操作:例如上传...
// 执行cURL会话并获取页面内容 $content = curl_exec($curl2); // 关闭cURL资源 curl_close($curl2); ``` 在这个例子中,我们首先初始化了一个cURL会话 `$curl`,设置登录页面的URL,并传递了用户名和密码作为...
以下是一个简单的cURL模拟登陆的示例代码: ```php function curl_request($url, $post = '', $cookie = '', $returnCookie = 0){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($...
在IT行业中,PHP和cURL库常常被用来处理网页数据抓取、API调用以及模拟浏览器行为,例如登录网站和获取网页内容。本教程将详细讲解如何使用PHP结合cURL来实现126邮箱的登录及好友邀请功能,同时解决可能出现的网络...
最近接了个项目,其中有需求是要登录带验证码的网站,获取数据,但是我们不可能人为的一直去记录数据,想通过自动采集的方式进行,下面小编给大家带来的相关代码,对php curl 模拟登录带验证码的网站感兴趣的朋友...
- `curl_getinfo()`: 获取cURL请求的元数据。 通过这种方式,你可以模拟登录并抓取需要权限访问的数据。但请注意,始终要遵守网站的使用条款和条件,不要进行非法的爬虫活动。 4. **其他cURL相关资源** - **...
提供的“模拟登陆源码”文件应包含登录逻辑的完整实现,包括登录接口调用、数据封装、验证码处理等。通过阅读和理解源码,我们可以深入学习如何在Java中实现这些功能,包括请求的发送、响应的解析以及异常处理等。 ...
88:PHP 之 CURL模拟登陆并获取数据 89:PHP XML 的 DOMDocument 读取功能 90:PHP DOM 创建生成多功能 XML文件 91:PHP修改和删除XML内容的原理和方法 92:在线支付接口之PHP支付宝接口开发 93:在线支付接口之PHP...
下面是一段简单的示例代码,展示了如何使用`cURL`模拟用户登录: ```php $ch = curl_init(); // 设置登录页面的URL curl_setopt($ch, CURLOPT_URL, "http://example.com/login"); // 表示这是一个POST请求 curl_...
- `curlRequest`函数封装了CURL请求,接收URL和数据作为参数,并支持Cookie文件的使用。 3. CURL的使用和配置: - PHP中的cURL是用于进行HTTP请求的工具,支持多种协议。 - 在代码中,设置了cURL的各种选项...