【简单】 猿人学web第一届 第3题 罗生门

请求逻辑分析

数据接口为https://match.yuanrenxue.cn/api/match/3?page=1

这一题的 请求参数 与 cookie 都没有加密参数

每次请求数据接口前都会请求 jssm 接口

requests 照着请求逻辑去请求,发现是失败的(数据接口返回包含 js标签 代码)

代码编写

这道题其实检测了请求头的顺序

打开 Fiddler 抓包,查看对应的请求头顺序
jssm 接口的请求头顺序

数据接口的请求头顺序
照着 Fiddler 请求头顺序去构造请求头,构造好之后请求还是一样的不通过
因为 Python 的字典是无序的,要想字典按照构造的顺序去请求,需要使用到 requests.session() 对象

python 复制代码
import requests

session = requests.session()

session 对象 cookie 设置

python 复制代码
session.cookies.set("sessionid", "你的sessionid值")

session 对象的 Headers 设置

python 复制代码
session.headers = {
	// 你构造的 headers 字典
}

session 对象发起请求

python 复制代码
// 请求携带的参数与 requests 对象一样
session.post(...)
session.get(...)

python 代码

python 复制代码
import requests

session = requests.session()
session.cookies.set("sessionid", "你的sessionid值")


def send_jsm():
    session.headers = {
        'Connection': 'keep-alive',
        'Content-Length': '0',
        'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
        'sec-ch-ua-mobile': '?0',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
        'sec-ch-ua-platform': '"Windows"',
        'Accept': '*/*',
        'Origin': 'https://match.yuanrenxue.cn',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Dest': 'empty',
        'Referer': 'https://match.yuanrenxue.cn/match/3',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    url = "https://match.yuanrenxue.cn/jssm"
    response = session.post(url)
    print(response)


def send_match3(page):
    session.headers = {
        'Connection': 'keep-alive',
        'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'X-Requested-With': 'XMLHttpRequest',
        'sec-ch-ua-mobile': '?0',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
        'sec-ch-ua-platform': '"Windows"',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Dest': 'empty',
        'Referer': 'https://match.yuanrenxue.cn/match/3',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    url = "https://match.yuanrenxue.cn/api/match/3"
    params = {
        "page": f'{page}'
    }
    response = session.get(url, params=params)
    print(response.text)


if __name__ == '__main__':
    for page in range(1, 6):
        send_jsm()
        send_match3(page)
相关推荐
喵手15 分钟前
Python爬虫实战:小红书热门笔记爬虫实战 - 搜索关键词驱动的内容采集指南!
爬虫·python·爬虫实战·零基础python爬虫教学·小红书热门笔记·搜索关键词·采集小红书热门笔记数据
nita张39 分钟前
战略定位实战:案例分享与经验总结
大数据·人工智能·python
MadPrinter1 小时前
Python 异步爬虫实战:FindQC 商品数据爬取系统完整教程
爬虫·python·算法·自动化
清水白石0081 小时前
Python 函数式编程实战:从零构建函数组合系统
开发语言·python
一只大侠的侠1 小时前
React Native for OpenHarmony:DatePicker 日期选择器组件详解
javascript·react native·react.js
JosieBook1 小时前
【Vue】15 Vue技术——Vue计算属性简写:提升代码简洁性的高效实践
前端·javascript·vue.js
喵手2 小时前
Python爬虫实战:数据质量治理实战 - 构建企业级规则引擎与异常检测系统!
爬虫·python·爬虫实战·异常检测·零基础python爬虫教学·数据质量治理·企业级规则引擎
x-cmd2 小时前
[x-cmd] Node.js 的关键一步:原生运行 TypeScript 正式进入 Stable
javascript·typescript·node.js·x-cmd
头发够用的程序员2 小时前
Python 魔法方法 vs C++ 运算符重载全方位深度对比
开发语言·c++·python
加成BUFF2 小时前
基于DeepSeek+Python开发软件并打包为exe(VSCode+Anaconda Prompt实操)
vscode·python·prompt·conda·anaconda