欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

使用 模拟登陆 抓取学校系统的晨跑数据,失败了,请问大神

程序员文章站 2024-02-03 16:15:46
...
使用 模拟登陆 抓取学校系统的晨跑数据,失败了,请教大神
最近在学习php的模拟登陆,就想拿学校的体育教学系统实践一下,但失败了。请教大神,我的代码到底错在了哪?

【一些信息】
登录系统的地址:http://210.35.75.247:8080/student/studentFrame.jsp
(用户名:1101001,密码:1101001,角色:学生)
查晨跑的地址:http://210.35.75.247:8080/student/queryCheckInfo.jsp

【代码如下】
$cookie_file = tempnam('./temp','cookie');
$login_url = 'http://210.35.75.247:8080/student/studentFrame.jsp';
$post_fields = 'userName=1101001&passwd=1101001';

$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($ch);
curl_close($ch);

$url = 'http://210.35.75.247:8080/student/queryCheckInfo.jsp';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_exec($ch);
curl_close($ch);
?>


【第一次发帖,拜谢!】
------解决方案--------------------
别客气我也只是菜鸟,一起研究学习下
首先声明几个名词...
框架页 student/studentFrame.jsp 表单提交的action地址
学生信息页 student/studentInfo.jsp 是框架页的iframe自动加载的src
晨跑成绩 student/queryCheckInfo.jsp
用firebug跟踪了一下登陆流程,发现框架页的iframe加载的学生信息后面带了参数?username=...&passwd=....,猜测真正的登陆流程应该在学生信息页。我把登陆失败的页面不echo保存在文件中看了下,框架页的html和登陆成功几乎相同,只是多了一段跳转js。利用学生信息页的JSESSIONID登陆成功了,和框架页的对比下,不一样。蛋疼的管理系统使用 模拟登陆 抓取学校系统的晨跑数据,失败了,请问大神



$url1 = 'http://210.35.75.247:8080/student/studentInfo.jsp';
$url2 = 'http://210.35.75.247:8080/student/queryCheckInfo.jsp';
$name = '1101001';
$pw = '1101001';
$params = array(
'userName' => $name,
'passwd' => $pw,
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url1 . '?' . http_build_query($params));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$con = curl_exec($ch);

preg_match('/Set-Cookie: (.*);/Us', $con, $match);
$cookie = $match[1];

curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
$con = curl_exec($ch);
curl_close($ch);

echo $con;

使用 模拟登陆 抓取学校系统的晨跑数据,失败了,请问大神

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频