目标
考点:入门级cookie
任务十三:还是抓取这5页的数字,计算加和并提交结果
https://match.yuanrenxue.com/match/13
分析
首先看请求数据,考点为cookie
,就需要着重关注一下cookie
。
第一个请求就带了可疑cookie
在这里卡住一会儿,一时无从下手。后面使用第三方抓包工具charles
抓包,发现了端倪。
请求了两次目标网站,第一次返回的是一串script
,从代码很明显发现这就是关键所在。单个字符拼接而成。丢控制台运行一下
没错,就是它了,理一下逻辑。如果没有这串cookie
请求链接就会返回script
,生成cookie
,再携带着cookie
神不知鬼不觉跳转到链接。
还原
# ==================================
# --*-- coding: utf-8 --*--
# @Time : 2022/9/22 12:49
# @Author : Gorkys
# @FileName: main.py
# @Software: PyCharm
# @describe: 猿人学第十二题
# ==================================
import requests
import re
# 涉及到cookie一般选择session保持会话
session = requests.session()
session.headers["User-Agent"] = "yuanrenxue.project"
session_id = {"sessionid": "woq4i0ilxxoh74qnx6nj67fdc38mue8m"}
session.cookies.update(session_id)
priceCount = 0
def getCookie():
url = "https://match.yuanrenxue.com/match/13"
res = session.get(url).text
# 匹配出对应数据并拼接成字符串
cookie = "".join(re.compile(r"\('(.)'\)", re.S).findall(res)).split("=")
session.cookies.update({cookie[0]: cookie[1]})
def getPriceList(page):
global priceCount
params = {
'page': str(page),
}
response = session.get('https://match.yuanrenxue.com/api/match/13', params=params)
print(response.text)
data = response.json()["data"]
for i in range(len(data)):
priceCount += data[i]["value"]
getCookie()
for i in range(5):
getPriceList(i + 1)
print(priceCount)
# 213133