原创 为了破解某网的反爬,差点买了上千元的逆向课

发布时间:2021-06-24 20:45:37 浏览 447 来源:猿笔记 作者:毕小宝

    爬某招标网站发布的招标信息。并根据采购产品关键字发送招标信息给销售和高管,今天才知道浏览器的开发者模式,还有好多我不知道的功能!Sources面板里面有三个JS逆向常用工具,先看看面板内容:标签①下面的三个点对应的面板中,有一个可以添加Script片段的功能,2点击Newsnippet后右侧出现一个编辑界面标签。点击红色序号四右侧的按钮,这比在Console页签上编写JS方便多了,想起以前在Console写代码时没写完一不小心Enter键下去就执行报错了;标签②的Pages,展示整个网络请求的资源文件,可以直接格式化资源文件。


    #背景

    参与了一个爬虫应用,对某个竞价网站发布的竞价信息进行抓取,并根据所购买产品的关键词将竞价信息发送给销售和高管。

    爬虫应用写于2018年。到目前为止,这个网站已经升级了三次,前两次可以顺利解决。但是这一次对方的反爬法太深,超出了我的能力范围。一路百度,终于找到专门介绍爬虫微信官方账号的,里面有一套JS反向教程,价格近2000。看剩下的信用卡金额,静静思考,还是自己先研究一下。

    不得不承认,技术就是钱。先说逆向的基础知识。今天知道了浏览器的开发者模式,还有很多不知道的功能。JavaScript太深奥了!

    #Sources面板

    以Chrome为例,F12打开,在Sources面板中有三个JS反向常用工具。让我们先看看面板内容:

    ##自定义JS片段

    在标签①下面三点对应的面板中,有一个可以添加Script片段的功能:

    单击新闻钳,右侧会出现一个编辑界面标签。输入JS代码片段后,点击红色序号4右侧的按钮,可以直接执行JS。

    这比在控制台选项卡上编写JS要方便得多。这个功能提醒我,在Console写代码之前,不小心用Enter键下去报错了,真是相见恨晚...

    # #代码格式

    很基础的tag 2的Pages,显示整个网络请求的资源文件;

    今天只知道tag ④的符号,可以直接格式化资源文件,点开试试格式化凌乱的jquery:

    ##Filesystem和Overrides

    这两个功能对于JS reverse也很实用,所以还没有测试过。先了解一下这个东西,等有一天完全玩完了再添加这个内容。

    #重写ajax的事件

    对于已经死了的竞价网站来说,这次升级是给ajax请求添加hook事件,并且用额外的防爬参数发送请求。虽然参数的键是固定的,但是值的生成过程相当复杂。目前测试伪造,后台失败,返回‘400 bad request’。

    现学现用,打开目标网站后,添加一个Newsnippet片段,利用`prototype`重写Ajax的两个事件,代码如下:

    (function(){

    varopenoverride=window.XMLHttpRequest.prototype.open;

    window.XMLHttpRequest.prototype.open=function(){

    console.log(arguments);

    returnopenoverride.apply(this,[].slice.call(arguments));

    };

    varsendoverride=window.XMLHttpRequest.prototype.send;

    window.XMLHttpRequest.prototype.send=function(){

    console.log(arguments);

    returnsendoverride.apply(this,[].slice.call(arguments));

    };

    })();

    //随机模拟请求\t

    varxhr=newwindow.XMLHttpRequest();

    xhr.open('POST','/hello',true);

    xhr.send('abc');

    GoToPage(20);//页面本身的功能,点击要破解的数据请求运行:

    控制台输出:

    这两个ajax请求添加了一个额外的参数,键值固定,值未知,这是阻碍爬虫的障碍:

    现在的问题是伪造的参数值也过不去。既然这两个参数是在前端生成的,那么在后台是如何使用的呢?而且每次ajax请求,这两个参数的值都不一样。网上有信息说这是反重播。我模拟的时候根据这两个参数的长度使用随机字符串,但是骗不了背景。

    这是一个很大的障碍!

作者信息

毕小宝 [等级:3] Java 开发
发布了 86 篇专栏 · 获得点赞 116 · 获得阅读 25993

相关推荐 更多