微信订阅号,能否同时绑定学校内的教务系统和图书馆的系统,既能查青果教务 课程表api,又能查借阅书籍,

curl怎么模拟登录教务系统,并实现微信的查课表、查成绩功能?
大体知道用curl模拟登陆,解析网页,用php代码放bae或sae,具体的不太了解、
最近刚好在开发微信公众平台,研究了一下模拟登陆教学管理系统查课表的功能,其实cURL模拟登陆的原理很简单,不过你得具备PHP和正则表达式的基本知识。cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。在PHP中建立cURL请求的基本步骤:1.初始化2.设置变量3.执行并获取结果4.释放cURL句柄首先登录教学管理系统,我们学校用的是正方教学管理系统,而且不需要验证码。很多学校用的都是这套系统,开发这套系统的人最热衷于做登陆界面,一口气做了5个,这是得有多闲啊。其中的default3.aspx就一个登陆框,我们选择它作为模拟登陆的入口。查看源代码找到登陆需要提交的参数,当然用httpwatch抓包分析更好,现在这台电脑上没安装所以就不截图了。VIEWSTATE这个参数我也不知道是干嘛的,好像是aspx用来验证的,后面进入教务系统后每一次点击都要提交一次这个参数,而且点击后的这个参数很长,有时候根本提交不过去,这个问题暂时还没解决。一般来说登陆提交这三个参数就行了。这是在网上找的正则表达式,将表格转换成数组,非常方便,写成一个函数,可以拿去用在很多地方。function get_td_array($table) {
$table = preg_replace("'&table[^&]*?&'si","",$table);
$table = preg_replace("'&tr[^&]*?&'si","",$table);
$table = preg_replace("'&td[^&]*?&'si","",$table);
$table = str_replace("&/tr&","{tr}",$table);
$table = str_replace("&/td&","{td}",$table);
//去掉 HTML 标记
$table = preg_replace("'&[/!]*?[^&&]*?&'si","",$table);
//去掉空白字符
$table = preg_replace("'([rn])[s]+'","",$table);
$table = preg_replace('/&/',"",$table);
$table = str_replace(" ","",$table);
$table = str_replace(" ","",$table);
$table = explode('{tr}', $table);
array_pop($table);
foreach ($table as $key=&$tr) {
$td = explode('{td}', $tr);
array_pop($td);
$td_array[] = $
return $td_
具体代码如下:&?php
$username='';//账号
$password='123456';//密码
$cookie_file =tempnam('./temp','cookie');
//创建临时文件保存cookie
$login_url = 'http://192.168.17.42/(0t3a2k454z1yey55nczj5x55)/default3.aspx';//登陆地址
$post_fields = '__VIEWSTATE=dDwtMTk3MjM2MzU0MDs7Po+Vuw2g98nkvMhqN2OzPbC6DnbA&TextBox1='.$username.'&TextBox2='.$password;//POST参数
$ch = curl_init($login_url);//初始化
curl_setopt($ch, CURLOPT_HEADER, 0);//0显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//1不显示
curl_setopt($ch, CURLOPT_POST, 1);//POST数据
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//保存cookie
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);//加上POST变量
curl_exec($ch);
curl_close($ch);
//跳转到课表页面,原理同上
$url='http://192.168.17.42/(0t3a2k454z1yey55nczj5x55)/tjkbcx.aspx?xh='.$username;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);//执行并获取HTML文档内容
iconv('GB2312', 'UTF-8', $contents);//编码转换
preg_match_all('/&table id="Table6" [^&]*&([\s\S]*?)&\/table&/',$contents,$table);//用正则表达式将课表的表格取出
$arr = get_td_array($table[0][0]);//执行函数
//按星期天数将课表保存到二维数组里
for ($d=1;$d&=7;$d++){
$shuzu[$d][1]=$arr[1][$d];
$shuzu[$d][2]=$arr[2][$d+1];
$shuzu[$d][3]=$arr[3][$d];
$shuzu[$d][4]=$arr[4][$d];
$shuzu[$d][5]=$arr[5][$d];
$shuzu[$d][6]=$arr[6][$d];
$shuzu[$d][7]=$arr[7][$d];
$shuzu[$d][8]=$arr[8][$d];
$shuzu[$d][9]=$arr[9][$d];
$shuzu[$d][10]=$arr[10][$d];
$shuzu[$d][11]=$arr[11][$d];
$shuzu[$d][12]=$arr[12][$d];
$shuzu[$d][13]=$arr[13][$d];
$shuzu[$d][14]=$arr[14][$d];
$shuzu[$d][15]=$arr[15][$d];
$xq=date('w');//取出星期几
//根据星期几打印课表
if($shuzu[$xq]==null){
echo "你今天没有课哦!";
print_r($shuzu[$xq]);
curl_close($ch);//释放curl句柄
基本原理就是这样了,其实并不算复杂,最终的结果如图:如果要用在微信公众平台里查询,基本思路是这样的,用户先绑定学号(username)和密码(password),保存到数据库中,然后用户查询的时候根据微信uid取出学号和密码,模拟登陆到教学管理系统,将课表提取出来,然后需要再用正则表达式将这个数组提取出来,保存到变量里,返回给用户就行了,具体原理请参考微信的消息发送机制。查成绩原理一样。
可以参考我写的博客
一只优雅的正方教务系统爬虫解决你的烦恼。
我的也是object move to here
那个情况,你怎么解决的?
基本思路:获取验证码图片二进制编码存在本地并现实在页面上,同时获取验证码cookie,模拟登录是需要输入账号密码已经对应验证码,post时同时提交验证码的cookie
拿去好心看看就知道了~
你可以参考微笑微信,一个开源的系统,很多功能都是curl模拟,并且与微信有关!
我的是object move to here
已有帐号?
无法登录?
社交帐号登录【求教】微信公众号查课程表,对接教务系统要怎么弄?_微信公众号吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:288,356贴子:
【求教】微信公众号查课程表,对接教务系统要怎么弄?
本人菜鸟不懂这些东西,但是想把自己部门的公众号建设更加好,比如可以查课程表、成绩、还有微博树洞之类的,这样能吸引更多的同学关注。所以想请教会的大神,要怎么弄?谢谢谢谢谢谢谢谢
随后会放制作过程
此帖对国内两位新生代男...
一年一届的中国金鸡百花...
@丨周慧敏丨 大声告诉...
【ID】腐海无涯不回头 ...
万众期待的第33届大众百...
  日,乔...
其实我觉得学历也就只有...
先总结: 上世纪九十年代...
最近微微一笑很倾城出来...
据说还要打遍全中国的初...
贯彻一贯拆开了、嚼烂了...
可以找人做。或者自己学
贴吧热议榜
使用签名档&&
保存至快速回贴咱学校有没有查各个学院课程表的软件或者是微信订阅号呀?_济南大学吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
咱学校有没有查各个学院课程表的软件或者是微信订阅号呀?收藏
想蹭经济学院的课
杜杜补习班开学啦
求助万能的吧友,顶起来
超级课程表
特别好用的
我的积分稳稳的居于第一位
网上教管就可以
露出一抹沁人的笑意那太霸道了
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或微信订阅号里面的防伪查询怎么做的系统呢_百度知道

我要回帖

更多关于 北航图书馆 校内入口 的文章

 

随机推荐