如果想书写一个爬虫,首先应该通过浏览器将你登陆时,本地与服务器之间的信息传递通过抓包的方式获得,然后通过编程语言去模拟这种信息传递。
首先在浏览器上登陆正方教务系统,用Fiddler进行抓包,
发现我们点击登陆首页时,首先向
这个网址发送请求
但它的状态值时302,指这是个重定向请求,在向这个连接发送请求后,会由js随机生成一串字符,然后加到上面的url中
实际上我们是像
这个网址发送登陆请求,这个网址返回的才是登陆界面
上图中我们可以看到Request URL中附加了一个字段,这个字段是随即的,经过测试,得出正方系统有两种登陆方式,一种是通过cookie来确认用户,另一种是通过随即字符串的形式,现在我们校网所使用的是随机字符串的形式。在第一次向default2.aspx 进行post提交时,可能是通过js产生了随即字符串并被附着在url中,验证通过之后会被重定向到xs_main.aspx页面,访问此页面通过的是get方式。
在这个请求后,系统还会向
发送验证码请求,这个请求返回的是验证码图片,网上说屏蔽这个请求就可以登陆,但我们学校的网站好像不行,不输入验证码每次登陆返回的是登陆界面,所以要在php上把验证码获取,并附在post请求上模拟登陆提交到登陆的url
还有两个隐藏的input输入框
就是说登陆的时候,必须把这两个值加在post请求中,否则也是无法登陆的,这两个值也是js随机生成的,所以也需要php获取后加在post请求中。
首先是获取验证码和su并提交
getsecertcode.php
<?php
function curl_request($url, $post = '', $referer = '')
{//$cookie='', $returnCookie=0,
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, &