接口中有参数 _signature
参数
直接全局搜索这个参数,会在一个 index-*.js
中搜索到, 虽然 captcha.js
中也有,不过没用
在文件中找到该字符串位置,打断点,调试。
继续下一步,调试会跳转到 acrawler.js
文件中.
acrawler.js
文件
下一步直接将 js 文件拿出来, 执行。
1、简化 js
, 删除一些没有用的东西
参数后改为空列表即可
2、node
中 window
为 global
定义
代码语言:txt复制var window = global;
继续执行,缺啥补啥(调试打印 Z[S]
,就可以知道缺啥了 )
<img src="http://img.andrewblog.cn/workqiniu/carbon (1).png-gg" style="zoom:50%;" />
代码语言:txt复制window.location = params.location;
window.navigator = params.navigator;
然后就可以出来短的了
有个问题加了下面的代码就会报错
代码语言:txt复制window.byted_acrawler && window.byted_acrawler.init({
aid: 24,
dfp: !0
});
注释掉就可以,不知道啥原因。
长的 _signature
需要加 cookie
,把 cookie
放进去就 ok 了。放在主要加密函数的后面,放在前面没用。不生效
结果:
测试一下
请求 api/pc/feed
接口时,需要在前面加上 toutiao
进行加密。
cookie 中的 ac_nonce ac_signature
直接请求详情,不携带 cookie
, 会响应 cookie __ac_nonce
通过 __ac_nonce
生成 __ac_signature
直接调用上面的方法即可
代码语言:txt复制function f2(__ac_nonce){
ac_signature = window.byted_acrawler.sign("", __ac_nonce);
return ac_signature
}