填写教学评价

最后更新时间: 2018-02-27 | 作者: AberSheeran | 捐助

我校操蛋的教学评价,需要进行三位数的键盘和鼠标交替操作,还必须要填。写了一个脚本,此篇以作记录。如有校友看到,亦可在我的Github上找到代码,直接使用。

分析页面

在我爬取学校页面的时候就已经感觉到了,学校对用户行为没有丝毫的限制。也就是说,只需要登陆了,我们就可以嘿嘿嘿了。

打开教学评价页面,依旧是学校用jQuery's ajax做的发送数据。(感觉开发教务系统的人,技能點也就权限控制高一些了)

登陆之后,首先一发Bs4来获取所有教学评价页面。

1
2
3
4
5
6
7
def get_links(self):
    """获取教学评价页面每一个link"""
    result_list = []
    page = BeautifulSoup(self.get_page("http://jwgl.ahnu.edu.cn/jxpj/xsjxpj"), "html.parser")
    for each_tag in page.find_all("a"):
        result_list.append("http://jwgl.ahnu.edu.cn" + each_tag['href'])
    return result_list

然后每一个页面都按照给定的列表进行拼接数据。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def deal_teaching_evaluation_page(self, page_url):
    """处理单个教学评价页面"""
    post_data = {}  # 将发送的信息
    page = BeautifulSoup(self.get_page(page_url), "html.parser")
    # 这里不能改,教务系统写死的
    for each_input in page.find_all("input", type="hidden"):
        post_data[each_input["name"]] = each_input["value"]
    # 打分部分,可以自行下调
    for each_input in page.find_all("input", class_="number"):
        post_data[each_input["name"]] = each_input["max"]
    # 评语部分,随便改
    post_data["PJXX"] = "上课生动有趣,深入浅出,我很喜欢!"
    self.cache.post(
        "http://jwgl.ahnu.edu.cn/jxpj/xsjxpj/saveinfo?action=ok",
        headers=self.headers,
        data=post_data,
    )

打分部分我全部是按照它给定的最高值来取的,如果想给低一点,也可以先取到最大值each_input["max"],然后随机数什么的一发入魂。

评语部分,随便写,反正SQL注入是不可能的。我校教务系统防御力异常的强,除了比较丑的页面,令人发指的并发处理和全是拼音首字母缩写的变量以外,基本没什么缺点了。

标签: Python
收录于#校园时光