猿人学内部练习平台6~10题

第六题:session保持检测

使用session请求即可:session = requests.Session()

第七题:请求规律检测1-post

根据请求接口找规律,在每一页请求前请求一次https://www.python-spider.com/cityjson即可

requests.post('https://www.python-spider.com/cityjson', verify=False)
response = requests.post('https://www.python-spider.com/api/challenge7', headers=headers, cookies=cookies, data=data, verify=False)   

第八题:控制台呼出检测

打开控制台,发现页面跳转到了空白页,于是打下 script 断点:

点击后退,页面js会一个个加载,此时hook题目所需值 window.threshold,控制台输入如下代码:

Object.defineProperty(window, "threshold", {
    set:function (params) {
        debugger;
    }
})

一直下一步,就会断点到参数生成位置:

可以看到,参数值为 160

第九题:更复杂的动态js加密

同第二题的解决思路,删除cookie中的sign后,加入hook代码hook sign:

根据调用堆栈找到对应位置,位于文件 9 中:

查看最后一个参数,是一个函数,返回的是当前时间戳:

将该文件代码保存至本地(不要格式化),修改 function _0x1063a5(_0x36c096),让其返回 1589023846363,然后运行,得到结果:


虽然有报错,但不影响我们已经获取到结果。当然实际调试时,代码可能与本文不同,根据情况修改时间戳的值即可。

第十题:请求规律检测2 - headers

该题有请求头顺序检测,固定即可:

headers = {
    'Content-Length': '6',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Referer': 'https://www.python-spider.com/challenge/10',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6'
}
# 固定请求头顺序
session = requests.Session()
session.headers.clear()
session.headers.update(headers)
posted @ 2024-04-26 21:29  脱下长日的假面  阅读(5)  评论(0编辑  收藏  举报