爬虫token参数分析记录
目标网站:http://tool.man
目的:获取token参数加密规则。
安装:pip install PyExecJS , 谷歌浏览器
过程:
网页源码看见, $("#iframeId").attr("src", "history2018.aspx?w=951&h=780&h2=420&m=1&e=1&browes=1&url=" + escape('http://item.jd.com/5089253.html') + "&token=" + d.encrypt('http://item.jd.com/5089253.html', 2, true));
谷歌浏览器 network 打开记录log( Preserve log)打上对勾,刷新网页,Sources里在"&token=" + d.encrypt('http://item.jd.com/5089253.html', 2, true)); 打断点,然后单步执行js,一直点下一步,直到某个js文件里出现encrypt,分析此js文件,发现有 var d = {} ... encrypt: function(a, b, e) 字段,即为 d.encrypt('http://item.jd.com/5089253.html', 2, true), 。
再次分析此js文件,发现含有 return d.rd(b) + hex_md5(a) + d.rd(Math.ceil(Math.random() * 10)) 有 hex_md5(a) 方法,在此行打断点,刷新网页,执行js调试,点击下一步, 直到某个js文件出现 hex_md5 字段,发现有 function hex_md5(s), 合并两个js部分,简单封装找到的js,保存为js文件,使python执行此js文件时,保证它有返回值。
python执行js文件:
import execjs
import warnings
warnings.filterwarnings("ignore")
with open("mai_token.js", 'r', encoding='utf-8') as f:
cx = f.read()
ctx = execjs.compile(cx)
result = ctx.call("get_token", 'http://item.jd.com/737139.html', 2, True)
print("result : ", result)

浙公网安备 33010602011771号