某哪儿Bella补环境

声明

声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872              
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!2766958292

前言

我的web逆向也算是进行最后阶段了,最近在再强补环境和学习ast,面对复杂混淆虽然我可以弄,但是控制台一个个弄太慢了。本来打算学习下一个阶段就推迟。作为遵纪守法的中国公民我有必要提醒大家千万不要恶意爬取网站数据,在学习期间也不可大批量发送网络请求占用公共资源给网站造成负面影响严禁在代码转给给其他人。篇幅较长开始发车。

我分析的接口是aHR0cHM6Ly9ob3RlbC5xdW5hci5jb20vbmFwaS9saXN0

1.逆向过程

1.1如何扣代码

入口是window.Bella(a),我们进去之后是一个文件名为qlogj.js?t=474196的文件t好像是每小时刷新一个所以我建议用fiddler或者charles本地映射让文件规定。

1.2.补环境

他检验的环境还挺多的大家把代理加上一个个补,代理看我瑞数那篇文章这里就不上了。我把几个比较难大致补法发出来给大家看看。

document.createTextNode=function createTextNode(val){
}
document.getElementsByTagName=function getElementsByTagName(tagName){
    console.log('document.getElementByTagName',arguments)
    if(tagName==='script'){
        return [
          {src:''}, {src:''}, {src:''}
    }
}
window.XMLHttpRequest=function XMLHttpRequest(){
    console.log('window.XMLHttpRequest',arguments)
    return {
        open:function open(){},
        send:function send(){}
    }
}
document.createElement = function createElement(tagName) {
    if(tagName==='canvas'){
        return {
            
    }
    else if(tagName==='span'){
        return {
           
        }
    }
    else if(tagName==='div'){
        count=1
        return {
            appendChild:function appendChild(t){
              //这里需要操作      
            }
        }
    }
    else if(tagName==='audio'){
        return {
          canPlayType:function canPlayType(val){
              if(val==='audio/x-m4a;'){
                  return '是一个值'
              }else {
                      return '是一个值'
              }
        }
        }
    }
    else if(tagName==='video'){
        return {
            canPlayType:function canPlayType(val){
                return '是一个值'
            }
        }
    }
}

1.3.取巧补环境:

我最后补了接近450行代码,挺麻烦的后来我发现了他会把环境的值都放在一个对象中。搜索_0x3e56c6 = _0x3e56c6[_0x5a69('0x15e')](_0x181328);   如图1.1 看到没是一个数组里面全部都是环境值像我一样把浏览器最终的值扣下来写死在我们本地。如图1.2。就这样我们可以随便补补像这样window.setInterval=function(){}不用再给他写什么值了因为他取得值最后会放到_0x3e56c6中我们已经提前放好了一部分。不过我没有试过行不行我建议最好的方法是因为他是一个数组你把浏览器最后的值和node本地补的做对比。有什么不一样的像图1.3这样补。浏览器是true,而你本地是false你就这样把他改成true。

图1.1 某哪儿Bella补环境_第1张图片 图1.2 某哪儿Bella补环境_第2张图片 图1.3

 1.4.注意事项

如果你认为这样就可以那就错了,你需要把catch删除他给我们设了一个坑让我return错误值我们把他删了把最后报错的环境补上就结束了。最后记得delete process。不过delete process会导致很多错误,我用了很多方法才解决,有一个更简单的方法可以解决我们直接搜索process因为浏览器没有这一个所以只需让他为undified就可以解决了。

某哪儿Bella补环境_第3张图片 图1.4

1.5.结果 

某哪儿Bella补环境_第4张图片 图1.5

1.6.警示

根据robots.txt 有Date都不可以爬大家学完完后就不要在请求网站了,毕竟现在过年都在旅游网站服务器压力也大就不要给网站造成不必要的损失。

1.7.总结

1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。

2.本人写作水平有限,如有讲解不到位或者讲解错误的地方,还请各位大佬在评论区多多指教,共同进步。

如果侵犯到你的权益联系我,我会马上删除wx a15018601872   

2766958292

你可能感兴趣的:(javascript,前端,开发语言,爬虫,python,算法,web安全)