当浏览器在客户端执行JavaScript时,如何在 Chrome的开发工具中调试(折叠网页),并且 JavaScript正在从表单附加提交查询
例如,我有一个页面,其中包含:
password
&的输入字段login
.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
通过反向查找,我知道注入查询的内容:
我正在尝试
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)
});
stacktrace:
(anonymous) (VM6228:formatted:5)
dispatch (min.js?v=91:formatted:1858)
g.handle (min.js?v=91:formatted:1669)
但我仍然不知道 hrsxcvaqr1ib8slcxmalzas321 这个名字是怎么来的?