记一次爬虫
先感谢403F的帮助
要爬的是https://soutubot.moe/
然后就遇到了问题
贯穿始终的是401未授权访问,但是请求包里不包含token一类的,cookie也放了,将整个导入到postman里面
发现能够请求成功,然后只有请求头可能出问题,那就是请求头的问题
请求头一个一个去掉直到不能访问,比较重要的一项是x-api-key,网站用了自己自定义的生成的x-api-key,保证安全性,x-api-key看起来是随机生成的base64,然后过期时间特别短,看看,即使你放置了x-api-key在请求头里,也会很快过期
然后
在URL contains 里面过滤包含search请求的
断点卡到search这一步
跳步运行几步
运行完e.apply后这个函数运行结束,所以我们试试在这个函数刚开始的时候设置断点
我们尝试在这个函数最上方设置断点
发现了我们要找的x-api-key,在这里已经被赋值
接下来的
方法一
“从下往上逆着找调用链”,找到谁调用的这个函数
找到callback调用链,主要要找到哪里调用了这个,找到了Oi
往上追,M也被赋值了
右面有明显特征的就是search了,在search里面找个断点
步入,发现进入os
之后会进入这里,发现M即是上文的e,这时候还没有赋值
再步入直接赋上值了,基本锁定了RC是赋值函数
有个看起来很不错的字符串
单步运行到有个看起来很不错的字符串
花絮
V0MxaFVHa3RTMFY1
很酷
然后就是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上
方法二:
“从上到下”,找到调用该函数之前的一个函数,单步调试直到调用该函数
找看起来可能有意义的函数
往下调用到RC,然后和后面一样了
我已没有下降的余地