导航
  • 全部
...

模拟登陆正方教务系统,重定向一直解决不了〉。。

xiaoxiashou 2015-02-14 01:37:37
  1. <?php
  2. $login_url='http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx';

  3. $user='11480010126';
  4. $password='tianyun';
  5. $RadioButtonList1='学生';
  6. $__VIEWSTATE='dDw1MjQ2ODMxNzY7Oz5PMj6WMeVIzgWyGp6TS4sLvnQtaA==';


  7. $cookie_file = tempnam('./temp','cookie');
  8. $login_url = 'http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx';
  9. $post_fields = array($user,$password,$RadioButtonList1,$__VIEWSTATE);//传入参数
  10. $ch = curl_init($login_url);
  11. curl_setopt($ch, CURLOPT_HEADER, 0);//显示头部
  12. curl_setopt($ch, CURLOPT_POST, 1);//post传递
  13. $header[]='User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36';
  14. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//模拟客户端
  15. curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);//显示页面
  16. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);//post传递值
  17. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//存入cookie
  18. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//允许重定向

  19. curl_exec($ch);
  20. curl_close($ch);



  21. $url='http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/xs_main.aspx?xh='.$user;
  22. $ch = curl_init($url);
  23. curl_setopt($ch, CURLOPT_HEADER, 0);
  24. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  25. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  26. curl_setopt($ch, CURLOPT_POST, 1);
  27. $header[]='Referer:http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx';
  28. $header[]='User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36';
  29. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  30. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);//读取cookie
  31. echo $contents;
  32. $contents = curl_exec($ch);
  33. curl_close($ch);



  34. ?>
...全文
给本帖投票
643 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32359261 2017-08-05
  • 打赏
  • 举报
回复
直接可以在header里面拿到 我用requests可以直接获取到重定向的url
doyouloveRaven 2016-02-02
  • 打赏
  • 举报
回复
我们学校也是这玩意== 但我用python写的时候怎么获取那个Location呢,谢谢 手动@二楼 @四楼
LB228988 2015-03-02
  • 打赏
  • 举报
回复
2楼已经分析的很正确,我只作解释!
当输入网址http://jwxt.nbut.cn,服务端会重定向到一个网页,也就是在http://jwxt.nbut.cn后加上/随机串/default_ysdx.aspx,这个随机串存储到服务端的。所以你写死就是不正确的。
首先请求网址http://jwxt.nbut.cn。获取响应头中的Location,如图:


然后拼接你的url,再次访问http://jwxt.nbut.cn/Location/default_ysdx.aspx网址。这是一点。
2:查看源代码
提交的参数是关联数组,并非下表数组。
截部分图:




上面完成了!你就登录成功了。
Smile_Couson 2015-02-19
  • 打赏
  • 举报
回复
很多大学都用正方教务系统么?我们学校也是哎
xuzuning 2015-02-14
  • 打赏
  • 举报
回复
返回 <script language='javascript'>alert('密码错误!!');</script> 这个网站没有使用 cookie 传递 sessionid 而是通过 url 传递的 所以你把这个写死是不行的: http://jwxt.nbut.cn/(gnqj51blynlz1k45ufftjgux)/default_ysdx.aspx 而是应这样写
$url = 'http://jwxt.nbut.cn';
$u = get_headers($url, 1);
$login_url = 'http://jwxt.nbut.cn' . dirname($u['Location']) . '/default_ysdx.aspx';
另外提交的参数应是关联数组,而非下标数组
$post_fields = array(
  'TextBox1' => $user = '11480010126',
  'TextBox2' => 'tianyun',
  'RadioButtonList1' => '学生',
  '__VIEWSTATE' => 'dDw1MjQ2ODMxNzY7Oz5PMj6WMeVIzgWyGp6TS4sLvnQtaA==',
  "Button1" => "  登录  ",
);
注意:要使用 gbk 编码的 所以并不是重定向的问题,而是你根本就没有登录上去 用于现在返回的是 密码错误,所以无法再观察第二段 curl 的情况了
「已注销」 2015-02-14
  • 打赏
  • 举报
回复
在线等,拜托各位

21,894

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部