• JS逆向|突破某网站的移动端限制,让PC浏览器也能愉快访问


    关注它,不迷路。       

    本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!

    1. 需求

    最近美食群发了很多二维码,提取链接后,可以在移动端的浏览器上愉快的播放,然而,当我把 url  链接复制到 我电脑上的 浏览器再访问时,出现了这个:

    e9a4f3ea1dfea68f4d3d18e5989f77a4.png

    2. 分析

    访问不了,没关系,抓包,发现请求了一个js:

    45c7e4d966c2acb2792e199f56b2af88.png

    js内容是这样的:

    1. function randomString(length, chars) {
    2. var result = '';
    3. for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
    4. return result;
    5. }
    6. function myEeplace(s) {
    7. return s.replace(/\{(\w+?)\}/g, function (a, b) {
    8. var h = '';
    9. for (var i = 0; i < b.length; i++) {
    10. if ('n' == b[i]) {
    11. h += Math.floor(Math.random() * 10);
    12. } else if ('w' == b[i]) {
    13. h += String.fromCharCode(97 + Math.floor(Math.random() * 26));
    14. }
    15. }
    16. return h;
    17. });
    18. }
    19. if (/(MicroMessenger)/i.test(navigator.userAgent)) {
    20. var rString = randomString(3307, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
    21. var urls = [
    22. 'http://****',
    23. ];
    24. location.href = myEeplace(urls[Math.floor(Math.random() * urls.length)]) + "&" + window.location.search.replace("?", "");
    25. } else {
    26. var rString = randomString(3107, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
    27. var urls = [
    28. 'http://***',
    29. ];
    30. location.href = myEeplace(urls[Math.floor(Math.random() * urls.length)]) + "&" + window.location.search.replace("?", "");
    31. }
    32. if ((/^(Win|Mac)/i.test(navigator.platform) || !/mobile|Android|phone|iPhone|iPod|ios|iPad/i.test(navigator.userAgent)) && (!localStorage.isCheney || parseInt(conf.mobile))) {
    33. location = 'a27aa89cef2cd192b8f3c9b0b97e670d.png';
    34. }

    看到这么多  location = ,  瞬间明白为啥访问不了了,因此,将最后一个if语句删除,替换后再访问:

    f3ec9d7935a4894ae074af2d54d5db91.png

    还是报错,但是看抓包,有新的请求:

    09e903e27a5c47c1f38cf8fc52bf45ff.png

    浏览器上看不到响应,可以使用 Reqable 来抓包:

    333705ec27713d3164dd03cbe8bfff24.png

    点击如图所示的下载按钮,将网页下载下来,发现有一段js代码:

    ff5bfe6d6595f188526a6cef6da6f8ec.png

    把代码复制下来,还原后,核心代码就这么点:

    1. function aaa1() {
    2. if ((/^(Win|Mac)/i['test'](navigator["platform"]) || !/mobile|Android|phone|iPhone|iPod|ios|iPad/i["test"](navigator["userAgent"])) && (!localStorage['isCheney'] || parseInt(conf["mobile"]))) {
    3. location = 'a27aa89cef2cd192b8f3c9b0b97e670d.png';
    4. }
    5. }
    6. aaa1();

    又是一个检测移动端环境,然后跳转赋值,使用 Reqable  将 aaa1(); 给替换掉:

    c3860616b6a1fcfe911d7eed6e7fa4ac.png

    再次请求后,不报错了,页面正常了,nice!

    今天的文章就分享到这里,后续分享更多的技巧,敬请期待。

    ba42c8ce4a970eccf8438009a072ada7.jpeg

    欢迎加入知识星球,学习更多AST和爬虫技巧。

  • 相关阅读:
    浅谈在操控器类中,为何要通过osgGA::CameraManipulator的逆矩阵改变视点位置
    DNSLog原理及代码实现
    图神经网络(1):图卷积神经网络GCN ICLR 2017
    应变与几何方程——弹性力学
    Flutter的Timer类
    对doccano自动标注使用的默认UIE模型进行微调以提高特定领域的实体识别能力,提高标注速度
    Docker安全及日志管理
    智慧医疗时代的数据标注如何更精准?
    有关于 this 的基础练习题
    【Kali安全渗透测试实践教程】第9章 无线网络渗透
  • 原文地址:https://blog.csdn.net/qq523176585/article/details/133109967