使用CURL进行模拟登录
在信息采集的时候,要采集的站点可能需要登录,这样使用简单的采集方式(例如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; //输出登录结果
- /*
- *如果输出的结果是Json格式则用下面方法得到所需内容
- *$obj = json_decode($content);
- *print_r($obj->{'所需内容'}) ;
- */
- /*
- //---------登录成功后再次请求其他地址,如果有多个可以循环执行---------
- 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;
使用CURL进行模拟登录的更多相关文章
- PHP cURL实现模拟登录与采集使用方法详解教程
来源:http://www.zjmainstay.cn/php-curl 本文将通过案例,整合浏览器工具与PHP程序,教你如何让数据 唾手可得 . 对于做过数据采集的人来说,cURL一定不会陌生.虽然 ...
- php中CURL实现模拟登录并采集数据
在php中采集我们用的是简单的采集方式(例如file_get_contents)就无法做到了,但是如果想模拟登录用户并采集利用它就没办法了,我们可利用CURL函数来实现模拟登录并采集数据 这里要说一些 ...
- curl怎么模拟登录进行采集
前几天公司需要模拟登录,从网上找了一下代码,结合谷歌浏览器,进行模拟账号密码进行登录 用谷歌浏览器进行抓包操作,获得登录用参数, 下面上干货: <?php /** * 主要获取登录成功的cook ...
- php使用CURL进行模拟登录采集数据
<?php $cookie_path = './'; //设置cookie保存路径 //-----登录要提交的表单数据--------------- $vars['username'] = '张 ...
- CURL的模拟登录和抓取页面
<?php $curl = curl_init();// 初始化 // 准备提交的表单数据之账号和密码.(这个是根据表单选项来的) $data = "_username=6049892 ...
- 模拟登录神器之PHP基于cURL实现自动模拟登录类
一.构思 从Firefox浏览器拷贝cURL命令(初始页.提交.提交后) 自动分析curl形成模拟登录代码 默认参数:ssl/302/gzip 二.实现 接口 (一)根据curl信息执行并解析结果 p ...
- PHP cURL应用实现模拟登录与采集使用方法详解
对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...
- PHP简单模拟登录功能实例分享
1.curl实现模拟登录的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话) <?php $cookie_jar = tempnam('./tmp','cookie ...
- PHP cURL 使用cookie 模拟登录
cURL是什么 cURL: http://php.net/manual/zh/book.curl.php PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务 ...
随机推荐
- webpack 常用命令
1 初始化package.json npm init -y 2 全局安装webpack npm install webpack -g 3 安装webpack依赖 npm install webpack ...
- ATM Mechine (概率DP)
题意:去银行取最多K钱,想要全部取完,但是有个限制就是如果你输入取钱的额度超过了你已有的钱,那么会接受一次警告并无法取钱,然后求最多不超过w次警告的前提下你取完所有钱所需要的最少次数. 思路:概率DP ...
- Java 实现异步调用
首先 我遇到的问题是 接口调用时需要更新缓存 而更新缓存又是个说快不快的过程 所以打算做异步调用 返回我所需要的结果即可 ,至于缓存什么时候更新完 就不是我所需要关注的了 废话不多说 上代码 publ ...
- eclipse之常用快捷键
开发常用: 清理浏览器缓存:ctrl+shift+delete 切换窗口:alt+tab 同一个浏览器切换窗口:ctrl+shift+tab 刷新页面:ctrl+F5 前端调试debug: debug ...
- MySQL插入去重命令_INSERT IGNORE INTO
之前在介绍INSERT INTO命令时,曾经提到,该命令在执行数据插入操作时,会在数据库中对元组的主键进行检测,若没有存在,则执行插入动作,若存在,则会报错. 而INSERT IGNORE INTO命 ...
- 5、Kafka生产过程分析
1.写入方式 producer采用推(push)模式将消息发布到broker, 每条消息都被追加(append)到分区(patition)中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障kaf ...
- 值得收藏:一份非常完整的 MySQL 规范
一.数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割. 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来). 数据库对象的命名要能 ...
- bzoj1133: [POI2009]Kon
bzoj1133: [POI2009]Kon 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1133 思路 f[i][k]表示前i个,选了k个 ...
- 浅谈 cosos2d-x 的ImageView和Sprite的区别
ImageView 1. ImageView是继承于Widget的,是cocos2d-x的基类 2. 实现了类似于按钮监听的事件,通过addTouchEventListener添加事件 var ima ...
- Sublime text3修改tab键为缩进为四个空格
1.打开设置界面 2.设置属性 , "translate_tabs_to_spaces": true, "expand_tabs_on_save": true ...