题目链接:https://match.yuanrenxue.cn/match/13

常规操作,按下F12刷新题目链接,看看请求⬇️

image

可以看见两次请求,先看第一个请求(13这个)⬇️

image

 

image

image

 

 第一个请求特征:

  • 接口api2/13与题目接口是不一样的,
  • 请求方式get
  • 没有请求参数payload
  • 请求响应能看到是cookie
  • 将document.cookie=后面这段js,复制到console执行,可以看到执行的结果,待会与第二个接口cookie对比下

接着继续看第二个请求⬇️

image

image

 

image

image

 第二个请求特征:

  • 也是get请求
  • 请求头有第一个请求返回的cookie
  • 请求参数没有加密的
  • 响应也是正常可见的

入门级的题目都比较简单,代码如⬇️

import json
import time

import execjs
import requests


def get_question_13_result():
    url = "https://match.yuanrenxue.cn/api/question/13"
    c_url = 'https://match.yuanrenxue.cn/api2/13'
    headers = {
        "accept": "application/json, text/javascript, */*; q=0.01",
        # "accept-encoding": "gzip, deflate, br",
        "accept-language": "zh-CN,zh;q=0.9",
        "cookie": "Hm_lvt_f80b2b389f44bbfb3bfe1704817d44e0=1773998064; sessionid=1p34qxd0wn3sc2nlip8vx6izgffrh0m9; m=a37ca75833ca865d11a7451f18043a14|1774000280348; HMACCOUNT=5CCC201FDBE7CB2F; Hm_lpvt_f80b2b389f44bbfb3bfe1704817d44e0=1774248325;",
        "referer": "https://match.yuanrenxue.cn/match/13",
        "sec-ch-ua": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
        "x-requested-with": "XMLHttpRequest"
    }
    sum_data = 0
    s = requests.Session()
    s.headers.clear()
    for page in range(1, 6):
        # execjs自动环境检测
        res = s.get(c_url, headers=headers)
        m = execjs.eval(res.text.replace('document.cookie=', '')[:-1])
        print(m)
        cookies = dict_from_cookiejar(res.cookies)
        headers['cookie'] += m.replace(';path=/', '')
        s.headers.update(headers)
        if page == 5:
            headers['user-agent'] = 'yuanrenxue'
            s.headers.update(headers)
        params = {
            "page": page,
            "pageSize": "10",
            "kw": "",
        }
        try:
            r = s.get(url=url, params=params, verify=False)
            if r.status_code == 200:
                data = r.json()['data']
                sum_data += sum(data)
                print(f"翻第{str(page)}页,累计求和:{sum_data}")
            else:
                print(f'error:{r.status_code}-----{r.text}')
        except Exception as e:
            raise ValueError(e)


if __name__ == '__main__':
    get_question_13_result()

 

posted on 2026-04-29 15:48  落叶虽美只活一世  阅读(41)  评论(0)    收藏  举报
Live2D