浅谈方正教务模拟登录实现
2017-03-17 12:50
176 查看
浅淡方正教务系统模拟登陆
很多论坛上发布着模拟登陆方正教务系统的文章,随着方正系统的逐步升级,此前代码都已无法实现,笔者摸索登录教务系统,现将模拟登陆中发现的问题一一罗列。模拟登陆通常使用CURL进行模拟登陆操作。以下针对西安工程大学教务系统为例:首先登录教务系统,网址:http://202.200.206.54/(xcvzkfmkuq2rsufvo51hqmmj)/Default2.aspx。
我们很容易发现在Default2.aspx前有一段随机码(xcvzkfmkuq2rsufvo51hqmmj),此段随机码为后续模拟抓取成绩很有必要。我们通过抓包发现
有以下POST值:
__VIEWSTATE=dDwtMTAzMzQxODQxNTs7Pk6e4%2FuBwXYRApNU4idr2h4qa%2FUF&txtUserName=********&TextBox2=********&txtSecretCode=w72u&RadioButtonList1=%D1%A7%C9%FA&Button1=&lbLanguage=&hidPdrs=&hidsc=
__VIEWSTATE=隐藏字符串,可以通过正则表达式抓取;
txtUserName:学号;
TextBox2:密码;
txtSecretCode:验证码;
RadioButtonList1:选择学生;
剩下几个值为空;
利用面向对象思想写的登录块:
Public function login($num,$pw,$check)
{
$login_url='http://202.200.206.54/(xcvzkfmkuq2rsufvo51hqmmj)/Default2.aspx';
$post_fields='__VIEWSTATE=dDwtMTAzMzQxODQxNTs7Pk6e4%2FuBwXYRApNU4idr2h4qa%2FUF&txtUserName='.$this->num.'&TextBox2='.$this->pw.'&txtSecretCode='.$this->check.'&RadioButtonList1=%D1%A7%C9%FA&Button1=&lbLanguage=&hidPdrs=&hidsc=';
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//0显示,1不显示。也可echo
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, false);
curl_exec($ch);
curl_close($ch);
}
此处应该能够登录成功;抓取成绩的时候,要保证网址中含有(xcvzkfmkuq2rsufvo51hqmmj),否则抓取其他页面将无法抓取;在获取成绩时,post值中viewstates的个别字符已经在提交时被替换,笔者对比相应代码后发现以下替换规则,+替换成%2B,/替换成%2f;
$this->viewstates=str_replace("+","%2B",$this->viewstates);
$this->viewstates=str_replace("/","%2f",$this->viewstates);
如果不经替换页面会显示“系统正忙”。
以上就是笔者在模拟登陆教务系统抓取成绩遇到的几点问题和解决措施。
欢迎访问笔者的网站:www.goyc.cn www.i-xp.cn
相关文章推荐
- php实现模拟登陆方正教务系统抓取课表
- 用phpcurl实现模拟登录带验证码urp教务系统获取成绩
- Java实现从正方教务系统抓取数据(一)--模拟登录
- Android平台利用OkHttp3模拟登录实现教务平台
- 模拟实现登录窗口(Swing版本)
- (转)三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- c# winform实现网页上用户自动登陆,模拟网站登录
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- C#三种模拟自动登录和提交POST信息的实现方法
- 模拟实现本站登录窗口(AWT版本)
- PostHttpPage用asp是实现模拟登录效果的代码
- C#三种模拟自动登录和提交POST信息的实现方法