这道题还是比较简单的,是考察动态cookie 变化的
思路
观察请求
我们观察到请求里面yuanrenxue_cookie会有变化


我们发现先请求13这个接口获取一段js脚本。然后再请求api/match/13这个接口获取数据
再查看获取数据接口的请求头,发现cookie有个字段yuanrenxue_cookie非常重要。
那么我们推断先请求脚本给cookie赋值。再添加到请求接口
得出结论
发现js脚本果然是对cookie赋值,而且对比请求头里面的值发现其实就是将字母拼接
<script>document.cookie=('y')+('u')+('a')+('n')+('r')+('e')+('n')+('x')+('u')+('e')+('_')+('c')+('o')+('o')+('k')+('i')+('e')+('=')+('1')+('6')+('2')+('9')+('2')+('7')+('7')+('2')+('3')+('2')+('|')+('c')+('F')+('j')+('T')+('g')+('g')+('D')+('Y')+('q')+('r')+('f')+('u')+('G')+('x')+('Q')+('t')+('n')+('o')+('O')+('K')+('5')+('p')+('w')+('d')+('H')+('J')+('z')+('g')+('E')+('h')+('b')+('P')+('r')+('J')+('k')+('X')+('W')+('S')+('6')+('1')+('y')+('7')+('Z')+('q')+('D')+('e')+('E')+('2')+('o')+('M')+('L')+('w')+('r')+('P')+('i')+('L')+('B')+('f')+('z')+('E')+('i')+('Y')+('z')+('z')+('P')+('4')+('A')+('p')+('9')+('J')+('k')+('z')+('G')+('a')+('I')+('d')+('j')+('D')+('P')+('f')+('u')+('b')+('D')+('H')+('4')+('p')+('t')+('Y')+('4')+('O')+('9')+('Q')+('b')+('4')+('j')+('m')+('y')+('F')+('z')+('7')+('S')+('C')+('k')+('h')+('3')+('i')+('8')+('k')+('E')+('y')+('C')+('m')+('i')+('F')+('F')+('4')+('O')+('a')+('w')+('m')+('G')+('n')+('C')+('f')+('S')+('u')+('S')+('b')+('2')+('v')+('n')+('J')+('a')+('c')+('w')+('t')+('c')+('g')+('H')+('k')+('H')+('S')+('m')+('q')+('j')+('M')+('v')+('l')+('h')+('B')+('O')+('V')+('3')+('c')+('l')+('m')+('f')+('3')+('n')+('N')+('c')+('A')+('i')+('Y')+('u')+('a')+('H')+('t')+('6')+('c')+('I')+('t')+('2')+('M')+('U')+('V')+('r')+('R')+('P')+('x')+('D')+('0')+('T')+('8')+('A')+('K')+('d')+('2')+('w')+('C')+('e')+('Q')+('d')+('C')+('3')+('J')+('k')+('D')+('b')+';path=/';location.href=location.pathname+location.search</script>
那么问题就解决了
最后解题
python 代码
import requests
import time
import execjs
import re
session = requests.Session()
# headers = {
# 'authority': 'match.yuanrenxue.com',
# 'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"',
# 'accept': 'application/json, text/javascript, */*; q=0.01',
# 'dnt': '1',
# 'x-requested-with': 'XMLHttpRequest',
# 'sec-ch-ua-mobile': '?0',
# "User-Agent": "yuanrenxue.project",
# 'sec-fetch-site': 'same-origin',
# 'sec-fetch-mode': 'cors',
# 'sec-fetch-dest': 'empty',
# 'referer': 'https://match.yuanrenxue.com/match/13',
# 'accept-language': 'zh-CN,zh;q=0.9',
# }
headers = {"User-Agent": "yuanrenxue.project", }
def get_result():
url = "http://match.yuanrenxue.com/match/13"
r = session.get(url)
print(r.text)
# 每次都是一个全新的js 所以每次得重新请求得到,下面那个固定了。没用,时间戳会变
# sum = 0
# ctx = execjs.compile(open(file).read())
# res = ctx.call('get_cookie')
#
# cookie = res.replace(';path=/','')
# print(cookie)
reg = re.compile("'([a-zA-Z0-9=|_])'")
results = reg.findall(r.text)
cookie = ''.join(results)
print(cookie)
key, value = cookie.split('=')
session.cookies.set(key, value)
sum = 0
for i in range(1, 6):
response = session.get(f'https://match.yuanrenxue.com/api/match/13?page={i}',headers=headers)
print(response.text)
for j in response.json().get('data'):
sum += j["value"]
time.sleep(1)
return sum
res = get_result()
print("结果为: "+str(res))
# 结果为: 213133