试过 Ctrl + F5,试过代理,没用
死活刷不出来
不过我还能从中看出更具体的一些问题

如上图所示,控制台报错的来源是 geetest 验证码的预加载脚本,提示的是 JSON 解析出了问题

我先追踪到了报错的 HTML 部分,第一行其实并没有啥毛病,就一句小萝莉自己加的注释
但或许问题就出在这呢?也许是不是该考虑下把注释移动下位置?或者删掉?

我又追踪到了报错的 JS 部分,发现这是服务器返回的数据出了问题
这是真得修了

已确认本人的网络没有问题,下载数据无误
因为这验证码问题,我估计又有许多人因登不上论坛而被憋得一句话说不出来……
重开防御脚本副作用就是大啊……
@gamerteam @混乱
致普通用户:
请参考此贴解决问题
(我不是故意成为标题党的,茶馆帖子不会出现在论坛版头,所以只能以这种方式尽可能告诉大家这个问题啦)
(P.S. @SPGoding 你不是说你有坑的咩!怎么又跑出来秀操作啦!(╯‵□′)╯︵┻━┻)
死活刷不出来
不过我还能从中看出更具体的一些问题

如上图所示,控制台报错的来源是 geetest 验证码的预加载脚本,提示的是 JSON 解析出了问题

我先追踪到了报错的 HTML 部分,第一行其实并没有啥毛病,就一句小萝莉自己加的注释
但或许问题就出在这呢?也许是不是该考虑下把注释移动下位置?或者删掉?

我又追踪到了报错的 JS 部分,发现这是服务器返回的数据出了问题
这是真得修了

