小白在學習程序中要模擬瀏覽器請求得到下面這個資料
,需要傳遞一個手機號
分析發現原始碼中沒有,是個ajax異步請求,post方式,
請求資料中 q 是手機號,h 是一個字串,每次都會變,就算是同一個q重繪一下都會變,i和t基本不變,
小白主要就是想知道這個h是怎么得來的

進一步分析發現h應該是一個JS檔案計算加密得到
下面po關鍵代碼(應該是這一段吧
)function doSearch() {
$.ajax({
type: "POST",
dataType: "json",
url: "/search/ajax",
data: {
q: q,
h: h,
i: i,
t: t++
},
cache: false,
error: function(jqXHR, textStatus, errorThrown) {
if (textStatus == "timeout") {
setTimeout("doSearch()", 1500)
} else {
finishSearch()
}
},
timeout: 2000,
success: function(data, textStatus, jqXHR) {
if (!data || data.status === 0) {
finishSearch()
} else {
if (data.data !== -1 && data.data !== 0) {
var sites = data.data;
var len = sites.length;
var j = 0;
for (j = 0; j < len; j++) {
if (sites[j].id > 0) {
var goto_url = ""
, o_m_d = ""
, u_c_m_s = "";
if (typeof (sites[j].home) !== "undefined") {
goto_url = sites[j].home;
o_m_d = '" onmousedown="return o_m_d(this,\'/site/' + sites[j].sn + '\')';
} else {
goto_url = "/site/" + sites[j].sn;
o_m_d = "";
}
var str = '<li id="li_' + sites[j].id + '" class="media" data-category="';
str += sites[j].category;
str += '"><a class="pull-left" target="_blank" rel="noreferrer" href="';
str += (goto_url + o_m_d);
str += '"><img class="media-object" src="';
str += sites[j].logo;
str += '" alt="' + sites[j].name + '"></a><div class="media-body"><h4 class="media-heading"><a target="_blank" rel="noreferrer" href="';
str += (goto_url + o_m_d);
str += '">';
str += sites[j].name;
str += '</a><small> | <a href="https://bbs.csdn.net/topics/#" onclick="showCategoryTab(this)">';
str += sites[j].category.split(" ")[0];
str += '</a></small></h4><ul class="list-inline ul-unicol">';
if (typeof (sites[j].unicol) !== "undefined") {
var ucs = sites[j].unicol;
var uc_len = ucs.length;
var k = 0;
for (k = 0; k < uc_len; k++) {
str += '<li><a target="_blank" onmousedown="return o_m_d(this,\'/site/' + sites[j].sn + '/' + ucs[k].cls + '\')" title="' + ucs[k].title + '" class="unicol-a ' + ucs[k].cls + '" href="' + ucs[k].url + '"></a></li>';
u_c_m_s += '<li role="presentation"><a role="menuitem" tabindex="-1" target="_blank" onmousedown="return o_m_d(this,\'/site/' + sites[j].sn + '/' + ucs[k].cls + '\')" href="' + ucs[k].url + '">' + ucs[k].title + '</a></li>';
}
}
str += '</ul><div class="dropdown pull-right"><a href="https://bbs.csdn.net/topics/#" class="opt-menu dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-chevron-down"></span></a><ul class="dropdown-menu" role="menu">' + u_c_m_s + '<li role="presentation"><a role="menuitem" tabindex="-1" href="https://bbs.csdn.net/topics/#" data-toggle="modal" data-target="#not_reg_modal" data-site_id="' + sites[j].id + '">并未注冊過該網站?</a></li><li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="https://bbs.csdn.net/topics/#">注銷該網站 (即將推出)</a></li></ul></div><p class="site-desc">';
str += sites[j].desc;
str += "</p></div></li>";
$("#site_list").append(str);
i++;
$("#resultCount").html(i)
} else if (sites[j].id == -2 && j > 0) {
$("#site_list").append((typeof (IS_COMPUTER) !== 'undefined' && IS_COMPUTER) ? '<li><div id="v_m_c"><a href="https://bbs.csdn.net/account/signin" target="_blank" id="a_signin_o_1" class="btn btn-lg btn-default">登錄</a> 或 <a href="https://bbs.csdn.net/account/signup" target="_blank" class="btn btn-lg btn-success">注冊</a> 查看全部已注冊過的網站</div></li>' : '<li><div style="width:100%;margin-top:12px;margin-bottom:10px;border-radius:0;cursor:auto;" class="btn btn-default btn-lg text-center"><a href="https://bbs.csdn.net/account/signin" target="_blank" id="a_signin_o_1">登錄</a> 或 <a href="https://bbs.csdn.net/account/signup" target="_blank">注冊</a> 查看全部已注冊過的網站</div></li>');
$("#v_a_r").html('<a href="https://bbs.csdn.net/account/signin" target="_blank" id="a_signin_o_2">登錄</a> 或 <a href="https://bbs.csdn.net/account/signup" target="_blank">注冊</a> 查看全部結果').css("display", "inline-block");
$("#a_signin_o_1,#a_signin_o_2").click(function(e) {
$("#signin_modal").modal("show");
e.preventDefault()
});
}
}
}
if (data.data !== -1 && data.info !== "100%") {
setTimeout("doSearch()", 1500)
} else {
finishSearch()
}
}
}
})
}
小白看不懂JS代碼,請大神幫忙看看,這個h是怎樣得到的,謝謝
網站鏈接我就不po了,明眼人都知道吧



uj5u.com熱心網友回復:
q h i和t 是全域變數或者外層作用域中的變數,你發的這段代碼沒有這四個變數的宣告和賦值的代碼。uj5u.com熱心網友回復:
謝謝大佬,這個h 全程就只出現了這一次,完整代碼我放在了這
https://www.lanzous.com/i9djd9i
幫忙看下,謝謝
uj5u.com熱心網友回復:
輸入手機號進行查詢時有2個請求,第一個請求會只攜帶手機號,回傳的頁面資料里宣告了q h i t的值。可以看一下在358行。后面的ajax會再去請求下,把這個q h i t 帶上
uj5u.com熱心網友回復:
看到了,謝謝大佬,之前沒注意到前面請求的頁面 ,????
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/94034.html
標籤:JavaScript
