php模拟登陆青果教务系统

注:本篇文章原先放在旧服务器blog.summerpro.cn上,由于服务器停用,现将文章放在这里,欢迎大家阅读以及批评指正。

这是博主去年暑假的时候搞过的,当时是想要做微信公众号上的查成绩功能,由于学习方式不太合理,一开始就没完全搞清楚session的问题,走了很多弯路,花了不少时间,今天趁十一国庆不想复习的空子把它写到博客上与大家分享一下~

读这篇博客之前希望大家能够先了解下面几个小知识,这样对做网络爬虫分析大有好处,而且可以少走很多弯路:

1、http协议,这个是基本的知识点,网上资料很多,需要大家了解http的请求头与响应头的内容所代表的含义以及功能,还有是在一次通过浏览器访问网页的过程中,对其内部工作过程有一个清晰的认识,我这里就简单用文字描述一下,当用户打开浏览器,输入一个网址并回车的时候,浏览器先是通过域名服务器获得该网址的ip,然后向目标ip发出请求信息,请求方式最常用的就是post以及get方式,里面包含浏览器类型,编码方式,cookie以及表单信息等等,目标服务器收到后,由Apache,IIS,nginx等服务器软件进行处理,如果请求目标页面是静态的,那么服务器会直接将响应页面加上响应头发送回客户端,如果是动态的,服务器会先将目标页面通过php,java等后端程序运行,将运行结果作为响应内容发送回客户端。

2、session的工作机制,,session保存于服务器,是用来区分不同用户的,同时还可以保存一些用户的信息,一般在一次会话中用户第一次访问时,服务器会生成一个session的id与该用户对应,然后将这个id以cookie的形式发回到客户端(如果是web,那客户端就是浏览器),之后用户在一次会话过程中对该网站的每次点击都会以cookie的形式带着这个session id,以表示这是哪个用户,例如是在有用户登录的网站中session的作用非常明显,用户登录后的进一步访问,服务器端需要判断是哪个用户,就需要用session来验明身份,这里分享一个网友写的文章链接http://justsee.iteye.com/blog/1570652关于session的工作机制写的非常生动!

3、然后大家需要了解搞模拟登陆的基本套路,本质来讲,模拟登陆就是通过机器模仿用户使用浏览器访问网页的行为从而实现自动处理的能力,从理论上来讲,只要是能够在网页上看到的东西,模拟登陆都可以得到,甚至用户看不到的东西,通过合理分析,我们也可以通过程序获取到。所以,我们的套路本质就是把整个通过浏览器访问的过程用程序模拟出来,由于是模拟登陆,一般都会用到cookie和session,我们第一步是先访问该网站的首页或者登陆页面甚至是随意一个页面都可以,这个时候服务器端会生成一个session,然后以cookie的形式返回给我们,我们得到这个session,就相当于拥有了这个网站的会员卡,然后我们带上这个会员卡,再加上登陆信息(比如用户名,密码,验证码之类)以表单的形式发给登陆处理的后台页面,验证通过后,服务器会在这个session对象中标记登陆成功之类的(这属于是网站开发者自己用程序实现的而不是服务器自动实现),之后我们就可以带着这个会员卡去访问登陆后的其他页面了,这个是基本的套路,当然具体情况要具体分析,有反爬虫策略的网站会有很多检验机制阻止我们去模拟这个过程,其实就是通过增加登录过程的复杂性来达到目的的,例如增加验证页面,加密数据,验证http的头文件是否正常。

4、第四条比较容易,需要大家知道如何使用浏览器中的F12键,也叫开发者模式,这是浏览器自带的抓包工具,我比较推荐火狐和Google浏览器,当然也可以用fiddler之类的专门的抓包软件。我常用火狐的开发者模式,里面除了可以进行抓包,还可以进行前端代码的断点调试,界面设计辅助等非常方便的功能,具体的我就不写了,太多了,大家可以去查一下教程。

5、最后呢,需要大家知道php进行模拟登陆时候用到的接口,我后面都是用php自带的curl来写的。下面我就给几个常用函数。

$ch = curl_init();  //初始化
 curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/phpinfo.php");  //设置访问地址
 curl_setopt($ch, CURLOPT_HEADER, false);  //false代表响应内容中不显示头信息
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接输出响应信息  
 $result=curl_exec($ch);  //开始执行,响应内容以字符串的形式赋值到$result中
 curl_close($ch);  //结束


下面我们就开始分析了!

1、拿我们学校的教务系统作例子,我在访问网站首页http://210.42.72.73:888/jwweb/的时候进行抓包,下面这是第一个页面的信息,可以看到请求头开始还没有cookie,响应头将session的id以cookie的形式送了回来,而我们要的就是这个session。


  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值