记一次爬虫

先感谢403F的帮助

要爬的是https://soutubot.moe/

然后就遇到了问题

贯穿始终的是401未授权访问,但是请求包里不包含token一类的,cookie也放了,将整个导入到postman里面
image
发现能够请求成功,然后只有请求头可能出问题,那就是请求头的问题

请求头一个一个去掉直到不能访问,比较重要的一项是x-api-key,网站用了自己自定义的生成的x-api-key,保证安全性,x-api-key看起来是随机生成的base64,然后过期时间特别短,看看,即使你放置了x-api-key在请求头里,也会很快过期

然后
image
在URL contains 里面过滤包含search请求的

断点卡到search这一步
image

跳步运行几步

运行完e.apply后这个函数运行结束,所以我们试试在这个函数刚开始的时候设置断点
image

我们尝试在这个函数最上方设置断点

image

发现了我们要找的x-api-key,在这里已经被赋值

image

接下来的

方法一

“从下往上逆着找调用链”,找到谁调用的这个函数

找到callback调用链,主要要找到哪里调用了这个,找到了Oi

image

往上追,M也被赋值了

image

右面有明显特征的就是search了,在search里面找个断点

image

步入,发现进入os
image

之后会进入这里,发现M即是上文的e,这时候还没有赋值
image

再步入直接赋上值了,基本锁定了RC是赋值函数
image

image

有个看起来很不错的字符串
单步运行到有个看起来很不错的字符串

image

花絮

V0MxaFVHa3RTMFY1
很酷

image

image

然后就是X-api-KEy了
看看怎么实现

    const RC = ()=>{
        Q.tz.setDefault("Asia/Shanghai");
        const e = (Math.pow(Q().unix(), 2) + Math.pow(window.navigator.userAgent.length, 2)).toString();
        return En.encode(e).split("").reverse().join("").replace(/=/g, "")
    }

当前时间平方,+userAgent长度平方求base64,base64取反去掉等号,生成出来的x-api-key

因此爬虫只需要现算然后求值就可以了,

封装了一个api在github上

方法二:

“从上到下”,找到调用该函数之前的一个函数,单步调试直到调用该函数

找看起来可能有意义的函数

image

往下调用到RC,然后和后面一样了

posted @ 2023-05-27 22:39  znsbc  阅读(608)  评论(0编辑  收藏  举报