Open Joenothing-lst opened 2 years ago
我这里的测试情况是101_3_2.0
相关的解密代码已经不能用了
headers
参数x-zse-93
似乎已经由101_3_2.0
升级为101_3_3.0
这个加密方式应该还是一样的,只是参数变了吧。之前也都有升级
我测试是返回请求有风险,阻止了本次请求
@niuniuJQKKK 你好,我拿到了加密的js文件,但是复制替换项目中的js代码后会报错
execjs._exceptions.ProgramError: TypeError: __g._encrypt is not a function
好像您项目中的这个encrypt.js采取了一些处理,可以麻烦您分享一下吗。 这是zhihu最新的加密js文件
@zhouyuchong 你可以看看加密参数是否正确。目前该项目,在我的环境是能正常采集的
@zhouyuchong page_iterators.py 第一个函数有一个写死的参数。你看看是否是这里的问题
@Joenothing-lst page_iterators.py 第一个函数有一个写死的参数。你看看是否是这里的问题
同样101_3_2.0已经无法使用 3.0版本的加密js文件摘出来也不能用
2.0签名后是44位,3.0签名是68位。分享一下3.0可运行的js: encrypt.js.zip
调用方法:
ctx1.call('D', fmd5)
但是可能还存在其他需要修改的地方,目前只能报错:
{'error': {'message': '请求参数异常,请升级客户端后重试', 'code': 10003}}
@botissue 3.0js代码一致 我是按照2.0改的 没啥问题 同样响应有错误 之前2.0加密能用 就没管 但是那个时候知乎的前端ajax请求就已经用3.0了
对,就是前几天突然不能用了,那时候3.0已经上线了一段时间。现在网页上的API是这种形式:
估计以前的API就是个蜜罐,浪费大家的时间。最好研究现在的API,相关讨论:
@zhouyuchong js没有特殊处理啊。这个爬虫我构建好之后,就丢给组员去维护了。加密如有升级,替换最新的js加密就好了
@niuniuJQKKK @john-Ly 最新的js加密似乎能检测出是否人为操作。同样的加密函数,用js编译器自动执行和手动执行得到的密文,前者会被识别,后者能够通过。我前段时间折腾半天没办法最后写了个自动控制脚本模仿人类点击。因为我确实对js研究不深。仅提供一下我这边遇到的问题和思路。
@zhouyuchong 问题解决了吗?我这个是为了贴合公司业务写的。写的有点糙,还存有不少坑
@niuniuJQKKK 我当时也是帮朋友爬数据,当时用我前面的方法暂时拿到足够的数据就没有继续研究了。:grin:
@zhouyuchong 我这目前还没看到反馈相关问题,也没去管,就这样吧。能使起来就行
最新的js加密似乎能检测出是否人为操作。同样的加密函数,用js编译器自动执行和手动执行得到的密文,前者会被识别,后者能够通过。我前段时间折腾半天没办法最后写了个自动控制脚本模仿人类点击。因为我确实对js研究不深。仅提供一下我这边遇到的问题和思路。
@zhouyuchong 冒昧请问方便分享自动控制脚本的源码吗,现在做这个也遇到同样问题,谢谢🙏
@MakiiYShi 太久了代码找不到了,大概思路就是, windows有个库可以控制鼠标点击事件,用selenium打开后确定点击事件就行了
headers
参数x-zse-93
似乎已经由101_3_2.0
升级为101_3_3.0