抖音__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,刷新后断到点

在这里插入图片描述

往回调试一步。

file
可以看到__ac_signature怎么来的。

file

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

file


补环境

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

file

会报错:

file

补referer, DOM属性document.referrer
file


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

继续运行报错:

file

到对应位置断点,看看S是什么,这里发现S是各种对象,那问题不在S,缺了其他环境。

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


最后报错:undefined (reading 'init')

file

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

file


再次执行,成功生成。

目前比较短,长的把cookie加进去就行了。
file

经测试,长短不影响请求。



代码部分

下载地址:

【温馨提示:此处隐藏内容需要付费订阅后才能查看!】

点赞
  1. lober说道:
    Google Chrome Windows 7
    李老师,请问一下,现在抖音网页版个人信息页面的省份籍贯、年龄信息这类的都可以通过你分享的方法抓取,再php输出吗?比如https://www.douyin.com/user/MS4wLjABAAAA8Ag2TMrWvfZWpLywypFRGhoL2_A8FdXawWfuh29bJWCJ_BCr23KY0S9O76eC4_oC
    1. Lx Lx说道:
      Google Chrome Windows 10
      差不多,没籍贯,只有IP所在地,年龄有。

发表回复