已确认本人的网络没有问题,下载数据无误
因为这验证码问题,我估计又有许多人因登不上论坛而被憋得一句话说不出来……
重开防御脚本副作用就是大啊……
@gamerteam @混乱
致普通用户:
请参考此贴解决问题
(
(P.S. @SPGoding 你不是说你有坑的咩!怎么又跑出来秀操作啦!(╯‵□′)╯︵┻━┻)
额外补充一下(开保护脚本时编辑实在难受,干脆直接回复)

是个明白人应该都看得懂什么了吧
我建议的解决方案有两种:
1. 关闭对链接 /plugin\.php\?id=geetest3&model=start&t=([0-9]+)/ (←这是正则表达式,可直接拿去用)的屏蔽,这个需要改写论坛的 PHP 脚本
检查一下浏览器发来的 href 又费不了多大事,时间成本和防御脚本生成个随机字串返回是差不多的,不会至于让论坛宕机
2. 修改 gt3-init.js(不太建议)
改一下脚本,让脚本检测一下返回的是 JSON 还是 HTML,如果是 HTML 就提取其中的随机字串并再次向页面发送请求
有点费事,如果 PHP 改不了,就改 JS

是个明白人应该都看得懂什么了吧
我建议的解决方案有两种:
1. 关闭对链接 /plugin\.php\?id=geetest3&model=start&t=([0-9]+)/ (←这是正则表达式,可直接拿去用)的屏蔽,这个需要改写论坛的 PHP 脚本
检查一下浏览器发来的 href 又费不了多大事,时间成本和防御脚本生成个随机字串返回是差不多的,不会至于让论坛宕机
2. 修改 gt3-init.js(不太建议)
改一下脚本,让脚本检测一下返回的是 JSON 还是 HTML,如果是 HTML 就提取其中的随机字串并再次向页面发送请求
有点费事,如果 PHP 改不了,就改 JS
本帖最后由 langyo 于 2019-2-9 05:38 编辑
额外再提一句,有关修复论坛开防御脚本时的一劳永逸的无法评分/保存帖子/回复帖子等的解决方案
(这里只是暂时粗略提一下,不提供修复代码)
(或许哪天我有时间,就直接往公告版发可直接复制粘贴的修复代码了呢?)

修复的关键其实在于正确处理 ajax 请求
在开防御脚本的情况下,浏览器打开由论坛返回的 HTML 文件时,由于自动执行脚本,所以能够成功访问论坛
而当浏览器根据 HTML 文件指向的附属资源(或用户主动请求,例如评分)向论坛发送请求时,使用的 Ajax 是无法像刚刚那样能自动执行脚本的
说白了,解决方案就是改写 Ajax 脚本,把它包装一下,在正式解析返回的数据前先确定下这是防御脚本产生的随机字符串还是真实数据;当发现是防御脚本时,自行重置自己,先执行防御脚本提供的随机字符串,再重新发送 Ajax 请求
其实……原理似乎已经说的很透彻了……吧?
哦还有,产生 Ajax 请求的应该不止这一个脚本,除了 ajax.js 里的以外, geetest 验证码服务的 ajax 与 Discuz! 自己的 ajax 是分开的,两边都要考虑下……以及,Discuz! 本身也不止 ajax.js 这一个产生 ajax 请求的脚本
额外再提一句,有关修复论坛开防御脚本时的一劳永逸的无法评分/保存帖子/回复帖子等的解决方案
(这里只是暂时粗略提一下,不提供修复代码)

修复的关键其实在于正确处理 ajax 请求
在开防御脚本的情况下,浏览器打开由论坛返回的 HTML 文件时,由于自动执行脚本,所以能够成功访问论坛
而当浏览器根据 HTML 文件指向的附属资源(或用户主动请求,例如评分)向论坛发送请求时,使用的 Ajax 是无法像刚刚那样能自动执行脚本的
说白了,解决方案就是改写 Ajax 脚本,把它包装一下,在正式解析返回的数据前先确定下这是防御脚本产生的随机字符串还是真实数据;当发现是防御脚本时,自行重置自己,先执行防御脚本提供的随机字符串,再重新发送 Ajax 请求
这个防御脚本太暴力了。。。
几乎所有请求都得允许那个 js 才行。
不能换换别的吗,比如类似于 cloudflare 的5秒盾
几乎所有请求都得允许那个 js 才行。
不能换换别的吗,比如类似于 cloudflare 的5秒盾
本帖最后由 roj234 于 2019-2-9 12:12 编辑
其实和注释并没关系,只是F12不知道错误到底在哪所以显示【当前页面地址:1】
一般:1都是不知道在哪,比如闭包函数(function(){})();和以前的setInterval有时页面加载完毕之后打开F12也会这样

其实和注释并没关系,只是F12不知道错误到底在哪所以显示【当前页面地址:1】
一般:1都是不知道在哪,比如闭包函数(function(){})();和以前的setInterval有时页面加载完毕之后打开F12也会这样

和注释没关系,不用猜了的
脚本只是临时的,过年期间主运维放假了,临时凑合用用。
后面已经在调整这方面的内容了
脚本只是临时的,过年期间主运维放假了,临时凑合用用。
后面已经在调整这方面的内容了
roj234 发表于 2019-2-9 12:10
其实和注释并没关系,只是F12不知道错误到底在哪所以显示【当前页面地址:1】
一般:1都是不知道在哪,比如闭 ...
显示第一行是因为服务器返回的源代码被 tenginx 之类的优化压缩过,需要格式化的话进 Source 里自动格式化再回去就能看到行号,不过要是只登的话咱一个月之前的那个脚本应该一直能用,因为http://www.mcbbs.net/forum.php和http://www.mcbbs.net/portal.php这两个位置从服务器拉 token 都是照搬官方 demo 手动拼参数,和签到入口那边连对象名都一模一样,可以直接用……
我竟然真的用刷新解决了问题(??ω`?)
冰川橘子 发表于 2019-2-13 09:09
我竟然真的用刷新解决了问题(??ω`?)
论坛昨天下午 1 点已经关闭了防御,所以你刷新也能看到验证码了……
langyo 发表于 2019-2-13 09:18
论坛昨天下午 1 点已经关闭了防御,所以你刷新也能看到验证码了……
管理员2月7号回复的我,当时还是刷不出来的,但是我都按了很多回才刷出来,但是我手贱,又按了一下,又不见了,不知道循环了多少遍,我才登进来