#1 - 2021-7-18 12:45
拿月亮自刎 (情更怯)
注意 2022-11-03
最近我写脚本时,发现 Bangumi 掉登录。
排查结论: 使用 【GM_xmlhttpRequest】请求Bangumi 的用户脚本会导致本楼的方法失效。
原因: 假设你设置的UA 是 chrome97, GM_xmlhttpRequest发起请求时默认使用的浏览器的UA,比如为 chrome107。chrome97 和 chrome107的变化有几率导致 Bangumi 掉登录。
---------------------------------------分割线------------------------------------------
测试
鉴于楼下有质疑这个方法的童鞋,我做了一下测试。使用的 Firefox 测试。 UA 使用的 Chrome。
按照下面的方法我设置好了 UA,并成功登录 Bangumi。见截图
然后我去 Firefox 的 ftp 下载了 beta 版本,并设置配置文件为之前的配置
再次启动后依然能够正常访问 Bangumi,登录信息仍然存在。
测试使用本地代码访问
源码地址:
https://github.com/zhifengle/blo ... src/bangumi-test.ts
有些网站在检测用户身份的时候用到了 HTTP 请求头 User-Agent。
当浏览器自动升级后,User-Agent 发生变化,导致用户认证失败,需要重新登录。
所以保持登录状态的一个小技巧就是保持 User-Agent 不变。
对于 Cookie 过期的需要重新登录的问题,这里就不讨论了。
我使用的这个浏览器扩展: Header Editor
当然使用其它扩展也行比如: User-Agent Switcher
关键点就是保持网站 User-Agent 不变就行。
以 Header Editor 为例子
添加规则页面
匹配规则填写: bgm\.tv|bangumi\.tv|chii\.in
可以根据需要增加其它网站比如我的规则: bgm\.tv|kfmax\.com|south-plus\.net
绯月、南+ 也是 User-Agent 变动后会掉登录的网站
头名称: user-agent
头内容: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36
上面的头内容是我自己的,头内容根据实际填写。
可以通过 F12 利用控制台,输入 copy(navigator.userAgent) 复制。
利用 Header Editor 重定向 Bangumi 域名
HE(Header Editor) 的用途还有很多,图片防盗链、重定向、控制网站响应语言等,这里再举个我用到的例子。
外部访问 Bangumi 时,重定向为常用的域名。
我常用的是 bgm.tv 这个域名
匹配规则:
重定向至:
如果你是使用的 bangumi.tv 这个域名
匹配规则:
重定向至:
chii.in 这个域名就不举例了,匹配规则取消 chii.in ,重定向规则改成 chii.in
最近我写脚本时,发现 Bangumi 掉登录。
排查结论: 使用 【GM_xmlhttpRequest】请求Bangumi 的用户脚本会导致本楼的方法失效。
原因: 假设你设置的UA 是 chrome97, GM_xmlhttpRequest发起请求时默认使用的浏览器的UA,比如为 chrome107。chrome97 和 chrome107的变化有几率导致 Bangumi 掉登录。
---------------------------------------分割线------------------------------------------
测试
鉴于楼下有质疑这个方法的童鞋,我做了一下测试。使用的 Firefox 测试。 UA 使用的 Chrome。
按照下面的方法我设置好了 UA,并成功登录 Bangumi。见截图
然后我去 Firefox 的 ftp 下载了 beta 版本,并设置配置文件为之前的配置
再次启动后依然能够正常访问 Bangumi,登录信息仍然存在。
测试使用本地代码访问
源码地址:
https://github.com/zhifengle/blo ... src/bangumi-test.ts
有些网站在检测用户身份的时候用到了 HTTP 请求头 User-Agent。
当浏览器自动升级后,User-Agent 发生变化,导致用户认证失败,需要重新登录。
所以保持登录状态的一个小技巧就是保持 User-Agent 不变。
对于 Cookie 过期的需要重新登录的问题,这里就不讨论了。
我使用的这个浏览器扩展: Header Editor
当然使用其它扩展也行比如: User-Agent Switcher
关键点就是保持网站 User-Agent 不变就行。
以 Header Editor 为例子
添加规则页面
匹配规则填写: bgm\.tv|bangumi\.tv|chii\.in
可以根据需要增加其它网站比如我的规则: bgm\.tv|kfmax\.com|south-plus\.net
绯月、南+ 也是 User-Agent 变动后会掉登录的网站
头名称: user-agent
头内容: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36
上面的头内容是我自己的,头内容根据实际填写。
可以通过 F12 利用控制台,输入 copy(navigator.userAgent) 复制。
利用 Header Editor 重定向 Bangumi 域名
HE(Header Editor) 的用途还有很多,图片防盗链、重定向、控制网站响应语言等,这里再举个我用到的例子。
外部访问 Bangumi 时,重定向为常用的域名。
我常用的是 bgm.tv 这个域名
匹配规则:
^https?://(doujin.)?(?:bangumi|chii).(?:tv|in)/(.*$)
重定向至:
https://$1bgm.tv/$2
如果你是使用的 bangumi.tv 这个域名
匹配规则:
^https?://(doujin.)?(?:bgm|chii).(?:tv|in)/(.*$)
重定向至:
https://$1bangumi.tv/$2
chii.in 这个域名就不举例了,匹配规则取消 chii.in ,重定向规则改成 chii.in
HTTPS Everywhere 以前还有证书验证,如果证书与 EFF 的服务器上的不匹配则拒绝接受此链接。不过因为现在 CDN 边缘计算比较广泛(每个边缘结点各自生成极短时效证书),此功能被移除了。
仔细想了一下 App 和网页端不是用的一套东西,我搞错了。
而且也没啥bug。。。
(我就是web生态的分裂者)
好像使用 PHP 为技术栈的网站很多都是基于 UA 进行用户的认证,可能是以前遗留下来的开发方式,大家都沿用学习的这套技术栈。 上面我提到的 绯月、南+ 都是 PHP, Bangumi 后台据我了解也是 PHP。
新的网站一般还是使用 token 认证居多。
顶楼测试的 Firefox,但是自己不再使用 Firefox 作为主力浏览器,也没做长期测试。
如果是一样的,并且频繁掉登录。我也不知道原因
自测了一下,我这里 Edge 的请求的“user-agent”和设置的是一样的。使用的时间较短,没出现掉登录。