GoForum🌐 V2EX

绕过退税查询前端校验方法

rossroma · 2026-02-25 17:17 · 0 次点赞 · 16 条回复

接前一篇帖子: https://v2ex.com/t/1193867#reply171

等我查的时候,发现加了校验,查不了 25 年的退税了。不过有细心的 V 友发现,是纯前端的校验,并没有发起后端请求,那么就有方法绕过前端校验。

步骤如下,略微有些麻烦,建议使用无痕模式,普通模式下我遇到过 Chrome 卡死的问题。


步骤一:禁用 debugger 反调试

打开控制台,发现一直弹 debugger,点击继续执行,最后会一直落到下面的代码上。

右键点击 debugger 这一行代码,选择「将匿名脚本添加至忽略列表」,后面就不会再弹了。

步骤一截图


步骤二:查找按钮绑定的事件

网站的代码添加了反调试保护,无法直接看到按钮绑定的事件,所有的事件都被统一包装了一层,需要通过如下方法查到对应的源码。

在控制台输入如下代码,然后执行:

const button = document.querySelector(".J_NextStep")
getEventListeners(button)

然后会看到如下信息,点击箭头位置,穿透到代码片段。

步骤二截图


步骤三:找到 arguments 行并设置断点

这段代码应该是动态的,每次点击进来函数名都不一样。找到有 arguments 这一行,进行断点。

步骤三截图


步骤四:Hook Function.prototype.apply 拦截调用

点击提交按钮,当代码运行到上面的断点一行时,在控制台输入如下代码:

const oldApply = Function.prototype.apply;

Function.prototype.apply = function(ctx, args) {
    console.log("调用函数:", this);
    console.log("参数:", args);
    debugger;
    return oldApply.call(this, ctx, args);
};

然后点击断点控制处的继续执行脚本,此时控制台会输出非常多的信息,使用 goto 关键词过滤一下,找到如下信息:

步骤四截图


步骤五:穿透至 gotoPage 函数

点击这里的代码穿透至具体的逻辑代码,并在当前页面找到 gotoPage 函数声明的位置,这里才是真正逻辑判断的地方。

步骤五截图


步骤六:修改日期校验数据,绕过校验

在该函数内添加断点,当代码执行到该断点时,将 this 变量保存到全局,然后在控制台执行下面代码,将校验逻辑跳过即可:

this.data.minDate = null
this.data.maxDate = null

以上步骤完成后,即可绕过前端日期校验,查询 25 年的退税信息。

16 条回复
stinkytofux · 2026-02-25 17:17
#1

真的挺闲的, 这有啥好查的. 还想方设法提前查. 每年我都是拖到最后才搞, 烦得很.

BanShe · 2026-02-25 17:17
#2

给 op 的探索精神加鸡腿

honggexuan · 2026-02-25 17:27
#3

点赞,已成功进入

canvascat · 2026-02-25 17:32
#4

真厉害,怎么想到的😍

tangzui · 2026-02-25 17:32
#5

老哥,图片看不了啊

jiny28 · 2026-02-25 17:32
#6

ok,已经成功进入

panbofeng · 2026-02-25 17:32
#7

gotopage 咋跳转到具体代码的呀,我这边点了后只能跳转到调用 gotopage 的地方

cpstar · 2026-02-25 17:32
#8

这事么,当年靠 F12 得了 X 程的巴厘岛优惠,也拿过小米初代工程机,现在还在搞一些前端控制的“作弊”比如强制学习之类的系统。

没啥新鲜的,程序员么,逆向程序员的思路很简单,特别是在 B/S 架构下的前后端分离。但要想搞定后端,那就,嘿嘿了。

chekun · 2026-02-25 17:37
#9

费劲看这个干啥呀 https://i.imgur.com/io2SM1h.png

kfpenn · 2026-02-25 17:37
#10

反应这么快啊,立马就加校验了

panbofeng · 2026-02-25 17:42
#11

搞定了,感谢楼主

lengmou · 2026-02-25 17:42
#12

找到 goto 的时候,弹窗已经出现了,还怎么下一步啊 https://i.imgur.com/UFzm496.png

panbofeng · 2026-02-25 17:47
#13

@lengmou 现在函数里面加个断点,然后把弹窗点掉重新来,等他停在你的端点,再输入步骤六的代码。

aizya · 2026-02-25 17:47
#14

可以的,又学到一招。👍

xiapipi · 2026-02-25 17:47
#15

可以,进去了。

dobelee · 2026-02-25 17:47
#16

@lengmou 第一行加断点,执行,block 住时清掉时间就好

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: rossroma
发布: 2026-02-25
点赞: 0
回复: 0