js 反爬 发表于 2019-04-26 | 分类于 spider | 阅读次数 sign 计算 js debug xhr execjs 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import execjs node = execjs.get() def js_file(path): o = open(path).read() return node.compile(o) def js_sha(param): js_path = '../js/sha1.min.js' ctx = js_file(js_path) # ctx.eval("sha1 = require('js-sha1')") return ctx.call('sha1', param) def t(param): cmd = """ Math.floor(({} - 99) / 99) """.format(param) return node.eval(cmd) def page(page_num): sess = requests.session() sess.headers = headers = { # 'User-Agent': random.choice(config.HEADER.USER_AGENT), 'User-Agent': ua.random, } # sess.cookies = cookies resp = sess.get(url=URL.format(page_num), cookies=cookies) soup = BeautifulSoup(resp.text, "lxml") ele = soup.find('div', class_='container', p=True) p = ele['p'] ts = t(ele['t']) # sign = sha('Xr0Z-javascript-obfuscation-1{}'.format(ts).encode()) # p = page_num # ts = int(time.time()) sign = sha('Xr0Z-javascript-obfuscation-1{}'.format(ts).encode()) param = { 'page': p, 't': ts, 'sign': sign, } # sess.headers.update({ # # 'Referer': URL.format(page_num), # 'Referer': 'http://glidedsky.com/level/web/crawler-javascript-obfuscation-1', # 'X-Requested-With': 'XMLHttpRequest', # }) resp = sess.get(XHR_URL, params=param) # print(resp.headers['Referer']) print(resp.json()) 本文作者: wyx 本文链接: https://github.com/blog/2019/04/26/js 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!