2021-10-25头条_signature

前段时间一直忙于工作,这篇文章再说一下关于头条_signature的问题

加密方式和为止没有变化,可以看看之前的文章:

https://blog.csdn.net/qq_43454410/article/details/119323201

下面看下本地实现

1.直接复制解密js到本地执行看报错
在这里插入图片描述
在这里插入图片描述
是开头着了的错,大概意思是有window用window,没有就用global,
注:global只有在node环境才有,我本地的js调试工具是v8环境
那我们自己给window赋值:‘window = this’ 只是v8的写法。

继续
在这里插入图片描述
在这里插入图片描述
遇到这种问题可以在网站头条的js加密代码相同的地方插桩调试,看看 S[R] = S[R][A] 是什么东西
还有一种办法是打开网站 https://developer.mozilla.org/zh-CN/search 搜索 referrer 看看是什么
其实就是document对象下的属性,我们在浏览器中看看
在这里插入图片描述
然后我们在本地js代码中写document对象

document = {
    
    
    referrer : 'https://www.toutiao.com/'
}

在加载一下看看
在这里插入图片描述
发现成功!

接下来看看如何生成_signature
其实就是 window.byted_acrawler.sign({url: ‘https://www.toutiao.com/toutiao/api/pc/info’})
在这里插入图片描述
继续本地实现
在这里插入图片描述
herf是什么我就不用多说了吧,直接
在这里插入图片描述
同上添加到本地,然后继续
在这里插入图片描述
可以发现上面的错误都是发生在290多行这里,由此可见这里就是环境检测的地方了
那我们就在web上看看它是啥
在这里插入图片描述
可以看到很多的浏览器环境对象,window,document,navigator, location
补环境基本就是围绕这几个对象,
没错这就是大佬口中的缺啥补啥,简简单单四个字,要是细入就很复杂了,牵扯到原型链
这里简单补一些就可以出值了
在这里插入图片描述
补的环境

window = this;
document = {
    
    
    referrer : 'https://www.toutiao.com/'
};
location = {
    
    
    href : 'https://www.toutiao.com/?wid=1635125685888',
    protocol: 'https:',
};
navigator = {
    
    
    userAgent:'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36',
};

那么接下来就是很多人说的为什么这么短的原因
在之前获取浏览器环境中发现,在出_signature之前,获取过一次cookie
所以我们要加上cookie才可以(到目标站点获取)
在这里插入图片描述
注意cookie添加的位置,如果你放的最上面,中间的js有可能会删除或者改变cookie的值

总结::

整体下来是很简单的,还有就是,如果你本地成功生成了_signature,但是代入请求还是获取不到想要的数据
那就是你的环境被检测了,那就只能仔细的去找缺失的环境,再补

猜你喜欢

转载自blog.csdn.net/qq_43454410/article/details/120946279