python携程爬虫之逆向混淆js

python携程爬虫之逆向混淆js

2023年6月29日发(作者:)

python携程爬⾍之逆向混淆js前⾔知乎上⾯的专栏,写出了逆向找到携程的Eleven参数来伪装浏览器发送ajax,获取携程的酒店房型列表。然⽽⽂章并没有给出全部的思路,我们获取到的页⾯内容内容是酱紫的:DEBUG$.ajax(o, { onsuccess: function(e) { window[n](seText)// }, onerror: function() { window[n] = void 0, r() }}⽽执⾏函数的时候传⼊的参数就是我们刚刚ajax得到的的json内容。我们打上断点后可以发现seText为访问页⾯得到的json转化⽽成字符串。⽽window[n]⽅法就在上⽅ window[n] = function(e) { window[n] = void 0; var i = ["T", "F", "e", "s", "M", "a", "g", "r", "o", "B", "u", "l", "y", "m", "f", "t"]; e = $.parseJSON(e), null == e ? r() : ( && e["0|2|3|15|4|2|3|3|5|6|2|1|7|8|13|9|10|15|15|2|7|14|11|12".split("|").map(function(e) { return i[e] }).join("")].slice(-9999).indexOf(" ") !== -1 ? = "" : !l && t && ( = t(xHtml, , )), s(e)), $('script[src="' + o + '"]').remove() }我们在return i[e] 和

$('script[src="' + o + '"]').remove()处打上断点。执⾏的时候直接跳过了return i[e],我们再看⼀下各变量的值。e 原本为传⼊的seText的值,既字符串,如今变成了⼀个对象,浏览⼀下他的属性。发现有⼀个html的属性,内容如下:↵

↵ ↵ ↵ ↵ ↵ ↵ ↵ ↵

没有符合条件的房型,您可以减少当前筛选项或查看全部房型

↵由于太长我没有吧全部代码放出来。可以看出,这⾥就是我们想要的结果。于是我排查了window[n]⾥的每⼀个句⼦,找到了( = t(xHtml, , ),其中xHtml以及就是ajax得到的两个奇形怪状的字段,跳转到t函数。 function t(e, t, o) { var i = ""; if ("function" != typeof NODEJS) return ""; if ("undefined" == typeof e) return ""; if (!e) return ""; try { i = NODEJS(e, t) } catch (n) { i = "" } return i }return i 的时候,i已经是html的字符串了。所以我们可以判断就是在⽅法名为NODEJS之中完成的解密。NODEJS = function(n, t) { var r, o, e = "1", i = void 0 == e[0], c = i ? [] : ""; for (r = 0; r < ; r++) o = ((r).charCodeAt(0) - 21760).charAt(0), i ? (o) : c += o; return c = i ? ("") : c}把上⾯的函数xHtml和丢到node中执⾏,结果出来的就是html的字符串。撒花完结##总结写了个python版本的,丢:def decrypt(n, t): c = "" for i in n: try: o = t[ord(i) - 21760] except: o = "" c = c + o return c

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687982541a63522.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
房型床型宽带⼊住⼈数