月度归档:2018年08月

如何为新版的「四川大学综合教务系统」增加「一键评教」功能

【2020 年 4 月 8 日更新】这是一篇我在 2018 年 8 月写的博文,讲述了如何快速评教的技术细节。但我发现很多人从百度而来,只是为了找一个快速评教的方法的,不太想看实现的技术细节……如果您有这样的需求,我已经制作了一个脚本叫做 「四川大学综合教务系统助手」,一直在稳定更新,从旧版教务系统一路适配到新版教务系统的最新版本,其中有一个功能就是快速评教。您可以点这里使用:https://zhaoji.wang/sichuan-university-urp-assistant/


8 月 27 日无疑是个伟大的日子,在 110 年前的这一天,晚清政府颁布钦定宪法大纲,标志着中国第一部真正意义上的宪法诞生。如果把时间继续向前推移,我们会发现,凯撒在这一天登陆英格兰;而如果把时间继续向后推移,我们会发现,摩尔多瓦在这一天脱离苏联独立,甚至在 2004 年的这一天的雅典奥林匹克体育场上,刘翔跑出了 12 秒 91 平世界纪录的佳绩勇夺金牌……

但是,这些事情对我而言,都不如 2018 年 8 月 27 日发生的事情令人振奋——「四川大学综合教务系统」终于更新了。

我是在江安寝室里的一号坑上得知这个消息的,随后我便意识到了一个严重的问题,我先前写的四川大学综合教务助手失效了!老系统都没了,皮之不存,毛将焉附?一个现实的问题摆在了我面前,是补作业还是重构这个程序?在收到下面这封邮件后,我决定补完重要的作业后就把这个程序重构一下。

现在程序已经重构完成,有需要的同学可以点击这里安装使用。

下面我将记述一下重构过程中的一些要点,基本原理和之前旧系统一键评教那篇文章中所讲的类似,所以一些旧文中提过的内容将不再详述。

继续阅读 →

[译] 如何检测 Chrome Headless(无头浏览器)?

原文链接:https://antoinevastel.com/bot%20detection/2017/08/05/detect-chrome-headless.html

原文标题:Detecting Chrome Headless

原文作者:Antoine Vastel

译者注:自从 Chrome Headless 发布后,各种基于 Chrome Headless 的自动化测试工具、爬虫等项目层出不穷。比起已经停止更新且容易被针对的 PhantomJS、Selenium 等经典自动化测试程序,Chrome Headless 几乎是完美的。然而,比起 Chrome 的普通模式,Chrome Headless 仍然有一些细微的差别,使其会被抓住小辫子……

编者注:我创建了一个库,可以使用浏览器指纹来检测识别机器人与爬虫。虽然这个库仍在开发中,但您已经可以开始使用它了。Github 地址为:https://github.com/antoinevastel/fpscanner

什么是无头浏览器(headless browser)?

无头浏览器就是一种没有图形用户界面的浏览器。它可以被程序控制,从而自动执行某些任务,例如进行网页自动化测试或网页截图。

为什么要检测无头浏览器?

除了上文提到的那两个人畜无害的例子,无头浏览器还可用于自动执行一些恶意的任务。例如,无头浏览器经常被用于网页爬取,增加广告展示次数或寻找网站漏洞中。

到目前为止,最受欢迎的无头浏览器之一是 PhantomJS。不过,因为它是基于 Qt 框架构建的,所以与大多数流行的浏览器相比,它在许多地方都有所不同。正如这篇文章所述,我们可以使用一些基于浏览器指纹的识别技术来检测它。

在 Chrome 59 之后,Google 发布了 Chrome 浏览器的 Headless 版本。与 PhantomJS 不同,它基于普通的 Chrome 而不是外部框架,这使得它更难被检测出来。

接下来,我们将介绍几种可用于区分普通 Chrome 浏览器和 Chrome Headless 的技术。

继续阅读 →