本次记录扣js核心算法
爬取思路:
1.找到请求体,获得数据链接
2.将请求体带上尝试请求,研究请求情况(一段时间cookie会失效)
3.尝试请求体情况,得到问题所在
4.开始逆向hook需要的核心请求体
5.不断调试与扣js代码
6.得到数据后,构思如何失效后自动更新
找到请求体:
数据在里面多层嵌套最终在data就能看见内容
请求链接:Request URL:http://www.iwencai.com/customized/chart/get-robot-data
尝试请求:
将data和headers带上:
data = {
"question":"20221030涨停",
"perpage":50,
"page":1,
"secondary_intent":"",
"log_info":{"input_type":"typewrite"},
"source":"Ths_iwencai_Xuangu",
"version":"2.0",
"query_area":"",
"block_list":"",
"add_info":{
"urp":{
"scene":1,
"company":1,
"business":1
},
"contentType":"json",
"searchInfo":True
},
"rsh":"Ths_iwencai_Xuangu_xdoaiz62bgbofsagvw5mfuwnxmdl7mto",
}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"Content-Type": "application/json",
"Referer": "http://www.iwencai.com/unifiedwap/result?w=20221030%E6%B6%A8%E5%81%9C",
"cookie": f"v={hexin_v}",
}
resp = requests.post(url=url,data=json.dumps(data),headers=headers).text
print(resp)
尝试请求体情况,得到问题所在:
仔细研究cookie,再加上测试,发现cookie中可以减少参数,最终只剩下v=即可
然后,v后面的数据又是hexin-v一模一样,由此可以断定是拼接上去从而检测的,再测试还发现不带cookie带heixn-v一样可以请求,由此即可明白请求原理,要解决就是heixn-v
逆向hook需要的核心请求体:
这里就运用到了hook请求头,当发现hexin-v时候捕获:
func_ = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function(name,value){
if (name === "hexin-v"){
debugger
}
return func_.apply(this,[name,value]);
}
//将代码复制到浏览器,接着再次点击请求
找到核心算法实现处:
上一层就是实现处原理:
接着从代码中获知rt.update就是hexin-v的来源验证一下
将生成的放入请求中,请求成功获取
接着定位到核心rt处,进行扣代码!!!(耐心出奇迹)
代码:
//var TOKEN_SERVER_TIME = 1667085000.423;
var document = {}
var window = {}
second = [1, "", 0, "he", "ad", 29, "\x180G\x1f", "?>=<;:\\\\/,+", "ng", "to", "ff", Number, Error, "11", "6", "er", "ro", "code", "co", "_?L", "ed", "@S\x15D*", Object, "len", "gth", "on", "lo", RegExp, "ySta", 13, "eel", "ee", "ouse", "ll", "\u2544\u2530\u2555\u2531", "FCm-", "isTru", "getC", "Pos", "ve", "or", "ae", "^", "On", "Sho", "can", "ont", "roid", "anguage", "\u2502", "ta", "tna", Date, "3", "am", "e", "n+", "f80", "\x1dD", 6, "\u255f\u253a\u2542\u252b\u2545\u2568\u251e", "KCABLLAC_NOELEMAHC", "X-Antispider-Message", 3, ".baidu.", Function, document, !0, "cookie", "; ", "=", 96, "\u255b\u253e\u2550\u2537\u2543\u252b", "\u250c\u252c\u255c\u253d\u2549\u2521\u251c", ";O", "; expires=", "getCookie", "Thu, 01 Jan 1970 00:00:00 GMT", "setCookie", "Z\x18|", "i", "\u255b\u2534\u2557\u2536\u255a\u2509\u257d\u2512\u2560\u2501\u2566\u2503", 52, window, 10, "Init", !1, "set", "v", "eliflmth", '<script>document.w=window<\/script><iframe src="/favicon.icon"></iframe>', "iS.p", "head", "#default#userData", "get", "[!\"#$%&'()*", "g", "^d", "$D", "\u2568\u2537\u2568\u254c\u256a", "]\\P", "___", "le", "th", "prototype", "base_f", 8, "\\R5Z\\R\x14@^Q3G", "ZV%PgQ?Y]S