难点
头部顺序反爬
、某些框架内部会对头部处理造成获取不到 Cookie
Tip:文末可以下载例子
猿人学该题官网:http://match.yuanrenxue.com/match/3
确定逆向目标
请求加密一般在 参数 头部(Cookie,token,还有其他的自定义的), 这里就只有 Cookie 了
开始逆向
既然第二个请求,带有 Cookie ,那么就需要确定该 Cookie 是生成,还是服务器返回,这里还有第一个请求,所以大概率是服务器返回
分析请求
第一个请求状态码是
202(表示服务器端已经收到请求消息,但是尚未进行处理)
,还有Set-Cookie
,那就可以确定是服务器返回的了
获取不到 Cookie 的原因
这里获取不到 Cookie ,有两个原因
一、反爬(对请求头部的顺序有要求,最好是使用原始顺序)
二、requests 框架的原因(框架会对 设置的头部进行优化修改)
获取 Cookie
规避了上面两个问题后,就可以获取到 Cookie
请求数据
import requests def app(page: int) -> dict: session = requests.Session() session.headers = { 'Host': 'match.yuanrenxue.com', 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36', 'DNT': '1', 'Accept': '*/*', 'Origin': 'http://match.yuanrenxue.com', 'Referer': 'http://match.yuanrenxue.com/match/3', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', } session.post(url="http://match.yuanrenxue.com/jssm", ) print(session.cookies) s = session.get(url="http://match.yuanrenxue.com/api/match/3", headers={ "User-Agent": "yuanrenxue.project", }, params={"page": page} ) return s.json() if __name__ == '__main__': for _ in range(1,6): print(app(_))
结果正确
Tip:直接访问数据接口,会返回一段 Js 其实这段代码一点用都没有。
版权声明:《 【猿人学】第三题 罗生门 逆向分析 》为明妃原创文章,转载请注明出处!
最后编辑:2021-6-17 09:06:21