0
点赞
收藏
分享

微信扫一扫

抖音__ac_signature

主页中有一个IP的信息,但是请求需要__ac_nonce和__ac_signature。

__ac_nonce是初次请求后服务端返回的,本文分析一下__ac_signature怎么来的。

用chrome 插件去定位 cookie的位置

var code = function(){
var org = document.cookie.__lookupSetter__('cookie');
document.__defineSetter__("cookie",function(cookie){
if(cookie.indexOf('__ac_signature')>-1){
debugger;
}
org = cookie;
});
document.__defineGetter__("cookie",function(){return org;});
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);

清空cookie,刷新后断到点

抖音__ac_signature_运行报错

往回调试一步。
抖音__ac_signature_chrome_02

可以看到__ac_signature怎么来的。
抖音__ac_signature_开发语言_03

进来后,先断个点。这样后续把插件关掉后,再清空cookie刷新页面可以直接进来。
抖音__ac_signature_javascript_04

补环境

把该文件的所有代码复制到本地运行。
抖音__ac_signature_javascript_05

会报错:
抖音__ac_signature_运行报错_06

补referer, DOM属性document.referrer
抖音__ac_signature_chrome_07

再运行,报错ReferenceError: window is not defined ,补一个window 。

继续运行报错:
抖音__ac_signature_开发语言_08
到对应位置断点,看看S是什么,这里发现S是各种对象,那问题不在S,缺了其他环境。

往下看,最后的参数里面有很多属性,要补的和浏览器一样,补上后就没有该错误了。
抖音__ac_signature_chrome_09

最后报错:undefined (reading ‘init’)

抖音__ac_signature_chrome_10

说明window中没有byted_acrawler,追代码找到k方法中,最后是放在this中,那把这里的this改成window

抖音__ac_signature_运行报错_11

再次执行,成功生成。

目前比较短,长的把cookie加进去就行了。
抖音__ac_signature_前端_12
经测试,长短不影响请求。

过几天再把代码贴上= =


举报

相关推荐

0 条评论