写点什么

激情的开头,大意的结局,Python 反爬加更,好友求助米哈游的 API,给他安排上

作者:梦想橡皮擦
  • 2022 年 7 月 15 日
  • 本文字数:1232 字

    阅读完需:约 4 分钟

⛳️ 实战场景

本篇博客属于加更系列,源自 78 技术人社群(点击博客下卡片你也可以加入)



本次的需求是一个站点,地址如下所示,群友提供的地址。


bbs.mihoyo.com/dby/article/21147956
复制代码


打开页面一看,果然~



在按照群友提供的 API 寻找对应的请求逻辑,下述是群友提供的地址。


bbs-api.Python脱敏处理.com/post/wapi/getPostFull?gids=5&post_id=21147956&read=1
复制代码


它的代码截图如下所示。



在请求头中基本参数具备的情况下,依旧得到了 403 状态码,可以猜测请求头中大概率有加密逻辑,这不巧了么,撞上门的案例。

⛳️ 反爬分析

打开开发者工具之后,直接被无限 debugger 阻挡了。



先禁止这行代码的运行,在行号位置选择下图所示按钮。



找到群友提供的接口,查看其请求头,判断校验参数。



请求网址: bbs-api.脱敏处理.com/post/wapi/getPostFull?gids=5&post_id=21147956&read=1请求方法: GET


除了 cookie 外,下图框选的几个参数有很大的嫌疑。



这里看数据的格式,可以盲猜是时间戳和 md5 加密。


使用 PostMan 模拟一下请求,结果直接访问到数据了,尴尬了,难道跟加密参数无关?



编写代码如下所示:


import requests
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", "Origin": 'https://bbs.mihoyo.com/', "User-Agent": "https://bbs.mihoyo.com/"
}r = requests.get('https://bbs-api.mihoyo.com/post/wapi/getPostFull?gids=5&post_id=21147956&read=1', headers=headers, timeout=3)print(r.text)
复制代码


结果返回的依旧是 403 ,禁止访问。


这种情况有可能是我们缺少某些请求头参数,继续补齐即可。


多次尝试之后,发现 Cookie 中有个参数竟然是 acw_tc,每次刷新的时候会发生变化,是不是这个原因导致的我们无法访问数据呢?


使用下述代码一下:


import requests
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", "Origin": 'https://bbs.mihoyo.com/', "User-Agent": "https://bbs.mihoyo.com/", "Host": "bbs-api.mihoyo.com"
}

s = requests.Session()params = { "gids": 5, "post_id": 21147956, "read": 1}with s.get('https://bbs-api.mihoyo.com/post/wapi/getPostFull', params=params, headers=headers) as r: print(r)
复制代码


还是无法请求到数据,从开发者工具中发现 acw_tc 是一个 httponly 形式的 Cookie。



但是该格式的参数,只是为了防止 XSS 跨域攻击的,也就是防止 JS 获取 cookie,原则上从 Python 代码中发起是不会有限制的。


难道还有其它参数加密了,但是 PostMan 是可以正常请求的,此时我陷入了迷茫~


但是当我复盘代码的时候,我发现犯了一个错误 🤡🤡🤡🤡,我竟然没有写 referer。



修改代码之后,数据成功的获取到了。



📣📣📣📣📣📣右下角有个大拇指,点赞的漂亮加倍

发布于: 刚刚阅读数: 4
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
激情的开头,大意的结局,Python反爬加更,好友求助米哈游的API,给他安排上_Python_梦想橡皮擦_InfoQ写作社区