0

当浏览器在客户端执行 JavaScript 并且JavaScript 附加从 form 提交查询时,如何在Chrome 的开发工具中调试(折叠网页)。

例如,我有一个带有表单的页面,其中:

  1. 文本 + 密码作为带有名称的输入字段 - password&login
  2. 当我点击提交时,浏览器执行了 1000 次 JavaScript 脚本,但在结果中我只看到一个带有神奇添加的查询参数的完整查询(这些参数不存在于 HTML 表单中)
  3. 保留日志没有帮助,因为浏览器在提交期间会进行重定向(点击按钮时)
  4. 这些不是隐藏字段类型
  5. 也没有内联 JavaScript,但.js在幕后有一个大文件

我想要的是找到负责插入那些“神奇”查询片段的 JavaScript 代码。

我可以补充一点,这个查询参数值是通过组合之前提交的输入文本/密码字段值创建的,例如:

param name                 |     param value
                                (by combine login/password delimited by val2) 
---------------------------------------------------------------------------------
hrsxcvaqr1ib8slcxmalzas321   =   someloginval2somepassword

// or when I input no login and password
hrsxcvaqr1ib8slcxmalzas321   =    undefinedval2undefined

hiddenFieldName=hiddenFieldVal&login=somelogin&password=somePassword&hrsxcvaqr1ib8slcxmalzas321=undefinedval2undefined

通过反向查找,我知道向查询中注入了什么:

  1. 我可以在 Chrome 开发工具的哪个位置输入?
  2. 当 val2 发生字符串附加或连接时,我需要输入什么断点或条件才能停止执行?

我正在尝试

window.addEventListener("beforeunload", function() { debugger; }, false)

但是当我看到这样的事情时,这并没有帮助。

在此处输入图像描述

这是表单提交 js 入口点

   onsubmit="zablokujPrzycisk(this)">

function zablokujPrzycisk(a) {
    var c = $(a);
    var b = c.find("button");
    b.disable()
}

仍然没有任何帮助

我想添加断点以匹配表单输入字段的(用法)

好的,我发现这是修改表单的地方

 dX.event = {
        global: {},
        add: function(n, h, b, l, m) {
            var k, a, s, q, f, j, c, p, d, o, r, g = dX._data(n);
            if (!g) {
                return
            }
            if (b.handler) {
                q = b;
                b = q.handler;
                m = q.selector
            }
            if (!b.guid) {
                b.guid = dX.guid++
            }
            if (!(a = g.events)) {
                a = g.events = {}
            }
            if (!(j = g.handle)) {

/////////////// 这里 ////////////////

                j = g.handle = function(t) {
                    return typeof dX !== eF && (!t || dX.event.triggered !== t.type) ? dX.event.dispatch.apply(j.elem, arguments) : eB
                }

//////////////////////////////////////////////////////////////////////

        dispatch: function(j) {
        j = dX.event.fix(j);
        var g, f, a, l, h, b = [], c = b5.call(arguments), k = (dX._data(this, "events") || {})[j.type] || [], d = dX.event.special[j.type] || {};
        c[0] = j;
        j.delegateTarget = this;
        if (d.preDispatch && d.preDispatch.call(this, j) === false) {
            return
        }
        b = dX.event.handlers.call(this, j, k);
        g = 0;
        while ((l = b[g++]) && !j.isPropagationStopped()) {
            j.currentTarget = l.elem;
            h = 0;
            while ((a = l.handlers[h++]) && !j.isImmediatePropagationStopped()) {
                if (!j.namespace_re || j.namespace_re.test(a.namespace)) {
                    j.handleObj = a;
                    j.data = a.data;
                    f = ((dX.event.special[a.origType] || {}).handle || a.handler).apply(l.elem, c);
                    if (f !== eB) {
                        if ((j.result = f) === false) {
                            j.preventDefault();
                            j.stopPropagation()
                        }
                    }
                }
            }
        }
        if (d.postDispatch) {
            d.postDispatch.call(this, j)
        }
        return j.result
    },

///////////////////// 我们得到类似的东西 //////////

 $('[data-formularz-log-in]').submit(function(e) {
    var a = document.createElement("input");
    var b = $(this).find('[name="login"]').val();
    var c = $(this).find('[name="blabla"]').val();
    var d = $(this).find('[name="password"]').val();
    var f = b + 'val2' + d;
    a.setAttribute('type', 'hidden');
    a.setAttribute('name', 'hrsxcvaqr1ib8slcxmalzas321');
    a.setAttribute('value', f);
    $(this)[0].appendChild(a)
});

堆栈跟踪 :

(anonymous) (VM6228:formatted:5)
dispatch (min.js?v=91:formatted:1858)
g.handle (min.js?v=91:formatted:1669)

但我仍然不知道hrsxcvaqr1ib8slcxmalzas321这个名字是如何/或从哪里来的?

在此处输入图像描述

4

0 回答 0