小广告:可以看一眼这个项目:SDU-webvpn-helper
对于使用新版本基于Chromium内核的浏览器(如Google Chrome, Microsoft Edge, Brave, Opera, Vivaldi等)上篡改猴(Tampermonkey)扩展的用户,启用开发者模式是根据Manifest V3更新引入的必要条件。
请参考Tampermonkey的官方文档,开启这个功能。Firefox不受影响(至少目前是这样)。
本脚本不再使用Fingerprint2
库(本来我以为前端页面使用了这个库是因为后端那边有校验,但实际上并没有,哪种哈希算法都能蒙混过关),而是直接使用了sha256哈希算法,经测试在广告拦截插件的情况下也能正常使用,并且确实可以正常登录(至少在目前是这样的)。
问题也有,就是这次更新之后,因为算法改变了,相同的指纹产生的哈希值也变了,所以之前那个版本里面绑定的指纹就失效了,需要重新绑定,让他信任新的指纹哈希值。算是一个 Breaking Change 吧。
顺便提一句,由于sha256算法是一个很常用的算法,这里绑定的指纹也能被其他的编程语言使用——只要你找到了或者实现了sha256算法,发送的请求就会完全一样。比如说,你可以使用Python的hashlib
库来实现这个功能。PySDU就是一个例子,二者可以使用同一个指纹而不需要重新绑定了!
让山东大学统一身份认证网站的登录更加方便!
在2023年,山东大学终于引入了2FA(双因素认证)机制,但是统一身份认证网站简直就是一个屎山,存在各种细节上的问题,使得这个安全性保障事实上是非常难以使用的。他存在以下几个问题:
- 设备检查基于浏览器指纹:也就是说,对于任何浏览器只要有浏览器内核更新或者一些参数变化,都会直接导致指纹改变,从而经常需要重新绑定;但是由于绑定设备上限是20个,还会影响之前已经绑定过的指纹,实际上就毫无“信任设备”的能力;
- 经常无法正常使用WebVPN和零信任访问:由于WebVPN和零信任访问会导致域名变化,从而导致
Fingerprint2
等库无法正常加载(可能受到 CORS 限制),从而无法登录; - 无法正常使用广告拦截插件:由于广告拦截插件会阻止一些跟踪脚本的加载,从而导致
Fingerprint2
库无法正常加载,也无法正常弹出输入验证码的对话框,从而无法登录。已经发现,Ublock Origin, AdGuard, Adblock Plus等插件都会导致这个问题;
此外,事实上这个网站还存在一些安全性的问题,比如加密算法使用的是DES,而经常被拉起的是HTTP而不是HTTPS的站点,这都很容易被中间人攻击而影响安全性。目前已经实现了重定向到HTTPS的功能。
脚本用于绕过 SDU 统一身份认证网站的设备检查,使得可以通过用户自己指定一个浏览器“指纹”来登录,从而让升级浏览器、更换设备或浏览器等操作变得更加方便——无需再次接受短信验证码了!
同时,由于使用WebVPN等网站,或者使用Ublock Origin等广告拦截插件,可能会使得在部分情况下,登录所需的Fingerprint2
库无法正常加载,导致无法登录。这个脚本也可以解决这个问题。
- 安装 Tampermonkey 或其他用户脚本管理器,并且按照其文档正确配置。
- 创建新脚本
- 将
main.js
中的内容复制到新脚本中 - 修改最上面的
YOUR_CUSTOM_DEVICE_FINGERPRINT
,作为你自定义的设备指纹 - 保存
- 建议不要将你的设备指纹分享给他人,也强烈建议不要使用默认的设备指纹
- 建议第一次在不使用WebVPN、广告拦截插件的情况下先使用这个脚本登录信息服务平台(最新的版本里面彻底删除了Fingerprint2的依赖,应该完全不受广告拦截的影响了),在登录过程中绑定设备指纹,然后就可以正常使用WebVPN、开启广告拦截插件或者更新浏览器,而不需要重新绑定了
- 如果你的设备指纹被更改,你需要重新绑定设备指纹
- 如果更换了设备和浏览器,也需要将指纹更换成你之前绑定过的那一个——或者重新绑定一个新设备指纹
用得爽点个星星可好?谢谢!
路过的大佬们,请不吝赐教,也帮助我一个沙袋蒟蒻提升一下水平。加群唠嗑: